Конференция "Начинающим" » AV при использовании IBUpdateSQLW [D7, FireBird 1.5]
 
  • Илья К. (07.09.10 11:14) [0]
    Народ, второй раз сталкиваюсь с AV при использовании IBUpdateSQLW.  После добавления очередного (не важно какого по счету) IBUpdateSQLW и привязки его к IBDataSet запускаю проект, всё работает как задумано, закрываю задачу и тут выскакивает AV. Убираю последний добавленный IBUpdateSQLW, запускаю проект, закрываю -  AV исчез. Снова добавляю IBUpdateSQLW, настраиваю (при чём табличка и СКЛ выражения элементарные), снова появляется AV.

    Подскажите, кто сталкивался, как лечить?
  • Amoeba_ (07.09.10 11:46) [1]

    > как лечить?

    Для начала выпрямить собственные руки.
  • Илья К. (07.09.10 11:50) [2]
    Amoeba_ , очень информативно. И в чем же, по Вашему "глубокоуважаемому" мнению, кривость рук?
  • Amoeba_ (07.09.10 12:22) [3]
    Это был просто тонкий намек на толстое обстоятельство: в вопросе напрочь отсутствует конкретная информация. Отсюда и стандартный ответ тоже без конкретики.
  • Илья К. (07.09.10 12:44) [4]
    конкретная информация - Есть табличка:
    CREATE TABLE PROD_CATS (
       PROD_CAT_ID     INTEGER NOT NULL,
       PROD_CAT_NAME   VARCHAR(64) NOT NULL,
       PROD_CAT_ORDER  INTEGER
    );
    ALTER TABLE PROD_CATS ADD CONSTRAINT PK_PROD_CATS PRIMARY KEY (PROD_CAT_ID);

    В проект добавляем IBDataSet, транзакция на чтение. (далеко не первый ДатаСет). Пишу туда селект - select * from PROD_CATS

    К нему привязываю IBUpdateSQLW, транзакция на изменение (он тоже далеко не первый в проекте). Настраиваю: кл.поле - PROD_CAT_ID, изменяемое поле -  PROD_CAT_NAME. Добавляю только инструкцию на изменение -
    update PROD_CATS
    set
     PROD_CAT_NAME = :PROD_CAT_NAME
    where
     PROD_CAT_ID = :OLD_PROD_CAT_ID

    Запускаю проект, ничё не нажимаю, ничё не выполняю, просто закрываю - возникает ошибка "AV".
    Удаляю IBUpdateSQLW.
    Запускаю проект, закрываю - ошибка не возникает.

    Какой ещё конкретики?
  • Amoeba_ (07.09.10 13:17) [5]

    > ничё не нажимаю, ничё не выполняю, просто закрываю - возникает
    > ошибка "AV".

    Тогда может просто где-то в коде напортачено?
  • Palladin © (07.09.10 13:25) [6]
    а потом выяснится что юный падаван где-то впихнул непотребность на онклосе формы...

    а в первый раз-то чем все закончилось?
  • Amoeba_ (07.09.10 13:34) [7]
    Полагаю, что автору вопроса стоит ознакомиться с этой статьей:
    http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1392
  • Илья К. (07.09.10 14:55) [8]
    Народ, извините что отвлек ваше внимание, я собсно и не надеялся что вы чёнибудь ответите.

     Разъясняю для интересующихся. Из нескольких крупных и не очень проектов, эта ошибка, на ровном месте появилась в 2х. Понять/отловить её не могу, вот и поинтересовался, может у кого случалось такое.

    [6]
     Простите сэр рыцарь, мне падавану сиволапому никогда не постичь сего благородного колдунства.

    ПОВТОРЯЮ ДЛЯ "ОДАРЁННЫХ" ДЖЕДАЕВ: добавил компонент - возникает AV. Убираю компонент - AV исчезает.

    Короче тема закрыта.
  • Илья К. (07.09.10 16:17) [9]
    Народ, ещё минутку вашего внимания. Отдельное спасибо Amoeba_ , статья натолкнула на мысли.

    Вобщем ощибка была тут:
    destructor TIBUpdateSQL.Destroy;
    var
     UpdateKind: TUpdateKind;
    begin
    ошибка тут>>  if Assigned(FDataSet) and (FDataSet.UpdateObject = Self) then
       FDataSet.UpdateObject := nil;
     for UpdateKind := Low(TUpdateKind) to High(TUpdateKind) do
       FSQLText[UpdateKind].Free;
     inherited Destroy;
    end;

    и то не ошибка, а глюк какой то, при уничтожении самого первого, по времени написания, IBUpdateSQLW параметр FDataSet был в унакцессабле.  

    Решил так: удалил самый первый по времени написания IBUpdateSQLW, за тем добавил вновь, ошибка исчезла.
 
Конференция "Начинающим" » AV при использовании IBUpdateSQLW [D7, FireBird 1.5]
Есть новые Нет новых   [134433   +24][b:0][p:0]