|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
событие на добавление записи в DbGrid
Здравствуйте. Встала задача оповещать при добавлении записи в наборе данных представлением которых занимается DBGridEh. Используются следующие компоненты: MyQuery, MyDataSource.
Вопрос: как это сделать есть идея с RecordCount. Но как программно это сделать я не знаю, мб кто-нибудь посоветует или подскажет? Спасибо. |
#2
|
|||
|
|||
используй событие OnAfterPost или OnAfterInsert в MyQuery
|
#3
|
|||
|
|||
Цитата:
|
#4
|
|||
|
|||
DBGrid только отображает данные и все ни коем образом не связывается с базой данных. Посмотри события у DBGrid ты найдешь только отрисовку, нажатия на заголоку, получение/потеря фокуса. Это происходит через Query, Table. Поэтому работай напрямую с источником данных, в твоем случае MyQuery.
|
#5
|
||||
|
||||
при добавлении записи в TDBGrid выводится вопрос "Отменить добавление?":
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables; type TForm1 = class(TForm) DataSource1: TDataSource; Table1: TTable; DBGrid1: TDBGrid; procedure FormCreate(Sender: TObject); procedure Table1AfterInsert(DataSet: TDataSet); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Table1.AfterInsert:=Table1AfterInsert; end; procedure TForm1.Table1AfterInsert(DataSet: TDataSet); begin if MessageBox(Handle, 'Отменить добавление?', 'Вопрос', MB_OKCANCEL or MB_ICONQUESTION)=IDOK then Table1.Cancel; end; end. Пишу программы за еду. __________________ |
#6
|
|||
|
|||
Хм, поясняю, по таймеру делаю обновление записей раз в 5 минут, рефреш не подходит. Если 1 пользователь добавил данные в таблицу, то у другого по прошествии 5 минут должен проиграться звук. Как это сделать?
|
#7
|
|||
|
|||
Всем спасибо разобрался, считаем кодичество записей по RecordCount и если изменяется производим нужное действие.
|
#8
|
||||
|
||||
а если "другой" пользователь за эти 5 минут удалил и добавил запись?
Пишу программы за еду. __________________ |
#9
|
|||
|
|||
Цитата:
|
#10
|
||||
|
||||
Как уже сказали, по RecordCount не вариант, кроме того пользователь может вводить одну запись часами, так-что вам придется обрабатывать состояние набора данных самостоятельно. Как я понял у вас не серверное приложение, т.е. централизовано следить за изменением данных некому, тогда у вас каждая из копий программы должна писать в некий лог/файл что такой-то клиент делает с такой-то таблицей и такой-то записью и она-же должна читать из этого файла эти данные.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#11
|
||||
|
||||
а почему бы по udp, к примеру, не оповещать "остальных" о проделаных изменениях?
Пишу программы за еду. __________________ |