Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Как заставить DBGrid отображать изменения триггера BeforeInsert?   Найти похожие ветки 

 
TheEd   (2005-02-04 19:42) [0]

Господа, собственно subj. Если подробнее, в IB7.0 есть таблица, в которой некоторое поле F1 заполняется в триггере BeforeInsert некоторым значением X.
 Кидаем на форму IBDataBase, IBTransaction, IBTable, TDataSource, DBGrid завязываем как положено, запускаем. Вставляем новую запись в DBGrid - поле F1 <> X!
 Как сделать так, что бы в момент вставки DBGrid перечитал содержимое БД, на какое событие повеситься?

Заранее спасибо!


 
Соловьев ©   (2005-02-04 19:45) [1]


> Вставляем новую запись в DBGrid - поле F1 <> X!

используй не IBTable а IBDataSet там есть свойство RefreshSQL


 
Desdechado ©   (2005-02-04 22:16) [2]

> в момент вставки DBGrid перечитал
до или после?


 
TheEd   (2005-02-06 23:19) [3]

И 1 и 2 ответ не ясны. Может я неправильно описал трабл: я вставляю запись в DBGrid не программно, а всего лишь нажав стрелку вниз, находясь на последней записи.
И если RefreshSQL, то какой использовать?


 
TheEd   (2005-02-09 01:14) [4]

Господа, вопрос на мой взгляд пустяковый, неужто никто не поможет кратким лаконичным ответом?

(Как разберусь - сам себе отвечу :)


 
Deniz   (2005-02-09 07:26) [5]

Объясни толковее что надо.
Сначала клиент далает "у себя" INSERT, потом POST, потом клиент посылает запрос на сервер.
Далее, срабатывает триггер на сервере before insert, делается insert в таблицу, потом триггер after insert.
http://www.ibase.ru/develop.htm


 
Fareader   (2005-02-09 14:20) [6]

После того как будет Commit у транзакции нужно будет обновить НД и все изменения станут видны :)


 
TheEd   (2005-02-09 23:20) [7]

Попробую объяснить толковее: в таблицу DBGrid добавляется строка - ну к примеру DBNavigator, или нажимая стрелку вниз, находясь на последней строке. Все поля - пустые, хотя в поле ID должен сработать триггер BeforeInsert. Поясните механизм - может SQL запрос Insert посылается только тогда когда редактирование постится? Тогда как корректно отображать в новой записи то что отрабатывают тригеры, пока она в стадии редактирования???
Вроде как разжевал - повторюсь, что вопрос наверняка решается просто - нутром чую.
Прошу помощи, потому что наверняка кто-то с этим уже боролся!


 
Deniz   (2005-02-10 07:29) [8]

>TheEd   (09.02.05 23:20) [7]
> ... Все поля - пустые, хотя в поле ID должен сработать триггер BeforeInsert.

Не должен, прочитай внимательно [5].

>Тогда как корректно отображать в новой записи то что отрабатывают тригеры, пока она в стадии редактирования???

Никак, пока ты пост не сделаешь, триггер не сработает.
Ты лучше опиши не то, как ты хочешь сделать, а то как это все должно выглядеть для пользователя.


 
Deniz   (2005-02-10 07:32) [9]

>Fareader   (09.02.05 14:20) [6]
>После того как будет Commit у транзакции нужно будет обновить НД и все изменения станут видны :)

Если все изменения и чтение проходит в одной транзакции, то Commit не обязательно. Транзакция видит свои изменения.


 
TheEd   (2005-02-10 23:34) [10]

Почитал, поразмыслил, спасибо люди добрые, вижу что делать уже. Автоматом не получится - тут ясно. Прийдётся в события DataSet"а лезть (BeforePost), делать напр. SELECT к генератору, получать ID от него, и назначать поле. А в триггере на null проверять и если не null - не трогать поле.

Спасибо за поддержку!


 
Deniz   (2005-02-11 07:05) [11]

Для генератора в IBDataSet есть специальное свойство(GeneratorField), просто настрой его и все.
Да, и не пользуйся IBTable никогда. В IBDataSet есть все, что тебе потребуется.


 
Deniz   (2005-02-11 07:06) [12]

PS: Не забудь прочитать статьи на http://www.ibase.ru



Страницы: 1 вся ветка

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
1-1108454202
BPK
2005-02-15 10:56
2005.03.13
Пошаговая отладка: как не входить в системные unit ы?


1-1109325023
vigo
2005-02-25 12:50
2005.03.13
TClientDataSet


1-1109671828
JTAG
2005-03-01 13:10
2005.03.13
Как организовать задержку (стандартный таймер) сделал так:


6-1105520475
stone
2005-01-12 12:01
2005.03.13
Параметр lpszProfileName в MapiLogOn


3-1108448610
first_may
2005-02-15 09:23
2005.03.13
BLOB