powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обновить DBGrid при изменении таблицы в Oracle
14 сообщений из 14, страница 1 из 1
Обновить DBGrid при изменении таблицы в Oracle
    #40083955
Gambit_d.s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем, здравствуйте!

Подскажите есть ли возможность обновлять DBGrid в Delphi только тогда,
когда в Oracle в таблице произошли изменения (Update, insert, delete).

Можно сделать таймером, но это крайний вариант, не хотелось бы постоянно отправлять запрос.
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40083959
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gambit_d.s, таймер это обычный вариант. Можно использовать TOracleEvent (если DOA) и dbms_alert сигналы
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40083961
Gambit_d.s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cptngrb,

Спасибо попробую
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084213
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gambit_d.s
Подскажите есть ли возможность обновлять DBGrid в Delphi только тогда, когда в Oracle в таблице произошли изменения

Есть. Но по мере того, как опыт работы становится отличным от нуля, становится понятно и то, что этого не следует делать.

cptngrb
Gambit_d.s, таймер это обычный вариант.

Стоило бы уточнять, обычный у кого. А то кто-нибудь с перепугу решит, что у нормальных людей.
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084215
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Ну ты бы хоть альтернативы предложи, а то народ сейчас такого напридумывает...
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084256
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 варианта
1) Пользователь сам решает когда надо обновить данные
2) То что обновляет таблицу - шлет ивент, клиент подписан на ивент и обновляет только то что изменилось (досасывает insert, обновляет update, удаляет delete, нагрузка только на соответствующие записи). при этом если в event положить payload то обращение к БД не нужно. Если без обращения к БД, то надо обработать идемпотентность ивента и предварительного ручного обновления, если таковое имеется. Т.е. прилетает инсерт, а данные уже целиком обновили, тогда его надо проигнорировать, потому что он уже подтянулся.. Аналогично с Update, но если на клиенте на Update есть другое событие, тогда надо поле-токен (датавремя/timestamp/rowversion) которое сравнится с payload в update и будет принято решение, надо или нет обновление. Delete аналогично с insert.
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084284
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,

Все равно ты нубом будешь :)
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084287
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster
Ну ты бы хоть альтернативы предложи, а то народ сейчас такого напридумывает...

Народ в любом случае навыдумывает. В принципе, наиболее адекватный для Оракла механизм - change notification-ы , но головы он не отменяет. Нужно адекватно строить и архитектуру приложения в целом, и решение для каждой конкретной бизнес-задачи (для которых в 99.9% случаев такой функционал не только не нужен, но и прямо вреден).
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084288
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gambit_d.s
Всем, здравствуйте!

Подскажите есть ли возможность обновлять DBGrid в Delphi только тогда,
когда в Oracle в таблице произошли изменения (Update, insert, delete).

Можно сделать таймером, но это крайний вариант, не хотелось бы постоянно отправлять запрос.

Вот тут резонно задать вопросы. А что этот DBGrid у вас показывает? И нафига он вам вообще нужен?
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084293
Gambit_d.s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener,

В общем идея такая:

Есть база на Oracle,
есть монитор который отображает состояние документа (Товар выписан, Наборка, Наборка завершена) написано на Delphi,
и есть Терминал Сбора Данных (ТСД) на нем С#.

С помощью ТСД отрабатывается документ, он цепляется к Oracle и меняет данные,
а на мониторе эти изменения должны отображаться.

Вот такая задачка :)
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084294
Gambit_d.s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cptngrb,

а можно кой-то пример как работать с TOracleEvent и dbms_alert сигнал, или ссылку на литературу по теме
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084328
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gambit_d.s,

а ещё "терминал" мог бы

1) дополнительно обновлять специальную статусную табличку, например при каждом чихе из секвенции брать значение и записывать его в единственную строку этой таблицы в поле "версия данных". По идее, это даже можно в триггерe организовать.
Тогда SQL-запрос от "монитора" будет очень прост и лёгок: "какая текущая версия данных?" Если отличается от той, которая была при обновлении грида, то значит пора снова его обновить.

2) либо напрямую сообщать "монитору" что есть измемения. К примеру, через сокет или простенький HTTP запрос к встроенному в "монитор" легковесному HTTP-серверу.
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084337
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён
Gambit_d.s,

а ещё "терминал" мог бы

1) дополнительно обновлять специальную статусную табличку, например при каждом чихе из секвенции брать значение и записывать его в единственную строку этой таблицы в поле "версия данных". По идее, это даже можно в триггерe организовать.
Тогда SQL-запрос от "монитора" будет очень прост и лёгок: "какая текущая версия данных?" Если отличается от той, которая была при обновлении грида, то значит пора снова его обновить.

2) либо напрямую сообщать "монитору" что есть измемения. К примеру, через сокет или простенький HTTP запрос к встроенному в "монитор" легковесному HTTP-серверу.


Как вариант построить рассылку таких уведомлений на вебсокетах. А если совсем по взрослому то использовать что-то из систем очередей :)
...
Рейтинг: 0 / 0
Обновить DBGrid при изменении таблицы в Oracle
    #40084343
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
энди
Как вариант построить рассылку таких уведомлений на вебсокетах. А если совсем по взрослому то использовать что-то из систем очередей :)

Вебсокеты и взрослые очереди будут сообщать обо всех изменениях, или только о сделанных в подтвержденных тоанзакциях?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обновить DBGrid при изменении таблицы в Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]