Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
11-71567
Ahmad K
2003-01-15 01:24
2003.09.22
Ну никак не получается...


14-71823
iNew
2003-09-02 05:10
2003.09.22
Как в SoftIce поставить брэкпоинт на открытие файла?


14-71951
lobster
2003-09-04 00:53
2003.09.22
заголовки функций из dll


1-71589
Dragoon
2003-09-09 23:11
2003.09.22
Как записывать в файл строки не по порядку?


1-71656
TroianOFF
2003-09-08 15:48
2003.09.22
Плавное появление формы




   Наверх