Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

CommitRetaining отправляет в базу не все обновления   Найти похожие ветки 

 
Def   (2003-09-02 11:46) [0]

Всем привет!
Вот такая ситуация: отрабатывают 2 процедуры, в первой добавляется новая запись и заполняются 2 поля, вторая процедура заполняет еще одно поле в новой записи. Процедуры вызываются одна за другой. После этих действий на закрытие формы навешен commit.
После закрытия формы , смотрю что находится в базе и обнаруживаю, что там только результат работы первой процедуры. Может кто сталкивался с такой ситуацией, подскажите пожалуйста где мой прокол.

Процедура 1
Procedure TZakazForm.Set_NewTovar( Value : Integer );
Begin
TDataModule1(Owner).ZakazDS.DataSet.Append;
TDataModule1(Owner).ZakazDS.DataSet.FieldByName("ID_SPRZ").AsInteger :=
TDataModule1(Owner).SprZakazDS.DataSet.FieldValues["ID"];
TDataModule1(Owner).ZakazDS.DataSet.FieldByName("nom_tovar").AsInteger := Value;
TDataModule1(Owner).ZakazDS.DataSet.Post;
End;

Процедура 2
Procedure TZakazForm.Set_NewTovKol( Value : Integer );
Begin
TDataModule1(Owner).ZakazDS.DataSet.Edit;
TDataModule1(Owner).ZakazDS.DataSet.FieldByName("kolvo").AsInteger := Value;
TDataModule1(Owner).ZakazDS.DataSet.Post;
End;

Процедура 3 (Закрытие формы)
procedure TZakazForm.OkButtonClick(Sender: TObject);
begin
SummaZak := SummaZak1;
TDataModule1(Owner).ZakazDS.DataSet.Refresh;
TDataModule1(Owner).IBDatabase1.ApplyUpdates([TDataModule1(Owner).Zaka zDS.DataSet,TDataModule1(Owner).SPRZakazDS.DataSet]);
TDataModule1(Owner).IBTransaction1.CommitRetaining;
Self.Close;
end;


 
Zacho ©   (2003-09-02 12:28) [1]

1. А во время работы процедуры 2 текущая запись точно та, которую вставила процедура 1 ?
2. А без CachedUpdates можно обойтись ? В IBX постоянно вылазят разные баги в CachedUpdates.


 
Def   (2003-09-02 12:50) [2]

1. Запись точно та, проверял. Да и потом, все эти изменения видны в гриде. Ситуация такая, что перед тем как закрыть форму, я вижу все изменения в гриде, все правильно.

Ну можно сказать, что нашел в чем причина, только от этого не легче.
Просто напросто убрал POST в первой процедуре и EDIT во второй.
Скорее всего при открытии формы надо делать EDIT, а перед закрытием POST


 
Zacho ©   (2003-09-02 12:55) [3]


> Def (02.09.03 12:50) [2]

Явно баг в CachedUpdates в IBX. Лучше с CachedUpdates вообще не связываться.


 
Def   (2003-09-02 12:56) [4]

Хотя фигня получается. При помощи процедур заполняю таблицу - эта информация попадает в базу, а потом хочу пройтись в гриде по результатам этого заполнения, вношу изменения и эти из менения не попадают в базу, попадает только то, что было занесено процедурами.


 
Zacho ©   (2003-09-02 13:00) [5]


> Def (02.09.03 12:56) [4]

А UpdateSQL какой ? А ApplyUpdates и Commit делается ?


 
Def   (2003-09-02 13:39) [6]

Все, разобрался!
Большое спасибо! Я в UpdateSQL глупости всякие написал, поэтому криво работало.
Нормально все заработало.



Страницы: 1 вся ветка

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
14-71880
Hawk2
2003-09-03 16:04
2003.09.22
Что там внутри?


1-71597
Cherny Ivan
2003-09-04 21:55
2003.09.22
BP7: Window(X,Y,W,H)


1-71592
voronkov
2003-09-09 12:22
2003.09.22
Проблема с передачей бинарных данных в DLL


1-71619
qwerty2
2003-09-09 13:49
2003.09.22
Delphi и Excel


14-71946
Dmitriy O.
2003-09-02 16:28
2003.09.22
Как можно получить палитру 256 цветов Виндовс