|
|
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
есть дельфи 6 интербейс 6 опен имеем форму на которой dbgrid, ibdatabase, ibtransaction, ibtable (при ibquery результат тот же), datasource запускаю две копии программы, в одной (в dbgrid) ввожу изменения, делаю IBTransaction.CommitRetaining; во второй делаю IbTable.Refresh изменения не вижу подскажите плиз, не знаю куда кинуться, открывать и закрывать ibdatabase не теоретически не приемлем (но возможно), может есть варианты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2003, 16:23 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
Попробуй закрыть/открыть второй table. У меня похожая проблема: в одной программе есть два окна, которые кроме всего прочего обращаются к одной и той же таблице. Так вот, при простом refresh изменения почему-то не проявляются, а если сделать по очереди в обоих окнах Commit, то все очень хорошо видно. Странно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2003, 19:26 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
можно подробнее, т.е. для двух окон у тебя 2 ibtransaction и по очереди ты делаешь commit? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2003, 19:43 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
да вот прикол получается, допустим если тока одна прога работатет я сделал изменения и сохранил (ни чего не закрывал не открывал) и запускаю вторую прогу, то она видит эти изменения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2003, 05:45 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
Было похожее на другом наборе компонент. Проблема была в Isolation level у транзакции. При RepeatableRead не виделись изменения, сделанные в других транзакциях. При Read Commited всё ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2003, 06:50 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
Да надо сделать ReadCommited и почаще во второй проге execut-ить Commit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2003, 07:23 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
Насчет ReadCommited всё верно. Кроме того надо помнить, что метод Refresh в айбишных компонентах обновляет лишь текущую строку, а не весь датасет. Хотя, если у тебя Table, то это может быть и не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2003, 08:23 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
arni "Кроме того надо помнить, что метод Refresh в айбишных компонентах обновляет лишь текущую строку, а не весь датасет." Не совсем верно. Метод Refresh может работать в соответствии с любым скриптом, который можно прописать в UpdateSQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2003, 10:53 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
была такая проблема, но после того как всем IBQuery дал по своей IBTransaction в состоянии Active=True, все заработало. можешь ещё и это добавить тоже помогает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2003, 16:11 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
На самом деле решение следующее: для IBQuery 1. Страртуем транзакцию 2. Делаем Insert, Update, Delete и т.д. 3. Пункт 2 должен быть с try..except. И если все ОК, то делаем Commit, иначе RollBack. 4. В самом конце переоткрываем IBQuery. 5. (вместо пункта 4...) Если есть желание работать с 2 клиентами и более, то организуем триггеры на каждую модификацию таблицы (Insert, Update, Delete) и затем в IBEvents в обработчике получения зарегистрированного события делаем Close - Open у IBQuery. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2003, 09:28 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
нашел!!!!!!!! Database не трогаем! в ibtransaction в параметрах указать read_committed rec_version nowait после этого тока тэйблы открываем закрываем и query и все обновляется теперь надо будет к ibevent привязку сделать как сделать чтоб вызывающая изменения прога не раегировала на события, то есть чтоб сама не делала открытие и закрытие тэйблов и query-ей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2003, 19:33 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
Для интереса, какие параметры там у тебя стояли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2003, 08:16 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
да я долго искал какие нада!, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2003, 16:34 |
|
||
|
видимость обновленых данных после транзакции (delphi)
|
|||
|---|---|---|---|
|
#18+
помоему проще всего делать так: какая либо таблица изменилась, на сервере сработал триггер, послал всем сообщение (event), твоя программа поймала сообщение (event) и сгенерировала сообщение для всех форм (ну или контроллов) приложения (например wm_user+X) а каждая форма приложения будет отлавливать сообщения (wm_user+x) если у нее есть контролы, которые должны отреагировать... например пользователь нажал на кнопку... ibtableTEST.edit; ibtableTEST.fields.asstring:='TEST'; ibtableTEST.post; ibtableTEST.transaction.commit; на сервере сработал триггер (на after_update) event "TEST_AFTER_UPDATE" твоя программа поймала этот event и послала всем формам сообщение wm_test_updated некая форма x поймала сообщение wm_test_updated и выполнила код ibqueryTEST.transaction.commit; ibqueryTEST.active:=false; ibqueryTEST.active:=true; тоже самое сделала фомрма y,z и другие (если им надо на это реагировать)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2003, 14:07 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=504&tid=1579941]: |
0ms |
get settings: |
16ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 364ms |

| 0 / 0 |
