adodataset之onfilterrecord可過濾符合條件之記錄但recordcount錯誤 |
答題得分者是:T.J.B
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
各位仁兄:
adodataset(連接access之.mdb之資料表)過濾符合條件之記錄之方式有二
1.設定adodataset之filter特性,接著設定filtered=true,可過濾符合條件之記錄且adodataset.recordcount正確
2.在adodataset.onfilterrecord寫過濾符合條件程式碼,接著設定filtered=true,可過濾符合條件之記錄,但adodataset.recordcount不正確,其
adodataset.recordcount=全部記錄,不管將adodataset.recordcount之查詢寫在
adodataset之任何事件,結果都一樣就是全部記錄數. 我想問各位有無遇到這情況,上述情況為何會這樣,有無其他解決方法?
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
引言: 會有這種情況是因為 filter特性只是把用sql撈出來存在buffer裡頭的資料 再過濾一遍 但實際上只是不秀出那些資料罷了 所以recordcount還是最初 用sql撈出來存在buffer裡頭的資料的recordcount 所以要解決這個問題 我的做法都是直接在sql下子查詢 給你參考一下 天行健 君子當自強不息~~@.@1.我疑問的是為何設定filter特性(無onfilterrecord事件程式碼)再設filtered=true得到之recordcount是正確, 但若經由onfilterrecord事件程式碼得到之recordcount是全部記錄數? 2.你說在sql下子查詢,我想問這該如何下? 比如我要找生日是4月12日之所有人,我的onfilterrecord事件程式碼是如下: procedure TDataMod.FilterRoutine(DataSet: TDataSet; var Accept: Boolean); var temp : String; begin temp := DataSet.FieldByName('生日').AsString; delete(temp,1,5); if Pos('4/12', temp) <> 0 then Accept := True else Accept := False; end; |
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |