Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c