有關Filtered的條件的通用寫法 |
尚未結案
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
如下:
var
str,str1:string
try
if str<>'' then
ss:=ss 'GoodsName=' '''' str '''';
if str1<>'' then
ss:=ss ' and Spec=' '''' str1 '''';
NhStDataMod.QQuGoodsName.Filtered:=False;
NhStDataMod.QQuGoodsName.Filter:=ss;
finally
NhStDataMod.QQuGoodsName.Filtered:=True;
end;
可以通過﹐可如果str或str1的值為比如2mm*1mm*1'時就有錯誤﹐也就是值帶'或''時如何避免這種錯誤呢﹖
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
1. NhStDataMod.QQuGoodsName.Filtered:=True; 2. NhStDataMod.QQuGoodsNameOnFilterRecord Event : procedure FilterRecord(DataSet: TDataSet; var Accept: Boolean); var str,str1:string begin ... Accept := ((str='') or (DataSet.FieldByName('GoodsName').AsString = str)) and ((str1='') or (DataSet.FieldByName('Spec').AsString = str1)); end; |
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
[quote]
1. NhStDataMod.QQuGoodsName.Filtered:=True; 2. NhStDataMod.QQuGoodsNameOnFilterRecord Event : procedure FilterRecord(DataSet: TDataSet; var Accept: Boolean); var str,str1:string begin ... Accept := ((str='') or (DataSet.FieldByName('GoodsName').AsString = str)) and ((str1='') or (DataSet.FieldByName('Spec').AsString = str1)); end;謝謝Mickey,我按你所說的將此語句寫到Query的FilterRecord事件中可不執行﹐也就是查不到,我試在Accept前加了句showmessage('試')可為什么沒執行此段呢﹖當然第1步我寫了﹐問題存在什么地方呢﹖ |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
[quote]
小弟懷疑您是直接 Copy 這段
procedure FilterRecord(DataSet: TDataSet; var Accept: Boolean);
若真是這樣, 那當然不會觸發啦! 谢谢hagar,我试想试一下Mickey所讲的。当然不是连procedure FilterRecord(DataSet: TDataSet; var Accept: Boolean);Copy ,而是将
Accept := ((str='') or
(DataSet.FieldByName('GoodsName').AsString = str)) and
((str1='') or
(DataSet.FieldByName('Spec').AsString = str1));
Copy 到我用的Query的FilterRecord方法,这不正确吗?
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
[quote]
Filtered 為 True 時
若 Filter 有值, 則 OnFilterRecord 不會被觸發
另外您說的不會執行是什麼意思?
沒觸發 OnFilterRecord 事件?還是執行結果不是您要的?
最後您的 Filter 值為何?可以貼出來嗎?
謝謝hagar,最後 Filter 值設為空.是不是不能為空?我不明白。因我現要的值是用表示了。且放在 OnFilterRecord 。 Accept := ((str='') or
(DataSet.FieldByName('GoodsName').AsString = str)) and
((str1='') or
(DataSet.FieldByName('Spec').AsString = str1));現好象沒觸發 OnFilterRecord 事件。當然沒有我想要的值。謝謝指點.
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |