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

資料庫資料異動他台PC可馬上顯示嗎?

尚未結案
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-22 17:55:19 IP:61.228.xxx.xxx 未訂閱
使用MS-SQL資料庫,兩台PC連線 A與B台同時使用同一個新增系統,當A與B同時顯示在DBGRID條件下 兩台顯示資料 單號 001 .... 002 .... 003 ... 004 ... ,其中A台新增一筆 005單號,A台可看到005單號,B和其它PC看不到005單號 需要離開在進入(或B台新增一筆後)才可看到單號005, << 刪除一筆也是如此,他台無法立即顯示 >> 不知我表達是否清楚? (我使用ADOQuery,DBGrid)不知該如何解決?
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-22 19:08:37 IP:61.228.xxx.xxx 未訂閱
後來站上尋找參考資源,我使用time來控制 procedure TForm.DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Timer1.Enabled:=True; end; procedure TForm.Timer1Timer(Sender: TObject); var Bok:String; begin TSum:=TSum 1; if TSum = 5 then begin < 多少秒比較恰當? ? TSum:=0; Timer1.Enabled:=False; Bok:=ADOQuery1.Bookmark; ADOQuery1.Requery(); ADOQuery1.Bookmark:=Bok; end; end; 站上友人可否提供一點意見參考,謝謝大家
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-22 19:34:26 IP:203.75.xxx.xxx 未訂閱
用 TTIME 元件會造成 LOCAL 網路都是你程式的資料流,恐怕會將網路掛掉。 如果你在程式裡多加一個 INDY 元件,在其中一支程式存檔成功時,再去以訊息的方式去通知各支程式,不知會不會好一點,不過這個有架構上的問題。 -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-22 20:38:32 IP:218.32.xxx.xxx 未訂閱
nick167 你好: Client / Server 先天的架構就是如此, 做了個元件, 參考看看. http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26355
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-23 11:54:01 IP:211.22.xxx.xxx 未訂閱
用 TTime 來定期 ReOpen Table 是會對 Server 造成很大的負擔, Client 越多越明顯, 而用 INDY 元件做廣播通訊又會碰到網路架構的問題, 而且廣播後又會面臨所有 Client 通通一起來 ReOpen 的塞車瓶頸. 真要如此做的話,建議可以在 DB Server 上多建立一個 Table 記錄所有的 Table Version 用 Timestmp 欄位記錄最後更新時間, 然後修改應用程式在異動 Data 後再去更新 Table Vertion, 然後 TTime 改成比對 Client vertion 與 Server vertion 是否相同, 不同時才真的作 ReOpen Table 的動作, 這樣可以降低一些資料流量 我是雪龍
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
ChrisChen
一般會員


發表:4
回覆:11
積分:3
註冊:2004-04-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-25 12:07:49 IP:203.70.xxx.xxx 未訂閱
小弟不才,這個問題確實在Clint/Server上會發生(如兩個Query Analizer先後去Query同一個Table確會傳回不同的資料集一樣)。 因此之前小弟採用的方式為在顯示時不去理會,但是在有增/刪/改時會進行單一記錄的"防呆"查詢(或將要被修改的記錄群進行防呆查詢),再進行增/刪/改動作,之後再重新ReQuery,一般來說這樣的做法使用者會接受的,就如同咱們的KTOP不會一有更新就通知前端IE來ReQuery頁面是一樣的道理; 這點不上檯面的方式見笑了~~~~
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-26 08:55:13 IP:61.228.xxx.xxx 未訂閱
各位先進的慷慨解囊很難下段給分 大家意見及用心多很好,感謝大家意見,
系統時間:2024-05-19 16:22:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!