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

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

два TIBTransaction ! [D5, IB или FB]


Страницы:   1 2

GanibalLector ©   (2004-07-01 12:53:00) 

Решил разобраться как работать с двумя компонентами TIBTransaction(одна на запись,вторая на чтение).Раньше,все в одной делал и после Commit все открывал заново. Итак имею следующее:
WR_IB.params=write,consistency,read_committed,rec_version,nowait
RD_IB.params=read,consistency,read_committed,rec_version,nowait
IBDataBase1.DefaultTransaction=RD_IB.
Дальше,вставляю что-либо в таблицу через IBQuery1 и связанный с ним IBUpdateSQL(кстати IBQuery1.Transaction=WR_IB) например так:
Ibquery1.Insert;
Ibquery1.FieldByName('mod').value:=17;
Ibquery1.FieldByName('model').value:='Talla2k';
Ibquery1.FieldByName('ser').value:='88';
Ibquery1.Post;
if WR_IB.InTransaction=false then
WR_IB.StartTransaction;
WR_IB.Commit;

все чудесно вставилось,НО !!!
По моему IMHO вставленная запись должна была моментально появиться в IBQuery2,который связан с RD_IB ,а ее нет.
В чем я не прав?


Соловьев   (2004-07-01 13:17:00) [21]


> По моему IMHO вставленная запись должна была моментально
> появиться в IBQuery2,который связан с RD_IB ,а ее нет

с какой это стати?

Переоткрой эту квери и увидишь


GanibalLector   (2004-07-01 13:16:00) [22]

2 Sergey_Masloff
>Может быть завтра вечером если время будет попробую простой пример состряпать
Был бы ОЧЕНЬ признателен!


Sergey_Masloff   (2004-07-01 13:14:00) [23]

GanibalLector ©   (01.07.04 13:11) [4]
С примером не помогу - у меня там комплексный класс с тучей заточенного под конкретную идеологию кода да и проект коммерческий нельзя такое публиковать. Я только автор но не владелец кода. Может быть завтра вечером если время будет попробую простой пример состряпать. Ели еще не разберешься к тому времени


GanibalLector   (2004-07-01 13:11:00) [24]

2 Sergey_Masloff
Может примерчик подарите???
mailto:Talla2k@ukr.net


Sergey_Masloff   (2004-07-01 13:11:00) [25]

1) С UpdateSQL не получится.
(есть патч сторонний для IBX если хочешь ищи на ibase.ru я его не использовал никогда)

2) Можно делать так: (подробно не напишу потому что у меня это закрыто своим классом который публиковать не могу)
- к IBQuery цепляется UpdateSQL c "пустыми" но валидными SQL (например select null from rdb$database)
- обновление осуществляется отдельным IBSQL работающим в своей транзакции
- при подтверждении кэшированных изменений заполняшь IBSQL значениями параметров выполняешь и коммитишь (пишущую транзакцию). У меня все изменения выполняются черех XP но это может быть и простой запрос - у меня есть специфика.

>И что-же там не правильного???
То что если Query у тебя открыт то транзакция УЖЕ стартована. Но даже если вдруг она бы оказалась не стартованой (что ты видимо предполагал) то ты ей делаешь старт и сразу коммит (а чего она коммитить тебе будет? Не подскажешь?)
;-)


GanibalLector   (2004-07-01 13:00:00) [26]

2 Sergey_Masloff
>Во всем  от начала до конца.
Ну а подробности???
>особенно меня умилило вот это
И что-же там не правильного???


Sergey_Masloff   (2004-07-01 12:56:00) [27]

В чем я не прав?
Во всем  от начала до конца. Это делается не так.
особенно меня умилило вот это:

WR_IB.StartTransaction;
WR_IB.Commit;


Страницы:   1 2

Наверх

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