gpt4 book ai didi

Delphi - ADODataSet 子集

转载 作者:行者123 更新时间:2023-12-01 23:20:44 27 4
gpt4 key购买 nike

我正在 Delphi 中构建一个表单,其中包含服务下拉列表和用于选择服务的附加组件网格。我获取的数据来自 API,并且我将服务的数据存储在 ADODataSet 中,如下所示:

ID (integer)
Name (string)
Description (string)
BasePrice (currency)
AddOns (array of AddOn, not currently stored in the ADODataSet)

我希望根据下拉列表中的选择使用附加组件数据填充网格(每个服务都有不同的附加组件列表)。如何存储附加信息,以便将其与服务信息相关联?我是否需要创建第二个 ADODataSet,或者是否有办法将其存储在与服务相同的 ADODataSet 中?

附加组件具有以下字段:

ID (integer)
Name (string)
Description (string)
UnitPrice (currency)
Quantity (integer)

我使用的是 Delphi 2005,并且有 Indy for Delphi。

编辑

在深入研究数据集的字段编辑器时,我发现可以创建“数据集”类型的字段。这能让我将两者联系在一起吗?如果是这样,有人可以解释一下这是如何完成的吗?

我尝试通过创建第二个数据集 (ADODataSetAddOns) 并将新数据集分配给第一个数据集 (ADODataSetServices.AddOns) 中的数据集字段来实现此目的,但收到错误消息“数据集没有匹配的 ADO 数据类型”,其中我假设指的是 AddOns 字段未找到数据集。

最佳答案

您可以使用 2 个数据集(主从)来显示服务和插件之间的关系,然后使用 TClientDataset作为内存数据集,您可以使用 Service IdAddon Id 对作为索引来存储选择,该客户端数据集的结构可以在运行时创建,如下所示

  ClientDataSet1.FieldDefs.Clear;
ClientDataSet1.FieldDefs.Add('IdService', ftInteger);
ClientDataSet1.FieldDefs.Add('IdAddon ', ftInteger);
//add morr fieldd here is you want
ClientDataSet1.IndexDefs.Add('Index1','IdService;IdAddon',[ixPrimary, ixUnique]);
ClientDataSet1.IndexName:='Index1';
ClientDataSet1.CreateDataSet;

最后,当您需要将用户选择的数据传递给服务时,您可以像任何 TDataset 一样迭代 ClientDataset。

关于Delphi - ADODataSet 子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209964/

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