![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CommitRetaining отправляет в базу не все обновления [D6, IB6.x]
Def © (2003-09-02 11:46:00)
Всем привет!
Вот такая ситуация: отрабатывают 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;
Def (2003-09-02 13:39:00) [1]
Все, разобрался!
Большое спасибо! Я в UpdateSQL глупости всякие написал, поэтому криво работало.
Нормально все заработало.
Zacho (2003-09-02 13:00:00) [2]
> Def (02.09.03 12:56) [4]
А UpdateSQL какой ? А ApplyUpdates и Commit делается ?
Def (2003-09-02 12:56:00) [3]
Хотя фигня получается. При помощи процедур заполняю таблицу - эта информация попадает в базу, а потом хочу пройтись в гриде по результатам этого заполнения, вношу изменения и эти из менения не попадают в базу, попадает только то, что было занесено процедурами.
Zacho (2003-09-02 12:55:00) [4]
> Def (02.09.03 12:50) [2]
Явно баг в CachedUpdates в IBX. Лучше с CachedUpdates вообще не связываться.
Def (2003-09-02 12:50:00) [5]
1. Запись точно та, проверял. Да и потом, все эти изменения видны в гриде. Ситуация такая, что перед тем как закрыть форму, я вижу все изменения в гриде, все правильно.
Ну можно сказать, что нашел в чем причина, только от этого не легче.
Просто напросто убрал POST в первой процедуре и EDIT во второй.
Скорее всего при открытии формы надо делать EDIT, а перед закрытием POST
Zacho (2003-09-02 12:28:00) [6]
1. А во время работы процедуры 2 текущая запись точно та, которую вставила процедура 1 ?
2. А без CachedUpdates можно обойтись ? В IBX постоянно вылазят разные баги в CachedUpdates.