Как отобразить данные из триггера в новой записи

Вопросы стыковки визуальных компонент (DataControls, EhGrid, VirtualTreeView, DevExpress и т.п.) с данными из БД.

Модераторы: kdv, CyberMax

Ответить
KVas
Сообщения: 31
Зарегистрирован: 01 июн 2005, 16:01

Как отобразить данные из триггера в новой записи

Сообщение KVas » 15 июн 2011, 19:25

Здравствуйте! Ситуация следующая: есть before insert триггер, который перед вставкой новой записи в таблицу заполняет несколько полей значениями по-умолчанию. Все нормально работает, только в приложении на момент запонения новой записи данные сформированные триггером не видны, т.е. в когда я при помощи компонента DBGridEh добавляю новую запись - то что заполнил триггер не видно. Можно ли это как-то устроить. Да, для доступа к данным используется FIBPlus 6.9

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Как отобразить данные из триггера в новой записи

Сообщение kdv » 16 июн 2011, 10:15

вопрос скучный до ужаса, и аналогичен ситуации с генераторами, рассмотренной в статье
www.ibase.ru/devinfo/generator.htm.

То есть, если надо увидеть измененные на сервере столбцы - значит нужно запись ПЕРЕЧИТАТЬ.
Или, в последних версиях Firebird можно использовать insert returning (в FIBPlus).

KVas
Сообщения: 31
Зарегистрирован: 01 июн 2005, 16:01

Re: Как отобразить данные из триггера в новой записи

Сообщение KVas » 16 июн 2011, 13:16

kdv писал(а):вопрос скучный до ужаса, и аналогичен ситуации с генераторами, рассмотренной в статье
http://www.ibase.ru/devinfo/generator.htm.
Вопрос может и скучен, но совсем не аналогичен ситуации с генератором, которая в FIBDataSet элементарно решается путем заполнения AutoUpdateOptions.
kdv писал(а):То есть, если надо увидеть измененные на сервере столбцы - значит нужно запись ПЕРЕЧИТАТЬ.
Или, в последних версиях Firebird можно использовать insert returning (в FIBPlus).
За insert returning спасибо, хоть понял, где рыть.
Нарыл следующее: при использовании сетки данных DBGridEh на момент добавления новой записи оператор insert еще не выполняется, следовательно и триггер before insert не срабатывает, а значит и значения еще не сгенерированы. Т.е. нет никакой возможности показать эти значения в сетке. Следовательно в триггере уместно заполнять поля значениями только в случае, когда их необязательно видеть до физического выполнения insert. Если же есть необходимость именно в момент добавления записи в сетку видеть значения полей по умолчанию - нужно их заполнять в клиенте по событию OnNewRecord.

SDG
Сообщения: 20
Зарегистрирован: 27 авг 2008, 09:32

Re: Как отобразить данные из триггера в новой записи

Сообщение SDG » 23 июн 2011, 19:35

Тебе же подсказали, что нужно ПЕРЕЧИТАТЬ данные.
Для этого у фибов есть RefreshSQL (можно генерировать через SQL generator)

Ответить