घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "मामले";
वर्तमान संग्रह: 2006.05.21;
डाउनलोड करें: [xml.tar.bz2];

नीचे

क्या मैं एक्सेस डेटाबेस टेबल में प्रविष्टि जोड़ने की घटना को पकड़ सकता हूं? इसी तरह की शाखाएँ खोजें


Рустем ©   (2006-03-27 15:32) [0]

Можно ли отловить событие добавления/изменения/удаления записи(ей) в таблицу БД Access и каким образом?
В моем случае данные из таблицы представляются на экране клиента в графическом виде. Так вот мне необходимо отловить выше указанное событие для перерисовки изображения. Есть ли у кого-нибудь хоть какие-либо соображения, кроме как использовать кнопку "Обновить"?



Sergey13 ©   (2006-03-27 15:36) [1]

यदि रिकॉर्ड चल रहे एप्लिकेशन के बाहर अपडेट किए जाते हैं - IMHO निर्धारित नहीं किया जा सकता है। केवल एक बटन या टाइमर। बटन सबसे अच्छा है (भले ही आप घटना को ट्रैक कर सकते हैं) - हमेशा के लिए और कभी भी। आमीन। 8-)



sniknik ©   (2006-03-27 15:41) [2]

событий нет, читай переодически системную
SELECT Id, DateUpdate, Name FROM MSysObjects
и сравнивай DateUpdate. только учти, оно не "живое реалтаймовское", будут задержки изза буферизации в ядре jet-а. (задержки даже в одном приложении при 2 конектах видны)



Рустем ©   (2006-03-27 15:46) [3]


> स्निकनिक ©

धन्यवाद, मैं कोशिश करूँगा ...



Рустем ©   (2006-03-27 17:15) [4]


> स्निकनिक © (27.03.06 15: 41) [2]
> событий нет, читай переодически системную
> SELECT Id, DateUpdate, Name FROM MSysObjects
> и сравнивай DateUpdate

Ну вот и появились проблемы: оказывается DateUpdate показывает дату создания/модификации таблицы, а не дату внесенных изменений в плане добавления/изменения/удаления записей. Так что этот вариант не подходит...



sniknik ©   (2006-03-27 17:27) [5]

> оказывается DateUpdate показывает дату создания/модификации таблицы ...
да, точно. ;(

можно еще время изменения файла (*.mdb) смотреть, но это будет изменение во всей базе, не деля по таблицам.



Ega23 ©   (2006-03-27 17:38) [6]

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



sniknik ©   (2006-03-27 17:48) [7]

Ega23 © (27.03.06 17: 38) [6]
нет триггеров... access...



Ega23 ©   (2006-03-27 17:50) [8]


> нет триггеров... access...


В access - нету?
Вах....



piople ©   (2006-03-28 06:20) [9]

Да на самом деле тригер бы облегчил задачу... да и вообще если сама процедура построение графика не долгая и не ресурсоемкая то почему бы просто например раз в 10 секунд не обновлять ее и все?

А так же на всяк случай, статейка:


> { **** UBPFD *********** by delphibase.endimus.com ****
> >> Обратная связь от MSSQL-сервера к клиенту
>
> На форуме постоянно возникает вопрос -
> "Как получить обновление данных, по событию, а не таймером",
>
> чтобы снять его раз и навсегда привожу код dll-ки, которая
> является Extended Stored Procedure с единственной функцией
> -
> отправкой UDP-broadcast сообщения.
>
> Зависимости: Windows, SysUtils, IdUDPClient
> Автор:       Delirium, VideoDVD@hotmail.com, ICQ:118395746,
>  Москва
> Copyright:   Delirium (Master BRAIN) 2003
> Дата:        24 октября 2003 г.
> ***************************************************** }


library Messager;

uses
 Windows,
 SysUtils,
 IdUDPClient;

function srv_rpcparams(srvproc: Pointer): integer; cdecl; external "opends60.dll"
name "srv_rpcparams";

function srv_paramdata(srvproc: Pointer; n: integer): integer; cdecl; external
"opends60.dll" name "srv_paramdata";

function srv_paramlen(srvproc: Pointer; n: integer): integer; cdecl; external
"opends60.dll" name "srv_paramlen";

procedure SendUDPMessage(Params: Pointer); stdcall; cdecl; export;
var
 id: TIdUDPClient;
 Msg: string;
 Host, Port: string;
begin
 try
   if srv_rpcparams(Params) < 2 then
     exit;
   Host := Copy(PChar(srv_paramdata(Params, 1)), 1, srv_paramlen(Params, 1));
   Port := Copy(Host, Pos(":", Host) + 1, Length(Host));
   Delete(Host, Pos(":", Host), Length(Host));
   Msg := Copy(PChar(srv_paramdata(Params, 2)), 1, srv_paramlen(Params, 2));
   id := TIdUDPClient.Create(nil);
   id.BroadcastEnabled := True;
   id.Host := Host;
   id.Port := StrToInt(Port);
   id.ReceiveTimeout := -1;
   id.Send(Msg);
   id.Free;
 except
 end;
end;

exports SendUDPMessage;

begin
end.

> Пример использования:
>
> Для регистрации на MSSQL скопировать dll в c:\Program Files\Microsoft
> SQL Server\80\Tools\Binn и исполнить скрипт sp_addextendedproc
> "SendUDPMessage", "Messager.dll" На клиенте рекомендую использовать
> компонент TIdUDPServer. Передача сообщений осуществляется
> так exec SendUDPMessage "255.255.255.255:8080", "Привет!
> " где 255.255.255.255 - broadcast маска, но можно написать
> и конкретный адрес (192.168.1.10), 8080 - выбранный для
> использования порт.



पन्ने: 1 पूरी शाखा

फोरम: "मामले";
वर्तमान संग्रह: 2006.05.21;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.59 एमबी
समय: 0.038 c
1-1144937604
IceBeerg
2006-04-13 18:13
2006.05.21
सो जाओ Windows XP


2-1146731374
De
2006-05-04 12:29
2006.05.21
डीएल से एक फ़ंक्शन को कॉल करते समय एक त्रुटि मिलती है


15-1145943960
Alkid
2006-04-25 09:46
2006.05.21
जन्मदिन मुबारक हो 25 अप्रैल


15-1145956765
konrads
2006-04-25 13:19
2006.05.21
D 2005 की स्थापना


4-1141220906
Nachinayuschiy10
2006-03-01 16:48
2006.05.21
तह रूप





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский