我需要在 Recordset 中存盤日期。我這樣做如下:
rs: _Recordset;
dt: TDatetime;
Rs := CoRecordset.Create;
Rs.Fields.Append('Date', adDate, 4, adfldupdatable, Unassigned);
Rs.Fields.Item['Date'].Value := FormatDateTime('dd/mm/yyyy', TDatetime)
但是,在 Recordset 中,日期以 d/m/yyyy 格式出現
如何在記錄集中存盤 dd/mm/yyyy?
uj5u.com熱心網友回復:
adDate 不是字串格式,而是日期格式。當您設定 value 時,它??將執行從您輸入的字串轉換為其內部格式(保存到檔案時呈現為 d/m/yyyy)。
如果您想要日期的特定字串格式,請使用字串欄位來存盤日期。缺點是,如果您將區域設定更改為日期格式為 M/D/Y 順序而不是您存盤為 D/M/ 的格式,那么您將需要確保正確處理字串欄位Y 順序。
uj5u.com熱心網友回復:
恐怕我無法讓您的代碼按照您的要求運行。無論如何,這顯然是錯誤的,因為該行
Rs.Fields.Item['Date'].Value := FormatDateTime('dd/mm/yyyy', TDatetime)
是錯誤的,因為您TDateTime作為第二個引數傳遞,而不是您dt顯然打算使用的
變數。
因此,改為使用 Delphi 10.4.2。我已經在Win10上編譯并運行了這個程式
program RecordSetTest;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, System.Variants, System.Win.ComObj, WinAPI.ActiveX, WinAPI.AdoInt;
var
RS: _Recordset;
DT: TDatetime;
begin
CoInitialize(Nil);
DT := Now;
RS:= CoRecordset.Create;
RS.Fields.Append('Date', adDate, 4, adfldupdatable, Unassigned);
RS.Open('c:\temp\rsdata.xml', EmptyParam, adOpenStatic, adLockOptimistic, 0);
RS.AddNew('Date', FormatDateTime('dd/MM/yyyy', DT));
RS.Save('c:\temp\rsdata.xml', adPersistXML);
RS := Nil;
writeln('saved');
readln;
end.
請注意對 AddNew 的呼叫,這是將資料記錄添加到 RecordSet 檔案所必需的。
在我的系統上,有dd/MM/yyyy和dd MMMM yyyy的長短日期格式,寫入的檔案如下:
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly' rs:updatable='true'>
<s:AttributeType name='Date' rs:number='1' rs:write='true'>
<s:datatype dt:type='dateTime' rs:dbtype='variantdate' dt:maxLength='16' rs:precision='0' rs:fixedlength='true'
rs:maybenull='false'/>
</s:AttributeType>
<s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row Date='2021-10-20T12:32:59'/>
</rs:data>
</xml>
注意日期值的格式
2021-10-20T12:32:59
盡管日期值的格式設定為
RS.AddNew('Date', FormatDateTime('dd/MM/yyyy', DT));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/340219.html
標籤:德尔福
上一篇:如何在Firemonkey中將另一個控制元件插入到TTabItem中
下一篇:為什么FileAge回傳意外值?
