Delphi - ADODataSet子集

时间:2012-04-18 13:04:00

标签: delphi datagrid drop-down-menu tadodataset

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

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

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

AddOns包含以下字段:

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

我正在使用Delphi 2005并将Indy用于Delphi。

修改

在挖掘数据集的Fields编辑器时,我发现我可以创建一个'DataSet'类型的字段。这会让我把两者绑在一起吗?如果是这样,有人可以解释如何做到这一点?

我尝试通过创建第二个数据集(ADODataSetAddOns)并将新数据集分配给第一个数据集(ADODataSetServices.AddOns)中的数据集字段,但得到错误消息“数据集的数据集不匹配”,我假设是指AddOns字段没有找到数据集。

1 个答案:

答案 0 :(得分:2)

您可以使用2个数据集(主 - 详细信息)来显示服务和插件之间的关系,然后使用TClientDataset作为内存数据集,您可以使用Service Id,{{1}来存储选择}对作为索引,此客户端数据集的结构可以在运行时创建,如此

Addon Id

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