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;
...
Re: Delphi+IBX, проблема с insert
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 05.11.10 12:36
Оценка:
Здравствуйте, _Antares_, Вы писали:

_A_>Есть DLL, в которой реализованы функции работы с базой, в частности вставка строк.

_A_>Использую компоненты IBDatabase, IBTransaction, IBQuery.
_A_>Проблема: при неуспешной вставке строки в базу (например, violation of PRIMARY or UNIQUE KEY constraint или исключение, сгенерированное триггером) зависает программа, вызвавшая функцию из DLL, причем зависает уже после выполнения функции, на выгрузке библиотеки (FreeLibrary). При успешной вставке строки в базу проблемы нет.

Т.е. ты в ДЛЛ передаешь класс? Тут и не такое может вылезти.
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[2]: Delphi+IBX, проблема с insert
От: _Antares_  
Дата: 05.11.10 13:00
Оценка:
Здравствуйте, DarkMaster, Вы писали:

DM>Здравствуйте, _Antares_, Вы писали:


_A_>>Есть DLL, в которой реализованы функции работы с базой, в частности вставка строк.

_A_>>Использую компоненты IBDatabase, IBTransaction, IBQuery.
_A_>>Проблема: при неуспешной вставке строки в базу (например, violation of PRIMARY or UNIQUE KEY constraint или исключение, сгенерированное триггером) зависает программа, вызвавшая функцию из DLL, причем зависает уже после выполнения функции, на выгрузке библиотеки (FreeLibrary). При успешной вставке строки в базу проблемы нет.

DM>Т.е. ты в ДЛЛ передаешь класс? Тут и не такое может вылезти.


Где в моем сообщении написано, что "в ДЛЛ передаем класс"???
Re[2]: Delphi+IBX, проблема с insert
От: _Antares_  
Дата: 05.11.10 13:11
Оценка:
Здравствуйте, DarkMaster, Вы писали:

DM>Здравствуйте, _Antares_, Вы писали:


_A_>>Есть DLL, в которой реализованы функции работы с базой, в частности вставка строк.

_A_>>Использую компоненты IBDatabase, IBTransaction, IBQuery.
_A_>>Проблема: при неуспешной вставке строки в базу (например, violation of PRIMARY or UNIQUE KEY constraint или исключение, сгенерированное триггером) зависает программа, вызвавшая функцию из DLL, причем зависает уже после выполнения функции, на выгрузке библиотеки (FreeLibrary). При успешной вставке строки в базу проблемы нет.

DM>Т.е. ты в ДЛЛ передаешь класс? Тут и не такое может вылезти.


Видимо стоит уточнить, обе приведенные функции находятся в DLL. В приложении вызывается вторая из них.
Re[3]: Delphi+IBX, проблема с insert
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 05.11.10 16:11
Оценка:
Здравствуйте, _Antares_, Вы писали:

_A_>Видимо стоит уточнить, обе приведенные функции находятся в DLL. В приложении вызывается вторая из них.


Ага... Тогда смотри здесь
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[4]: Delphi+IBX, проблема с insert
От: _Antares_  
Дата: 08.11.10 08:30
Оценка:
Здравствуйте, DarkMaster, Вы писали:

DM>Здравствуйте, _Antares_, Вы писали:


_A_>>Видимо стоит уточнить, обе приведенные функции находятся в DLL. В приложении вызывается вторая из них.


DM>Ага... Тогда смотри здесь


Спасибо, решение предложенное по ссылке помогло.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.