关于adotable的设计思路 |
答題得分者是:h@visli
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
我的程序中,有一个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 發送簡訊給我 |
我的作法是,由一個程序去控管,所有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 發送簡訊給我 |
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 發送簡訊給我 |
建議先去弄清楚 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/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |