線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:977
推到 Plurk!
推到 Facebook!

关于adotable的设计思路

答題得分者是:h@visli
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-30 11:54:23 IP:222.184.xxx.xxx 未訂閱
我的程序中,有一个datamodule form ,里面放了一个adoconnection,然后所有的其它form中的adotalbe都和它相连的,我在设计adotalbe时是关闭的,那么在form中如何打开adotable呢?我个人觉得有如下几种方式: 1.ongreat中打开,onclose中关闭,但发现如果再次打开该窗口后adotalbe是关闭的 2.on show中打开,onclose中关闭,这样好象到没问题,不知道该方法可行否? 3.在所有事件运行前要用到adotable的话就先加一个打开命令 4.直接设计时就是打开的。但发现每次编绎时打开该窗口又提示adotable是关的。 请问高手们,小弟所说的问题,用什么方法解决起来最合理,最高效,谢谢! 發表人 - ntjrr 於 2005/07/30 11:55:23
------
我的编程起步于ktop,我将永远支持ktop
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-30 12:46:28 IP:219.68.xxx.xxx 未訂閱
我的作法是,由一個程序去控管,所有SQL要下之前都會先經過這個程序。 procedure zQueryWork(var Query:TAdoQuery;Str:String); begin Query.Close(); Query.SQL.Clear(); Query.SQL.Add(Str); Query.Open(); end; procedure zQueryExec(var Query:TAdoQuery;Str:String); begin Query.Close(); Query.SQL.Clear(); Query.SQL.Add(Str); Query.ExecSQL(); end; 參考看看。
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-30 13:19:58 IP:222.248.xxx.xxx 未訂閱
1.onCreat中打开,onclose中关闭,但发现如果再次打开该窗口后adotalbe是关闭的 onCreat中打開,就是於窗體創建時打開,所以衹會打開一次,而onClose事件是可以多次觸發的,因為onClose事件是對應於onShow事件(或)的,所以當onClose事件中把TADOTable關閉後,當窗體再次Show出來時,TADOTable還是關閉的。所以這種方法不可取!而且更重要的是,您要在onCreate事件中打開TADOTable,就必須使得TDataModule在所有用到數據集組件的窗體之前被Create! 2.on show中打开,onclose中关闭,这样好象到没问题,不知道该方法可行否? 這個方法比方法1可行些,但沒有必要這麼做 3.在所有事件运行前要用到adotable的话就先加一个打开命令 4.直接设计时就是打开的。但发现每次编绎时打开该窗口又提示adotable是关的。 如果設計時是打開的,則編譯運行時也應該是打開的,而不會是您所說的處於關閉狀態(要麼是TADOConnection組件連接失敗,或Create順序不對) 请问高手们,小弟所说的问题,用什么方法解决起来最合理,最高效,谢谢! 我的看法是,在TADOConnection處於連接狀態後,TADOTable等數據集組件的打開與關閉並不會耗用太多時間(除非數據表的數據量巨大),所以還是在需要進行數據存取時,即時打開與關閉數據集組件。 supman大大的方法是一勞永逸的好辦法! ---------------------------- 於Delphi K.Top之上 博采眾家之長, 奉獻綿薄之力 ---------------------------
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
bestlong
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-30 17:05:22 IP:219.80.xxx.xxx 未訂閱
建議先去弄清楚 TForm 的生命週期與其相關 Event 的觸發時機. Form 的建立有分自動與人工兩種方式, 關閉的作法也有單純的 Hide 或是 Free. 真正的去弄清楚是比較好的. 基本上 Show 與 Close 可以說是相對的. 不過在處理上只是適合輕量型的資料庫. 要是使用到的 Table 在未來會有數萬筆紀錄時. 你就不會有想要在開啟 Form 的同時, 同時間就單純的 Table.Open 那將會造成使用者的抱怨. 而會改用 Query 元件並在開啟 Form 之後. 由使用者透過選擇讀取條件, 再去指定 SQL 條件的方式後才將 Query.Open 的方式來處理. 雪龍 http://bestlong.no-ip.com/ 學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
系統時間:2024-05-20 22:25:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!