我想將ClientDataSet保存到文件,然後在AdoQuery(AdoQuery.LoadFromFile())中打開此文件。 這可能嗎?Delphi,ADOQuery,ClientDataSet
或者如何將數據集保存爲pfADTG文件格式?
問候
帕維爾
我想將ClientDataSet保存到文件,然後在AdoQuery(AdoQuery.LoadFromFile())中打開此文件。 這可能嗎?Delphi,ADOQuery,ClientDataSet
或者如何將數據集保存爲pfADTG文件格式?
問候
帕維爾
我想保存的ClientDataSet到文件,然後打開該文件中AdoQuery(AdoQuery.LoadFromFile())。可能嗎?
不會。TClientDataSet和TCustomAdoDataSet後代使用的文件格式(如TAdoQuery)在二進制版本或XML版本中不兼容。我想你可以嘗試使用Delphi的TXmlTransform將保存的CDS文件轉換爲Ado格式,但我從來沒有這樣做過。
或者如何將數據集保存爲pfADTG文件格式?
如果「數據集」是指TClientDataSet,則不能直接執行此操作。您可以做的最好的做法是逐個字段地逐行拷貝從CDS到AdoQuery,然後在AdoQuery上調用SaveToFile。
更新:在編輯這個答案時,我怕我不得不拒絕,你問如果你的AdoDataSet是空的並且沒有連接字符串該怎麼辦;那麼,當然可以使用TAdoDataSet來使用SaveToFile和LoadFromFile在本地存儲數據。下面是一個創建並填充ClientDataSet的簡約項目,然後將其結構和數據複製到AdoDataSet。
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
begin
// Note: ClientDataSet1 has had two FieldDefs created in the IDE,
// an ID integer field and an AName string field with a size of 20
// Create and populate ClientDataSet1
ClientDataSet1.CreateDataSet;
ClientDataSet1.InsertRecord([1, 'Name1']);
ClientDataSet1.InsertRecord([2, 'Name2']);
// Copy ClientDataSet1's FieldDefs to AdoDataSet1
AdoDataSet1.FieldDefs.Assign(ClientDataSet1.FieldDefs);
// Now, copy the data fielf-by-field, row-by-row
AdoDataSet1.CreateDataSet;
try
ClientDataSet1.DisableControls;
AdoDataSet1.DisableControls;
ClientDataSet1.First;
while not ClientDataSet1.Eof do begin
AdoDataSet1.Insert;
for i := 0 to ClientDataSet1.FieldCount - 1 do begin
AdoDataSet1.Fields[i].Value := ClientDataSet1.Fields[i].Value;
end;
AdoDataSet1.Post;
ClientDataSet1.Next;
end;
// Save Ado data to file, beware of path used!
AdoDataSet1.SaveToFile(ExtractFilePath(Application.ExeName) + 'AdoData', pfADTG);
finally
AdoDataSet1.EnableControls;
ClientDataSet1.EnableControls;
end;
end;
嘿!歡迎來到StackOverflow!請向我們提供您嘗試過的代碼以及您遇到的問題,以便我們能夠更好地幫助您!乾杯! –