- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将 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/
我不确定为什么会发生这种情况,所以我将简要解释一下情况(应该很容易理解): Form1 一个执行 sql select 语句并将其显示在通过 TDataSource 组件链接到 ADOQuery1 组
我想请您帮助我的 Delphi 项目(RAD Studio),我是 Delphi 的新手。 我正在使用:TADOConnection(带连接字符串)2x ADOQUERY(设置“连接 = TADOCo
我在 Delphi 2010 应用程序中使用异步 ADO 查询。用户可以请求取消查询,否则查询可能会因错误而失败。这是我用来取消查询的代码: if not Assigned(myADOQuery.Re
尊敬的专家们,我正在尝试过滤连接到 adoquery 的 dbgrid 中的结果,根据用户对 4 个复选框的选择,用户可以选择一个或多个字段来相应地过滤数据我有这段代码,如果用户选择两个或多个复选框,
我想将 ClientDataSet 保存到文件,然后在 AdoQuery (AdoQuery.LoadFromFile()) 中打开该文件。可能吗? 或者如何将数据集保存为 pfADTG 文件格式?
我有一个ADOQuery,它将记录插入到SQL Server 2005表中,该记录已触发将数据插入到另一个表中。我使用以下代码刷新查询并避免使用Row cannot be located for up
我在这里使用的是 Delphi 5 和 SQL Server 2000。 我使用 INSTEAD OF DELETE 触发器在可更新 View 之上创建了一个 ADOQuery。 可更新 View 主
我在快速报告中遇到问题,显示 ADO 查询中的数据不正确。我使用以下 sql.text SELECT * FROM JOB_DATA INNER JOIN CUSTOMER ON JOB_DATA.C
我有这个简单的代码来检查表中是否存在记录,但它总是返回运行时错误: Arguments are of the wrong type, are out of acceptable range, or a
我正在努力寻找执行 SQL 查询的正确过程。 基本上,我有一个文本字段,用户可以在其中输入 SQL 代码,程序将执行它。不幸的是,我不知道是否会返回数据集,因此我无法判断使用哪个函数:ADOQuery
我在 Delphi 7 和 Oracle 中使用 ADOQuery。我在将参数传递给 ADOQuery 时遇到错误。我用过以下行。请帮我找出错误。 ADOQuery.Sql.text:= 'selec
我有这个返回访问冲突的代码('sqloledb.dll' 模块中地址 74417E44 的访问冲突。读取地址 786E3552'),我无法确定问题出在哪里。我唯一的猜测是 ADOQuery 对我们可以
我正在测试一些数据库组件,例如 SDAC 等,我发现了一些有趣的东西: 当我使用 TADOQuery 执行查询并且该查询有很多 blob 字段并且我获取所有行 (fetchall) 时,我的应用程序的
我正在使用 ADO 组件连接到 MS SQL 数据库。我知道如何在 DBGrid 中显示查询结果。但是,例如,我想将结果作为字符串存储在数组中。 这是否可能,或者是否有其他方式使用查询结果? 最佳答案
好的,我有一个查询应该返回所有问题编号。我想要的是获取返回的每个问题编号并将其添加到字符串列表中。 ADOQuery1.SQL.Clear; SQLQuery := 'SELECT issue FRO
我有一个通过数据源链接到 DBGrid 的 ADOQuery。 ADOQuery 和DataSource 位于DataModule 中,并且连接采用另一种形式。 有什么方法可以让我的应用程序在查询获取
我在 ADOQuery2 中有一个查询。现在我想要一个过滤器: ADOQuery2.Filter := 'where Fname like ' + QuotedStr(Txt_Search.Tex
我正在撕扯我的头发!! 即使是像这样简单的事情: procedure MyAdoQueryTest(); const MYSQL_CONNECT_STRING='Driver={MySQL OD
我有一个 Delphi 7 项目,它使用 MySQL 中的数据库来存储一些配置。每当我更改配置时,都会启用“保存”按钮。此按钮中的 OnClick 过程调用 TADOQuery.Edit、Select
我有以下行来定位查询中的一行。 if Query.Locate('Line;Hour;Minute',VarArrayOf([Line-400,AHour,minuteof(Start)]),[])
我是一名优秀的程序员,十分优秀!