form共用query,切換時發生field not found? |
尚未結案
|
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
請問各位大大:
我有10個form一個datamodule--dm上有一個query
dm有一個公用函數
dm->openquery(String s,TQuery *q){ q->Close(); q->SQL->Clear(); q->SQL->Add(s); q->Open();} 我在form->active時呼叫dm->openquery("select * from db",dm->Query1); 每一個form用的db不同,欄位也不同 每一個form都用這函數開啟資料表而毫無問題 但當我開啟了2個以上的FORM時,發生field not found? 為此我再呼叫form之前另建了一個函數 dm->ClearQuery(TQuery *q){ q->Close(); q->SQL->Clear(); q->Fields->Clear();} 再呼叫dm->openquery("select * from db",dm->Query1); 之後才開啟form 如此我呼叫各FORM而無問題\,但當螢幕有兩個以上的FORM 做切換時,又會field A7 not found 所以我在form->deactive的地方先dm->Query1->active= false; 再呼叫dm->ClearQuery(dm->Query1); 不過問題依舊,請問該如何解決?發表人 - myboss 於 2004/06/20 11:26:25 發表人 - taishyang 於 2004/06/20 14:58:28 |
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
|
gentrice
一般會員 發表:4 回覆:9 積分:2 註冊:2004-05-13 發送簡訊給我 |
|
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
|
gentrice
一般會員 發表:4 回覆:9 積分:2 註冊:2004-05-13 發送簡訊給我 |
Hi,
據個人淺薄的認知,DM是一個物件,而一個物件只會有一組run time value
DM當然可以"共用"
但前提是"同時"共用還是"不同時"的共用
當你要同時共用DM,您就必須要同時有一個以上的DM instance這樣大家才會相安無事
所以這並不是Query與QEdit相處融不融洽的問題
而是物件導向的精神之故 另外一點,就是您提的是不是要重複很多份DM
基本上DM還是只有設計一份
只是每一個form自行去new 出自己的DM
並沒有重複拉很多DM
(當然這份DM就不適宜用auto-generation的屬性了) 發表人 - gentrice 於 2004/06/24 16:04:59
|
yehcwin
一般會員 發表:1 回覆:10 積分:2 註冊:2002-06-11 發送簡訊給我 |
|
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
gentrice小姐你好:
我DataModule在共用尚沒有問題,有問題的是其上的TQuery與其他
Form上的DBEdit,因為當我把Form上的DBEdit刪除剩下DBGrid時切換
TQuery之SQL內容而不會出現問題,所以我才會認為是DBEdit與共用
TQuery發生問題的,不知妳看法如何? yehcwin兄你好:
我沒有為TDBEdit撰寫OnChange事件,而是發現只要Form上有DBEdit
若想在Form與Form間做切換,就無法只用一個DataModule的Query
如果事先開啟一個Form,關閉後再開另一個Form就沒問題,但是若
想在Form與Form間做切換,且Form上有DBEdit,則每個Form要有一
個相對應的Query才不會有問題,但這樣Form一多Query也要增加許多
我想請問的是 有辦法只用一個Query讓我在各Form中切換使用嗎?
|
yehcwin
一般會員 發表:1 回覆:10 積分:2 註冊:2002-06-11 發送簡訊給我 |
|
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
yehcwin兄你好:
我一個FORM上有好幾個DBEdit,請問您的意思是要
在Form--active&deactive時將其一一DataSource
設為dm->Query1及NULL嗎?
我照著試驗過,但很容易出錯漏了等等,翻書籍及
Online Help知道可以用Component Count及ClassName
設定更改,以後新增及刪除DBEdit十遍不用再去修
程式碼了,可是對這一段不熟,請問該如何撰寫呢?
又可否讓這一段放在datamodule供各FORM共用呢?
|
yehcwin
一般會員 發表:1 回覆:10 積分:2 註冊:2002-06-11 發送簡訊給我 |
|
gentrice
一般會員 發表:4 回覆:9 積分:2 註冊:2004-05-13 發送簡訊給我 |
|
yehcwin
一般會員 發表:1 回覆:10 積分:2 註冊:2002-06-11 發送簡訊給我 |
|
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
gentrice小姐、yehcwin先生你們好:
看到你們的指導,有些問題想請教。
1.我原先form上只有dbgrid,共用datamodule--dm
上面有一個query,於切換form時更改query--SQL
內容,原以為這樣可以節省系統及網路資源,請問
這個作法錯了嗎? PS:我用的是MDI FORM 2.應使用者要求在form上加了DBEDIT,之後共用一個
query方法以不能使用,於是在DM上為各form產生一個
query--q01~q13,一個FORM若需要一個以上query,則
取用q01第一個FORM取用q02,請問這樣做對嗎? 3.你們都說多的Form有自己的DM,是指當我有13個FORM
時,應該產生13個DM嗎? 4.書上說當有重複的CODE時,與其反覆寫入,不如集中
一處,如此在維護上較為方便,更改CODE時也只要修改
一次即可,因此我將所有的TQuery及TTable集中於DM
撰寫函式讓各FORM呼叫,請問這樣的作法是否正確呢? 發表人 - myboss 於 2004/07/01 15:31:49
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |