Delphi+IBX, проблема с insert
От: _Antares_  
Дата: 05.11.10 11:12
Оценка:
Есть DLL, в которой реализованы функции работы с базой, в частности вставка строк.
Использую компоненты IBDatabase, IBTransaction, IBQuery.
Проблема: при неуспешной вставке строки в базу (например, violation of PRIMARY or UNIQUE KEY constraint или исключение, сгенерированное триггером) зависает программа, вызвавшая функцию из DLL, причем зависает уже после выполнения функции, на выгрузке библиотеки (FreeLibrary). При успешной вставке строки в базу проблемы нет.

Вот функция вставки записи
function InsertSQL(ASQL: TIBQuery): integer;
begin
  try
     ASQL.ExecSQL;
     Result:= 0;
  except
    on E: Exception do
    begin
      AddProtocol(E.Message);
      Result:= -1;
    end;
  end;
end;


Функция вставки в DLL:
...
dsNew.SQL.Text:= 'insert...';
while ... do
begin
  //SetParams
  dsNew.Prepare;
  if InsertSQL(dsNew) = 0 then
    AddProtocol('OK');
enf;
...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.