全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1205
推到 Plurk!
推到 Facebook!

請教一個關於自動更新資料庫內資料的方式??

尚未結案
john586
一般會員


發表:6
回覆:5
積分:2
註冊:2003-03-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-11 19:11:44 IP:218.172.xxx.xxx 未訂閱
小弟想要請教一個BCB資料庫自動更新的方法 例如我有兩個Client端及一個Server端!! client分別為A,B Server為Z; 當 A ---> Z 。 Z -----> B 。 Z ----> A 當A傳送資料到Z時,Z會自動傳給B,當B接收到資料,會在自動回傳給A 其實就是像BCB裡Socket的功能一樣,收到Server的訊息會自動丟到OnRead訊息 並且啟動OnRead,然後再透過OnWrite回傳!!
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-13 10:02:29 IP:211.20.xxx.xxx 未訂閱
我所知的資料庫中,Client好像都是被動式的 都是向資料庫要東西,由資料庫主動丟資料出來的好像沒有耶~~ 若真的有你說的功能,希望有高手分享一下 並說明是什麼資料庫或那一種程式語言可以做到
john586
一般會員


發表:6
回覆:5
積分:2
註冊:2003-03-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-13 11:29:07 IP:218.172.xxx.xxx 未訂閱
呵呵....是啊,因為小弟現在採用Socket呼叫的方式在做,如果Database本身就有自動呼叫的功能當然是最好的了>_<
wang000f
一般會員


發表:16
回覆:28
積分:8
註冊:2003-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-14 12:27:57 IP:211.72.xxx.xxx 未訂閱
你可以在每一個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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-14 13:04:03 IP:211.20.xxx.xxx 未訂閱
他的 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-14 13:44:07 IP:218.172.xxx.xxx 未訂閱
感謝兩位大哥熱心提供協助    小弟後來試著用一個小方法,雖然感覺上好像不是很專業^_^..... 但是小弟用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部分 如果有更好的方法,還煩請更有經驗的大哥幫幫小弟^_^...
系統時間:2024-05-05 13:54:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!