![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему Commit не отсылает данные на сервер? [D5, IB6.x]
Hawk2 © (2004-03-31 10:55:00)Помогите разобраться с проблемой!
Значит работаю с InterBase6, клиента творю в Delphi5+SP1+UpdateIBX5.04, при вставке записи в таблицу, эта запись появляется в Гриде, но ее не видно на сервере и соответственно другой клиент или другая транзакция в этой же программе не видят этой добавленой записи. Все изменения добавляются только после того как я закрою свою программу, тоесть когда IBDataBase.Connected:=false;
Использую IBDataSet, CachedUpdate=false, вставку делаю так:
try
DM.IBTransaction7.StartTransaction;
DM.Oborot.Insert;
...
DM.Oborot.FieldByName('PROVREC_ID').AsInteger:=Prov_ID;
DM.Oborot.FieldByName('RAMOUNT').AsFloat:=cedtAmount1.Value;
...
DM.Oborot.Post;
DM.IBTransaction7.Commit;
except
DM.IBTransaction7.Rollback;
raise;
end;
Соловьев (2004-03-31 11:45:00) [21]2 Hawk2 © (31.03.04 11:36) [15]
Не надо ничего закрывать.
Кщд (2004-03-31 11:42:00) [22]Hawk2 © (31.03.04 11:32) [14]
>IBTransaction6 - стартует при простом открытии таблицы, и ничего не меняет, чего там подтверждать? :)
это разводка?
Hawk2 (2004-03-31 11:36:00) [23]Соловьев © (31.03.04 11:30) [10]
Шестая транзакция ничего не пишет!!! Как я понял из Ваших слов вставку нужно делать при закрытой таблице и использовать одну и ту же транзакцию что на открытие, что на вставку, что на обновление?
Hawk2 (2004-03-31 11:32:00) [24]Кщд (31.03.04 11:26) [7]
IBTransaction6 - стартует при простом открытии таблицы, и ничего не меняет, чего там подтверждать? :)
myor © (31.03.04 11:27) [8]
>а ты не хочешь попробовать использовать хп?
Еще не пробовал, но должно ж оно по идее работать и так, без ХП?
Кщд (2004-03-31 11:32:00) [25]myor © (31.03.04 11:27) [8]
хп на простую вставку записей?
Draught (2004-03-31 11:31:00) [26]собственно пока я читал и обдумывал уже все ответили...
Соловьев (2004-03-31 11:30:00) [27]Забудь про Transaction7. или после Transaction6.Commit делай по новой открытие НД, или делай IBTransaction6.CommitRetaining или переходи на FIBPlus - там можно для одного НД указать две транзакции - одну читающую, одну пишушую.
Draught (2004-03-31 11:30:00) [28]Hawk2, она не явно стартует, но не факт, что она так же неявно коммитится...
Кщд (2004-03-31 11:29:00) [29]точнее - неясно, что вы коммитите 7, если Ваш Oborot работает в контексте 6?
myor (2004-03-31 11:27:00) [30]читай [1] и разбирайся.
а ты не хочешь попробовать использовать хп?
Кщд (2004-03-31 11:26:00) [31]Hawk2 © (31.03.04 11:24) [6]
почему считаете, что IBTransaction7 видит изменения незакомиченной IBTransaction6?
Hawk2 (2004-03-31 11:24:00) [32]Соловьев © (31.03.04 11:20) [5]
>DM.Oborot.Transaction - ?
В этом свойстве прописана другая транзакция IBTransaction6, она не явно стартует при открытии таблицы DM.Oborot.Open; А потом при открытой таблице я явно стартую IBTransaction7 и делаю вставку, что нужно закрывать таблицу перед вставкой?
Соловьев (2004-03-31 11:20:00) [33]DM.Oborot.Transaction - ?
Hawk2 (2004-03-31 11:18:00) [34]Draught © (31.03.04 11:13) [3]
Извените, может синим цветом плохо видно, в вопросе приведен код вставки:
try
DM.IBTransaction7.StartTransaction;
DM.Oborot.Insert;
...
DM.Oborot.FieldByName('PROVREC_ID').AsInteger:=Prov_ID;
DM.Oborot.FieldByName('RAMOUNT').AsFloat:=cedtAmount1.Value;
...
DM.Oborot.Post;
DM.IBTransaction7.Commit;
except
DM.IBTransaction7.Rollback;
raise;
end;
Draught (2004-03-31 11:13:00) [35]поидее в конце каждой транзакции должен быть либо коммит либо роллбэк. До тех пор пока не сделан коммит или роллбэк никто кроме самого создателя транзакции не видит этих изменений. А во время выхода у тебя автоматом проходит коммит.
пишешь:
старт транзак
запросы
соммит или роллбэк
Hawk2 (2004-03-31 11:12:00) [36]Да точно, думаю о чём я забыл еще написать - об изоляции!
Вобщем что я только туда не писал, сейчас стоит:
nowait
read_committed
rec_version
Соловьев (2004-03-31 11:05:00) [37]Какой уровень изоляции транзакции? Дабл клик по IBTransaction