![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте. Встала задача оповещать при добавлении записи в наборе данных представлением которых занимается 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, к примеру, не оповещать "остальных" о проделаных изменениях?
|