Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
Всем, здравствуйте! Подскажите есть ли возможность обновлять DBGrid в Delphi только тогда, когда в Oracle в таблице произошли изменения (Update, insert, delete). Можно сделать таймером, но это крайний вариант, не хотелось бы постоянно отправлять запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2021, 08:22 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
Gambit_d.s, таймер это обычный вариант. Можно использовать TOracleEvent (если DOA) и dbms_alert сигналы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2021, 08:32 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
cptngrb, Спасибо попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2021, 08:39 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
Gambit_d.s Подскажите есть ли возможность обновлять DBGrid в Delphi только тогда, когда в Oracle в таблице произошли изменения Есть. Но по мере того, как опыт работы становится отличным от нуля, становится понятно и то, что этого не следует делать. cptngrb Gambit_d.s, таймер это обычный вариант. Стоило бы уточнять, обычный у кого. А то кто-нибудь с перепугу решит, что у нормальных людей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2021, 18:29 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
softwarer, Ну ты бы хоть альтернативы предложи, а то народ сейчас такого напридумывает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2021, 18:37 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
2 варианта 1) Пользователь сам решает когда надо обновить данные 2) То что обновляет таблицу - шлет ивент, клиент подписан на ивент и обновляет только то что изменилось (досасывает insert, обновляет update, удаляет delete, нагрузка только на соответствующие записи). при этом если в event положить payload то обращение к БД не нужно. Если без обращения к БД, то надо обработать идемпотентность ивента и предварительного ручного обновления, если таковое имеется. Т.е. прилетает инсерт, а данные уже целиком обновили, тогда его надо проигнорировать, потому что он уже подтянулся.. Аналогично с Update, но если на клиенте на Update есть другое событие, тогда надо поле-токен (датавремя/timestamp/rowversion) которое сравнится с payload в update и будет принято решение, надо или нет обновление. Delete аналогично с insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2021, 20:52 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
X-Cite, Все равно ты нубом будешь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 00:54 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
DarkMaster Ну ты бы хоть альтернативы предложи, а то народ сейчас такого напридумывает... Народ в любом случае навыдумывает. В принципе, наиболее адекватный для Оракла механизм - change notification-ы , но головы он не отменяет. Нужно адекватно строить и архитектуру приложения в целом, и решение для каждой конкретной бизнес-задачи (для которых в 99.9% случаев такой функционал не только не нужен, но и прямо вреден). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 01:45 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
Gambit_d.s Всем, здравствуйте! Подскажите есть ли возможность обновлять DBGrid в Delphi только тогда, когда в Oracle в таблице произошли изменения (Update, insert, delete). Можно сделать таймером, но это крайний вариант, не хотелось бы постоянно отправлять запрос. Вот тут резонно задать вопросы. А что этот DBGrid у вас показывает? И нафига он вам вообще нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 03:08 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
northener, В общем идея такая: Есть база на Oracle, есть монитор который отображает состояние документа (Товар выписан, Наборка, Наборка завершена) написано на Delphi, и есть Терминал Сбора Данных (ТСД) на нем С#. С помощью ТСД отрабатывается документ, он цепляется к Oracle и меняет данные, а на мониторе эти изменения должны отображаться. Вот такая задачка :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 07:32 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
cptngrb, а можно кой-то пример как работать с TOracleEvent и dbms_alert сигнал, или ссылку на литературу по теме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 07:38 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
Gambit_d.s, а ещё "терминал" мог бы 1) дополнительно обновлять специальную статусную табличку, например при каждом чихе из секвенции брать значение и записывать его в единственную строку этой таблицы в поле "версия данных". По идее, это даже можно в триггерe организовать. Тогда SQL-запрос от "монитора" будет очень прост и лёгок: "какая текущая версия данных?" Если отличается от той, которая была при обновлении грида, то значит пора снова его обновить. 2) либо напрямую сообщать "монитору" что есть измемения. К примеру, через сокет или простенький HTTP запрос к встроенному в "монитор" легковесному HTTP-серверу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 11:10 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
Кроик Семён Gambit_d.s, а ещё "терминал" мог бы 1) дополнительно обновлять специальную статусную табличку, например при каждом чихе из секвенции брать значение и записывать его в единственную строку этой таблицы в поле "версия данных". По идее, это даже можно в триггерe организовать. Тогда SQL-запрос от "монитора" будет очень прост и лёгок: "какая текущая версия данных?" Если отличается от той, которая была при обновлении грида, то значит пора снова его обновить. 2) либо напрямую сообщать "монитору" что есть измемения. К примеру, через сокет или простенький HTTP запрос к встроенному в "монитор" легковесному HTTP-серверу. Как вариант построить рассылку таких уведомлений на вебсокетах. А если совсем по взрослому то использовать что-то из систем очередей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 11:44 |
|
||
|
Обновить DBGrid при изменении таблицы в Oracle
|
|||
|---|---|---|---|
|
#18+
энди Как вариант построить рассылку таких уведомлений на вебсокетах. А если совсем по взрослому то использовать что-то из систем очередей :) Вебсокеты и взрослые очереди будут сообщать обо всех изменениях, или только о сделанных в подтвержденных тоанзакциях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 12:12 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2037180]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 284ms |
| total: | 476ms |

| 0 / 0 |
