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

ClientDataSet Filter 與 Field Type

缺席
feng
一般會員


發表:13
回覆:34
積分:14
註冊:2002-10-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-13 10:02:32 IP:210.240.xxx.xxx 未訂閱
Hello: 在 ClientDataSet 中,自行建立的 Field ,如果其 FieldTpye 設定為 Calculated 或者是 lookup 時,似乎無法在 Filter 對該欄位進行過濾... 是否有解? 或者有高手曾經解決過 A Table 的某一個欄位(譬如說郵遞區號)關連到另一個 B Table 中的鄉鎮市區,顯示或編輯時可以利用DBLookupcomboBox處理,可是 當使用者想以「鄉鎮市區」搜尋時該如何進行比較理想。 謝謝
liorex
初階會員


發表:19
回覆:60
積分:32
註冊:2002-08-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-25 19:12:49 IP:61.64.xxx.xxx 未訂閱
那就改用onFilter的even將資料讀取出來做 判斷之後再用設定accept變數的方式來過濾資 所要的資料了 ---------------------- 一切有為法 如夢幻泡影 如露亦如電 應做如是觀 ----------------------
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-25 22:13:11 IP:59.104.xxx.xxx 未訂閱
你該改用 TQuery 元件來取代 TTable,TTable 好用歸好用,但那個 Filter 常常出問題,Filter後,如果資料要再修改、新增,常常還要處理一堆細節。 我現在都不使用 TTable了,直接用 SQL 語法來取出要篩選的資料會比較快, (例如你題目提到的 鄉鎮市區 來篩選特定的資料出來)
feng
一般會員


發表:13
回覆:34
積分:14
註冊:2002-10-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-25 22:30:54 IP:220.135.xxx.xxx 未訂閱
我使用midas技術,AP上只有 ClientdataSet ,資料是程式執行上才由伺服器傳送過來,所以沒有TTable或TQuery。 我在A ClientDataSet NEW 一個新的 lookupfield ,用來將 A CDS 裡得代碼,關連顯示出 B Table 中的文字資料作顯示。(例如 A CDS 中的鄉鎮代碼關連顯示出鄉鎮名) 當我下查詢的時候,理論上是應該對 A CDS 做過濾,但是因為無法對該新的欄位使用 Filter ,所以沒辦法使用。因為我希望完成的是關鍵字搜索,如果使用OnFilter的話,我還要先把盼讀使用者輸入的是不是鄉鎮名稱(而且使用者不一定輸入完整名),然後轉換成縣市代碼再查詢,這樣好像不是很理想。
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-27 00:11:45 IP:59.104.xxx.xxx 未訂閱
要關連「鄉鎮市區」是否有一個連接 Key? 例如 IDCity ? 所以你可以嘗試分兩段來解問題,當 User 輸入查詢的關鍵字, 例如"豐原",那你就查一下「豐原」這個城市對應的 ID值, 再去做 Filter 動作。成立條件就是 IDCity = XXX;
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-27 00:16:15 IP:59.104.xxx.xxx 未訂閱
抱歉..剛沒看到你你最後一次回應最後那一段話,在嫌麻煩。 那我上面那一層講的解法作廢 < >< >
bennykyp
一般會員


發表:11
回覆:31
積分:8
註冊:2004-10-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-27 15:32:19 IP:218.208.xxx.xxx 未訂閱
cdsClient.Filtered := False; cdsClient.Filter := 'PostCode = ''' pPostCode ''''; cdsClient.Filtered := True; cdsClient 就會以輸入的 Postcode 來 Filter 若要再次顯示全部 PostCode , cdsClient.Filtered := False 就可以了.
feng
一般會員


發表:13
回覆:34
積分:14
註冊:2002-10-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-27 16:33:19 IP:210.240.xxx.xxx 未訂閱
引言: cdsClient.Filtered := False; cdsClient.Filter := 'PostCode = ''' pPostCode ''''; cdsClient.Filtered := True; cdsClient 就會以輸入的 Postcode 來 Filter 若要再次顯示全部 PostCode , cdsClient.Filtered := False 就可以了.
==================================== 如果 PostCode 欄位是一個 lookup 的欄位,就沒辦法利用Filter來過濾了,我的問題在這裡。 謝謝你的回答。
系統時間:2024-06-26 7:06:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!