![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с Commit в IB [D7, IB6.x, Firebird 1.0.2.908]
Orpheus © (2003-06-19 08:12:00)Здравствуйте, Мастера!
Делаю TIBTransaction.StartTransaction
Затем TIBSQL.ExecQuery (несколько INSERT-ов)
Затем TIBTransaction.Commit
(**)
Затем TIBQuery.ExecQuery (SELECT те самые INSERT-ed записи)
Записи не отображаются...
Делаю вместо (**) TIBDatabase.Disconnect; TIBDatabase.Connect;
тогда все работает.
Понимаю, что дело в кэше. Но как их отключить (а лучше не отключить, а сбросить в базу!!!) не знаю... Помогите, пожалуйста.
Zacho (2003-06-19 09:03:00) [1]И обязательнопочитай статьи на www.ibase.ru, особенно http://www.ibase.ru/devinfo/ibtrans.htm
Orpheus (2003-06-19 08:56:00) [2]Спасибо, помогло!
Alexandr (2003-06-19 08:23:00) [3]тебе эе сказали выставь ReadCommited вместо repaetableRead
а ты хвастаешься знанием VbScript
Orpheus (2003-06-19 08:22:00) [4]Там так и есть на самом деле (не пугайтесь - это реализация Automation server - логика работы программы прописана на VBScript):
procedure THTable.ExecSQL(const aSQL: WideString); safecall;
begin
Set_Active(false); // т.е. IBQuery.Active:= false;
Set_SQL(aSQL); // т.е. IBQuery.SQL.Text:= aSQL;
Set_Active(true); // т.е. IBQuery.Active:= true;
end;
Zacho (2003-06-19 08:17:00) [5]
> Orpheus © (19.06.03 08:12)
Дело не в каком-то там кэше, а в уровне изоляции транзакций. Поставь ReadCommitted. И почитай статьи на http://www.ibase.ru/develop.htm
Наталия (2003-06-19 08:16:00) [6]При "SELECT те самые INSERT-ed записи"
нужно делать TIBQuery.Open, а не TIBQuery.ExecQuery