MS Access中我可以在如下查詢中過濾日期: 前。如何將一個Delphi ADOTable過濾器應用於日期數據類型
SignUpDate>第31/12/2013年#
這將使數據庫只顯示記錄,其中SignUpDate是在2014年或更新
我怎麼會做這樣的德爾福?
dmGym.tblMembers.filter:= 'SignUpDate>'第31/12/2013年#' '' 似乎並沒有工作
請幫助它西港島線是極大的讚賞
MS Access中我可以在如下查詢中過濾日期: 前。如何將一個Delphi ADOTable過濾器應用於日期數據類型
SignUpDate>第31/12/2013年#
這將使數據庫只顯示記錄,其中SignUpDate是在2014年或更新
我怎麼會做這樣的德爾福?
dmGym.tblMembers.filter:= 'SignUpDate>'第31/12/2013年#' '' 似乎並沒有工作
請幫助它西港島線是極大的讚賞
嘗試dmGym.tblMembers.filter:= 'SignUpDate>#YYYY/MM/DD#'(2013年12月31日)
-credit到kobik的評論
我想你不需要#
S,嘗試
[...].Filter := '12/31/2013'; // this is for Sql Server and tested
// for UK locale, for Access you may need to swap the dd and mm,
//and maybe even the yyyy as suggested by @kobik in a comment.
如果您在TAdoDataSet.Locate(使用TDateTime類型字段),GetFilterStr插頭的#
跡象,你(並使得它的哈希(當場功能雙關語)時,爲字符串字段做類似 - 見# signs in ADO locates (Delphi XE5))。
但是在TAdoTable上設置一個簡單的過濾器似乎繞過了ADODB.GetFilterStr並直接賦值給它的記錄集的Filter屬性,所以我猜測如果需要#
s,它們必須由ADO插入/ MDac層。
謝謝,但科比克已經回答了我的問題,他的方式工作 – RaymondSWalters
沒有probs - 我輸入它,我想我不妨將它發佈,尤其是它超出了你的具體q。我已經編輯它來承認@ kobik的建議。 – MartynA
Delphi將日期時間存儲爲實數。今天是2016年6月5日,DateTime的整數部分是42,526。日期零是1900年的開始。您需要生成一個名爲DateInt的變量。
Var DateInt:整數 Date1:TDate; 開始 DateInt:= Trunc(Date1)
當您保存日期時,將DateInt保存在BeforePost事件處理程序中。這是一個額外的領域,但過濾現在很容易。例如,您的過濾器現在可以是
NewDateInt:= Trunc(Date1); Filter:='NewDate = DateInt';
你可以試試:
dmGym.tblMembers.Filter:='SignUpDate > 31/12/2013';
dmGym.tblMembers.Filtered:=True;
這將使數據庫只顯示記錄,其中SignUpDate是在2014年或更高版本。
祝你好運。
嘗試'dmGym.tblMembers.filter: ='SignUpDate>#yyyy/mm/dd#''('2013/12/31') – kobik
謝謝! – RaymondSWalters