关于TABLE的Filter属性 |
答題得分者是:max5020
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
[code delphi] function TForm1.DataRecord: Integer; var today:integer; begin today:=0; Table1.open; Table1.First ; while not Table1.eof do begin if (FormatDateTime('yyyy-MM-dd',now)=FormatDateTime('yyyy-MM- dd',Table1.FieldByName('日期').AsDateTime)) or (formatdatetime('ddd',now)=Table1.FieldByName('每周').asstring) or (FormatDateTime('MM-dd',Now)=FormatDateTime('MM- dd',Table1.FieldByName('每月').AsDateTime)) then begin Inc(today); end; if (Table1.FieldByName('日期').AsString = '' ) and (Table1.FieldByName('每周').asstring='') and (DateToStr(Table1.FieldByName('时间').AsDateTime) <>'')and(Table1.FieldByName('每月').Asstring='') then Inc(today); Table1.next end; result:=today; end; [/code] 我有上面的这段函数代码,想问下怎么样才可以写成TABLE.FILTER里面的内容呢?不要用SQL语句。哪位大大,帮我看看啊?谢谢
------
断断续续的学了几年,还是一个初学者,永远支持Delphi ! 編輯記錄
zhouying82 重新編輯於 2009-05-18 16:12:33, 註解 無‧
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
很久, 沒有人回覆, 表示沒有人看得懂,
您想要表達的問題是什麼? 看您的function, 好像是求資料表內, 符合的共有幾個today, 這個跟Filter有什麼關係? 如果, 想要跟DataSet.Filter有關的話, 就寫在DataSet.OnFilterRecord事件就好啦, 記得, 再將DataSet.Filtered:= true; |
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
===================引 用 zhouying82 文 章=================== 先將Table1.Filtered:= true; 加入Table1.onFilterRecord事件, 如下 [code delphi] procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:= false; if (FormatDateTime('yyyy-MM-dd',now)=FormatDateTime('yyyy-MM-dd',Table1.FieldByName('日期').AsDateTime)) or (formatdatetime('ddd',now)=Table1.FieldByName('每周').asstring) or (FormatDateTime('MM-dd',Now)=FormatDateTime('MM-dd',Table1.FieldByName('每月').AsDateTime)) then Accept:= true; if (Table1.FieldByName('日期').AsString = '' ) and (Table1.FieldByName('每周').asstring='') and (DateToStr(Table1.FieldByName('时间').AsDateTime)<>'') and (Table1.FieldByName('每月').Asstring='') then Accept:= true; end; [/code] |
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
[code delphi] procedure TForm1.ABSTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean); var testDay,testday1,a,b,c,d:TDateTime; begin testDay := absTable1.FieldByName('提醒日期').Asdatetime; testDay1 := absTable1.FieldByName('每月').Asdatetime; WeekFromDayToDay(testDay , a, b); WeekFromDayToDay(testDay1 , c, d); Accept:= false; if (FormatDateTime('yyyy-MM-dd',now)=FormatDateTime('yyyy-MM-dd',absTable1.FieldByName('提醒日期').AsDateTime)) or (formatdatetime('ddd',now)=absTable1.FieldByName('每周').asstring) or (FormatDateTime('MM-dd',Now)=FormatDateTime('MM-dd',absTable1.FieldByName('每月').AsDateTime)) then Accept:= true; if (absTable1.FieldByName('提醒日期').AsString = '' ) and (absTable1.FieldByName('每周').asstring='') and (DateToStr(absTable1.FieldByName('提醒时间').AsDateTime)<>'') and (absTable1.FieldByName('每月').Asstring='') then Accept:= true; //以上为筛选每天记录 if (FormatDateTime('yyyy-MM-dd',abstable1.fieldbyname('提醒日期').asdatetime)>=FormatDateTime('yyyy-MM-dd',a)) and (formatDateTime('yyyy-MM-dd',abstable1.fieldbyname('提醒日期').asdatetime)<=FormatDateTime('yyyy-MM-dd',b)) then accept:=true; if (FormatDateTime('MM-dd',abstable1.fieldbyname('每月').asdatetime)>=FormatDateTime('MM-dd',c)) and (FormatDateTime('MM-dd',abstable1.fieldbyname('每月').asdatetime)<=FormatDateTime('MM-dd',d)) then Accept:= true; if (absTable1.FieldByName('每周').asstring<>'') and (DateToStr(absTable1.FieldByName('提醒时间').AsDateTime)<>'') then Accept:= true; end; procedure TForm1.WeekFromDayToDay(ADay: TDateTime; var FromDay, ToDay: TDateTime); var i:word; begin i := DayOfTheWeek(ADay); FromDay := ADay - i 1; ToDay := aDay ( 7- i ); end; //以上为筛选每周记录。 [/code] 由于我设了2个按钮,其中一个是每天,一个是每周,是不是把代码都写在一起,还是怎么样,我这么写,连原来的每天筛选都不起作用了。大大们帮我分析下。
------
断断续续的学了几年,还是一个初学者,永远支持Delphi ! |
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
===================引 用 zhouying82 文 章=================== [code delphi] procedure TForm1.ABSTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean); var testDay,testday1,a,b,c,d:TDateTime; begin testDay := absTable1.FieldByName('提醒日期').Asdatetime; testDay1 := absTable1.FieldByName('每月').Asdatetime; WeekFromDayToDay(testDay , a, b); WeekFromDayToDay(testDay1 , c, d); Accept:= false; IF 按鈕一 THEN BEGIN if (FormatDateTime('yyyy-MM-dd',now)=FormatDateTime('yyyy-MM-dd',absTable1.FieldByName('提醒日期').AsDateTime)) or (formatdatetime('ddd',now)=absTable1.FieldByName('每周').asstring) or (FormatDateTime('MM-dd',Now)=FormatDateTime('MM-dd',absTable1.FieldByName('每月').AsDateTime)) then Accept:= true; if (absTable1.FieldByName('提醒日期').AsString = '' ) and (absTable1.FieldByName('每周').asstring='') and (DateToStr(absTable1.FieldByName('提醒时间').AsDateTime)<>'') and (absTable1.FieldByName('每月').Asstring='') then Accept:= true; END; //以上为筛选每天记录 IF 按鈕二 THEN BEGIN if (FormatDateTime('yyyy-MM-dd',abstable1.fieldbyname('提醒日期').asdatetime)>=FormatDateTime('yyyy-MM-dd',a)) and (formatDateTime('yyyy-MM-dd',abstable1.fieldbyname('提醒日期').asdatetime)<=FormatDateTime('yyyy-MM-dd',b)) then accept:=true; if (FormatDateTime('MM-dd',abstable1.fieldbyname('每月').asdatetime)>=FormatDateTime('MM-dd',c)) and (FormatDateTime('MM-dd',abstable1.fieldbyname('每月').asdatetime)<=FormatDateTime('MM-dd',d)) then Accept:= true; if (absTable1.FieldByName('每周').asstring<>'') and (DateToStr(absTable1.FieldByName('提醒时间').AsDateTime)<>'') then Accept:= true; END; end; procedure TForm1.WeekFromDayToDay(ADay: TDateTime; var FromDay, ToDay: TDateTime); var i:word; begin i := DayOfTheWeek(ADay); FromDay := ADay - i 1; ToDay := aDay ( 7- i ); end; //以上为筛选每周记录。 [/code] 由于我设了2个按钮,其中一个是每天,一个是每周,是不是把代码都写在一起,还是怎么样,我这么写,连原来的每天筛选都不起作用了。大大们帮我分析下。 |
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |