Форум: "Базы";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.013 c