gpt4 book ai didi

Delphi、ADOQuery、客户端数据集

转载 作者:行者123 更新时间:2023-12-01 23:14:02 26 4
gpt4 key购买 nike

我想将 ClientDataSet 保存到文件,然后在 AdoQuery (AdoQuery.LoadFromFile()) 中打开该文件。可能吗?

或者如何将数据集保存为 pfADTG 文件格式?

致以诚挚的问候

帕维尔

最佳答案

I want save ClientDataSet to file and then open this file in AdoQuery (AdoQuery.LoadFromFile()). Is it possible?

没有。 TClientDataSet 和 TCustomAdoDataSet 后代(例如 TAdoQuery)使用的文件格式彼此不兼容,无论是二进制版本还是 XML 版本。我想你可以尝试使用 Delphi 的 TXmlTransform 将保存的 CDS 文件转换为 Ado 格式,但我自己从未这样做过。

Or how can I save dataset to pfADTG file format?

如果“数据集”指的是 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;

关于Delphi、ADOQuery、客户端数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46505004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com