-
Народ, второй раз сталкиваюсь с AV при использовании IBUpdateSQLW. После добавления очередного (не важно какого по счету) IBUpdateSQLW и привязки его к IBDataSet запускаю проект, всё работает как задумано, закрываю задачу и тут выскакивает AV. Убираю последний добавленный IBUpdateSQLW, запускаю проект, закрываю - AV исчез. Снова добавляю IBUpdateSQLW, настраиваю (при чём табличка и СКЛ выражения элементарные), снова появляется AV.
Подскажите, кто сталкивался, как лечить?
-
> как лечить?
Для начала выпрямить собственные руки.
-
Amoeba_ , очень информативно. И в чем же, по Вашему "глубокоуважаемому" мнению, кривость рук?
-
Это был просто тонкий намек на толстое обстоятельство: в вопросе напрочь отсутствует конкретная информация. Отсюда и стандартный ответ тоже без конкретики.
-
конкретная информация - Есть табличка: 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. Запускаю проект, закрываю - ошибка не возникает.
Какой ещё конкретики?
-
> ничё не нажимаю, ничё не выполняю, просто закрываю - возникает > ошибка "AV".
Тогда может просто где-то в коде напортачено?
-
а потом выяснится что юный падаван где-то впихнул непотребность на онклосе формы...
а в первый раз-то чем все закончилось?
-
-
Народ, извините что отвлек ваше внимание, я собсно и не надеялся что вы чёнибудь ответите.
Разъясняю для интересующихся. Из нескольких крупных и не очень проектов, эта ошибка, на ровном месте появилась в 2х. Понять/отловить её не могу, вот и поинтересовался, может у кого случалось такое.
[6] Простите сэр рыцарь, мне падавану сиволапому никогда не постичь сего благородного колдунства.
ПОВТОРЯЮ ДЛЯ "ОДАРЁННЫХ" ДЖЕДАЕВ: добавил компонент - возникает AV. Убираю компонент - AV исчезает.
Короче тема закрыта.
-
Народ, ещё минутку вашего внимания. Отдельное спасибо 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, за тем добавил вновь, ошибка исчезла.
|