Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему Commit не отсылает данные на сервер? [D5, IB6.x]


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо