Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Inter Base


Автор: <Spawn> 6.8.2003, 14:57
В проге таблицы размещены на TPageControl. При добавлении\изменении данных одним пользователем другой не видит этих изменения, до тех пор пока не сделает переподключение к серверу. В чем дело? В OnChange событии PageControl-а прописаны изменения запросов. Наподобии этого:
Код
case PageControlData.ActivePageIndex of
0:
begin
 ActiveDBGrid:=nil;
 ActiveImage:=ImageCover;
 ActiveImageAuto:=Image8;
 IsActive:=DM.IBDataSet1.Active;
 UnActiveDataSet;
 ActiveDeleteSQL:='Delete From Doc';
 ActiveZeroGenerator:='SET GENERATOR DOC_ID TO 0';

with DM.IBDataSet1 do
begin
  SelectSQL.Clear;
  SelectSQL.Add(SQLDocSelect);
  RefreshSQL.Clear;
  RefreshSQL.Add(SQLDocRefresh);
  ModifySQL.Clear;
  ModifySQL.Add(SQLDocModify);
  InsertSQL.Clear;
  InsertSQL.Add(SQLDocInsert);
  DeleteSQL.Clear;
  DeleteSQL.Add(SQLDocDelete)
end;

with DM.ibdsNewRecID.SelectSQL do
begin
 Clear;
 Add(SQLDocIncID);
end;

TrySetActive(IsActive,0)

end;
1:
2:
3:
4:
......
Старые данные нормально отображаются, а вот с новыми проблемка. В чем может быть дело? Заранее спасибо.

Автор: Bazil 6.8.2003, 16:55
Дело в том, что при изменении записи (любым компонентом из закладки IB) стартует транзакция, которую необходимо закончить. Это либо транзакция назначеннная по умолчанию в компоненте IBDatabase, либо отдельно назначенная компоненту транзакция. При этом в окне свойств транзакции должно стоять Read Committed. Закончить транзакцию можно так:
IBTransaction.Commit; - закончить транзакцию
IBTransaction.CommitRetaining; - закончить транзакцию и начать новую
Скорее всего дело в этом.

Автор: <Spawn> 6.8.2003, 22:23
Я так и подумал)) Только вот пока проверить не могу.

Автор: pigas 30.8.2003, 12:35
у ib_dataset после поста можно расписать событие подтверждения транзакции и переоткрытия запроса....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)