Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.07;
Скачать: CL | DM;

Вниз

IB   Найти похожие ветки 

 
Bura ©   (2002-01-10 00:44) [0]

Господа, доброй ночи... У меня такой проблем. Данные отображаются в одной IBTable и в одной DefaulTransaction, подключенной к IBDataBase как DefaultTransaction, а изменяются в другой Trans. Как только я делаю Commit, в IBExpress все сразу видно, а в тех IBTable, которые отображают данные - нет. Никакой Refresh и Open/Close не помогают. Только после перезагрузки программы видно. Я понимаю, что все дело в разных транзакциях... Как правильно сделать, чтобы все было красиво? Можно, конечно все в одной транзакции, но вот не нравится мне, что DataSet закрывается... И хотелось бы, чтобы для изменения были одни данные, а для отображения - другие. Данные изменяются не пользователем, а программой, в одном пакете в 10 таблицах.
Спасибо за советы


 
kaif ©   (2002-01-10 01:09) [1]

Чтобы после Commit в одной транзакции Close/Open запроса в другой отобразил новые данные, нужно, чтобы другая транзакция имела изоляцию ReadCommitted. Для этого щелкни на компоненте IBTransaction дважды мышью и выбери нужный режим.
Чтобы Dataset не закрывался вместо Commit используй CommitRetaining. Тогда можно все в одной транзакции сделать.
Хотя в отдельной транзакции делать Update, возможно, имеет свои преимущества.


 
Bura ©   (2002-01-10 01:25) [2]

Спасибо, теперь понял от чего отталкиваться... :-)


 
Bura ©   (2002-01-10 01:43) [3]

>kaif
А как избежать Close/Open у DataSet... У меня таблицы долго открывается (ок. 25000 записей с большими символьными полями).
Когда я делал 3-х звенку на Paradox, все выполнялось гораздо быстрее с методом Refresh у TClientDataSet. Но, решил, что 3-х звенка - геморрой. Теперь, если каждый раз после обновления делать Close/Open, то некрасиво получается...


 
dymka ©   (2002-01-10 09:23) [4]

Это... если используешь клиент-серверную технологию - то попробуй отказаться от таких больших курсоров. Выводи порциями... Представь, что тебе придется эксплуатировать программу на узком сетевом канале. А рефреш у айби рефрешит только текущую запись. А чтобы обновить все, нужно переоткрыть набор, ведь тебе нужно перечитать данные с сервера, а какие данные изменились сервер не знает и только новая транзакция увидит их (Старая будет видеть свои версии данных, возможно уже не актуальные).



Страницы: 1 вся ветка

Текущий архив: 2002.02.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
14-18988
borisich
2001-12-16 18:36
2002.02.07
Собрался принтер покупать (струйный)


14-18950
Станислав
2001-11-29 10:42
2002.02.07
Днепропетровск


1-18888
Vaddya
2002-01-23 12:03
2002.02.07
Создание ярлыка


3-18707
amamed_3071
2002-01-09 16:53
2002.02.07
Error loading Midas.dll (Win98)


7-19001
Дмитрий Демиденков
2001-10-30 15:46
2002.02.07
Сделать панель такую же, как панель задач в Винде.