請教一個關於自動更新資料庫內資料的方式?? |
尚未結案
|
john586
一般會員 發表:6 回覆:5 積分:2 註冊:2003-03-24 發送簡訊給我 |
|
folkchen
高階會員 發表:9 回覆:232 積分:173 註冊:2003-10-09 發送簡訊給我 |
|
john586
一般會員 發表:6 回覆:5 積分:2 註冊:2003-03-24 發送簡訊給我 |
|
wang000f
一般會員 發表:16 回覆:28 積分:8 註冊:2003-10-08 發送簡訊給我 |
你可以在每一個Table的UpdateRecord下SQL不就解決了。 procedure TfmFa.qyMasterUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
case UpdateKind of
ukInsert:begin//當異動模式為新增時
with qyTemp do
begin
close;
SQL.Clear;
//當TableA新一筆,則TableZ也增加一筆,
如何變化,就看你下的SQL語法了。
SQL.Add('INSERT INTO TableZ (a1, a2)
VALUES (:a1, :a2)
ExecSQL;
end;
end;
end; 發表人 - wang000f 於 2003/10/14 12:30:58
|
folkchen
高階會員 發表:9 回覆:232 積分:173 註冊:2003-10-09 發送簡訊給我 |
他的 A B Z 指的是 PC 而不是 Table
你的做法可以自動複制 Table ,但 A B 電腦還是不知道 Data 已經被改過了
除非他們自己定時的去做 check ,不然它們不知 Data 已經被改過了 我想題目要問的是他要如何才能即時發現 Data 已經被改了
Socket 因為是 1 對 1 的動作(通道),所以可以做的到
但 DataBase 是 1 對 多,且"多"裡面的各個點都只能看到 DB,看不到其他的點
,再加上DB只做收SQL及送Data的動作,所以這題似乎無解吧~~
|
john586
一般會員 發表:6 回覆:5 積分:2 註冊:2003-03-24 發送簡訊給我 |
感謝兩位大哥熱心提供協助 小弟後來試著用一個小方法,雖然感覺上好像不是很專業^_^.....
但是小弟用Socket來實做,效果其實還真不錯呢..... 分享一下心得:
假設現在有五台Client及一台Server
[Server]
在OnClientConnect事件上寫入
C_User++;//作為判斷Socket上有多少使用者
及OnClientDisconnect事件上寫入
C_User--; 現在其中一台丟出資料後並Send一個空訊息給Server_Socket
當Server_Socket接收到一個空值,在OnRead事件上寫入
AnsiString NULL_MSG = Socket->ReceiveText();//一定要先把訊息存放起來
for(int x=0 ; x < C_User ; x++){
ServerSocket1->Socket->Connections[x]->SendText("NULL");
}
那麼,當有使用者新增一筆資料,Socket_Server會通知所有線上Client去更新
Server上的Database Client更新資料的部分一定要寫入在Client裡的OnRead部分 如果有更好的方法,還煩請更有經驗的大哥幫幫小弟^_^...
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |