Вниз
Скачать: CL | DM;

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

← →
IBChaynik   (2004-12-16 14:03) [0]

Здравствуйте, мастера. Две программы изменяют таблицу IB, как мне сделать чтобы одна программа нажимая кнопку refresh увидела изменения другой программы?


← →
DenK_vrtz ©   (2004-12-16 14:07) [1]

DataSet.close;
DataSet.open;


← →
msguns ©   (2004-12-16 14:17) [2]

>DenK_vrtz ©   (16.12.04 14:07) [1]

Этого недостаточно.


← →
DenK_vrtz ©   (2004-12-16 14:24) [3]

>Этого недостаточно

Сергей, а чего дальше не продолжить?
Ты всегда популярно объясняешь :)


← →
IBChaynik   (2004-12-16 14:28) [4]

это не работает. Можно
DataBase.Connected:=false;
DataBase.Connected:=true;
но это уж слишком


← →
stud ©   (2004-12-16 14:31) [5]

для этого первая программа должна подтрведить сделанные изменения, а вторая перечитать данные


← →
Zacho ©   (2004-12-16 14:36) [6]

IBChaynik   (16.12.04 14:28) [4]

Читать http://www.ibase.ru/devinfo/ibtrans.htm до полного просветления


← →
msguns ©   (2004-12-16 14:53) [7]

>DenK_vrtz ©   (16.12.04 14:24) [3]
Для IB недостаточно. И для любых других СУБД, использующих транзакции.
В транзакциях есть такая штука, как уровень изоляции. Вот от этого уровня (в том числе) и зависит "видимость" в НД изменений, выполненных другими запросами к серверу (как со своего компа, так и с других). Хотя переоткрывать НД все равно придется.

А вообще-то Игорь правильно в урл послал. Там достаточно хорошо об этом писано. Не вижу смысла повторяться.


← →
DenK_vrtz ©   (2004-12-16 14:59) [8]

>msguns ©   (16.12.04 14:53) [7]
>Не вижу смысла повторяться

лишь бы автор вопроса это усвоил :)


← →
IBChaynik   (2004-12-16 15:11) [9]

спасибо большое за урл, я обязятельно прочитаю. А простого кода нет для этого? Первая программа потверждает, второя перечитает, все равно не видно


← →
Anatoly Podgoretsky ©   (2004-12-16 15:11) [10]

А пока транзакция не закончена, нет смысла говорить об данных.


← →
Zacho ©   (2004-12-16 15:36) [11]

IBChaynik   (16.12.04 15:11) [9]

Здесь не очень любят лентяев. Вот если ты прочитаешь статью и что-то в ней не поймёшь - спрашивай, ответим.


← →
msguns ©   (2004-12-16 15:49) [12]

>IBChaynik   (16.12.04 15:11) [9]
>А простого кода нет для этого? Первая программа потверждает, второя перечитает, все равно не видно

Простого кода для чего ? Показывающих принцип взаимодействия транзакций ? В коде этого чаще всего и нет, т.к. это прописывается в параметрах соответсвующих компонент доступа.
Если юзаешь TIBTransaction и ничего не указывешь в параметрах
(св-во Params пустое), то дефаултно ставится SNAPSHOT, что как раз и говорит о "слепке". Т.е. пока эту транзакцию (а не НД) не завершишь и не стартанешь заново, никаких изменений не увидишь. Даже сделанных в этом же приложении и даже в контексте этой же транзакции !
Такая опция используется как раз для того, чтобы не видеть, что там кем-то меняется.

Если тебе надо, чтобы изменения, подтвержденные другими запросами (в этом или другом приложении) были видны в текущем датасете и при этом не хочешь перезапускать транзакцию (например, если в рамках этой же транзакции пооткрывал кучу других датасетов и нежедательно их автозакрытие), то используй в редакторе Params соотв.транзакции опцию read_commited или, если пишущая, concurrency



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
10-1082046038
white dove
2004-04-15 20:20
2005.01.23
подключение клиента на Delphi к AutoCAD


14-1103271191
by
2004-12-17 11:13
2005.01.23
Кто будет следующим президентом России?


1-1105281196
Skiner_Y
2005-01-09 17:33
2005.01.23
TImage наведение


4-1101956312
Maep
2004-12-02 05:58
2005.01.23
Хранение файлов в ресурсах, как? (C++ Builder)


14-1104776808
Anonimus
2005-01-03 21:26
2005.01.23
Программа




   Наверх