使用 ADOQuery1 和ADO查询2

发布于 2024-09-07 01:51:59 字数 287 浏览 7 评论 0原文

我有一个 ADOQuery1,它是我的主表,现在我想使用另一个 ADOQuery2 作为我的详细表,但实际上我找不到解决方案的正确方法。

ADO查询1 nr-Autonum 姓名 当地的 定量。 ADO查询2 Nro_奥托南 姓名
l1 l2
l3

有人可以帮忙吗 谢谢

i have a ADOQuery1 that is my master table and now i whant to use onother one ADOQuery2 for my detail Table but realy i don´t find the right way to work out the solucion.

ADOQuery1
nr- Autonum
name
local
quant.
ADOQuery2
Nro _ Autonum
name
l1
l2
l3

can some one help
thank´s

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

疯到世界奔溃 2024-09-14 01:51:59

对于 AdoQuery,您应该使用 DataSource 属性。您应该执行以下操作:

1- 将 AdoQuery 作为主数据集放在表单上,​​并使用其 SQL 属性编写查询。

2- 在表单上拖放一个 DataSource 组件,并将其连接到您在步骤 1 中构建的主 AdoQuery。

3- 在表单上拖放另一个 AdoQuery 作为详细数据集。

4- 将详细数据集的 DataSource 属性设置为连接到主数据集的数据源(请参阅步骤 2)。

5- 为您的详细信息编写 SQL 查询
数据集,使用其 SQL 属性;在查询中,您应该有一个 WHERE 子句,该子句使用与主数据源中的字段之一同名的参数来过滤详细数据集。
例如,假设主数据集中有一个 ID 字段,详细数据集中有一个名为 MasterID 的字段,该字段是主数据集 ID 字段的外键。现在要将详细数据集连接到主数据集,使用这些字段,您可以为详细数据集编写一个查询,如下所示:

SELECT * FROM DetailTable WHERE MasterID = :ID

如您所见,我们有一个名为 ID 的 SQL 参数,它与主数据集中的 ID 字段同名数据源。现在,每当您浏览主数据源中的记录时,Delphi 都会自动检索 ID 字段的值,并将其用作明细数据集中的 ID 参数值,并重新查询明细数据集。您不需要显式设置参数值并重新查询。这将自动为您完成。

我希望这能让您澄清如何使用 AdoQuery 数据集建立主从关系。

问候

For AdoQuery, you should use the DataSource property. Here is what you should do:

1- Drop an AdoQuery on the form as the master dataset, and write the query using its SQL property.

2- Drop a DataSource component on the form, and connect it to the master AdoQuery you built in step 1.

3- Drop another AdoQuery on the form as the detail dataset.

4- Set DataSource property of your detail dataset to the datasource which is connected to the master dataset (Refer to step 2).

5- Write the SQL query for your detail
dataset, using its SQL property; in the query, you should have a WHERE clause which filters your detail dataset using a paramater which has the same name as one of the fields in the master datasource.
For example, suppose you have an ID field in your master dataset, and a field called MasterID in your detail dataset which is a foreign key for ID field of master dataset. Now to connect the detail dataset to the master one, using these fields, you can write a query for the detail dataset like this:

SELECT * FROM DetailTable WHERE MasterID = :ID

As you can see, we have a SQL parameter named ID, which has the same name as ID field in master datasource. Now, whenever you browse records in the master datasource, Delphi automatically retrieves the value of ID field, and uses it as the value of ID parameter in the detail dataset, and requeries the detail dataset. You do not need to set the parameter value and requery explicitly. This will be done automatically for you.

I hope this clarifies things to you about how to make a master-detail relationship using AdoQuery datasets.

Regards

羞稚 2024-09-14 01:51:59

我有一些自动执行此操作的组件,但是当使用原始 TADOQuery 时,这就是我实现它的方式:

在 Master TADOQuery.AfterScroll 事件上执行此操作:

myDetailQuery.Active := False;
myDetailQuery.Params.ParamByName('ID').Value := DataSet.FieldsByName('ID').AsString;
myDetailQuery.Active := True;

详细 TADOQuery 的查询如下所示:

SELECT * FROM DetailTable
WHERE ID = :ID;

如果有更好的方法,我会喜欢也看到它。

TADOTable 内置了此功能,因此您可以考虑使用它。设置 TADOTable.MasterSource。 Delphi 帮助中有关于该属性的更多信息。

I have some components that automate this, but when using the raw TADOQuery, this is how I implement it:

On Master TADOQuery.AfterScroll event do this:

myDetailQuery.Active := False;
myDetailQuery.Params.ParamByName('ID').Value := DataSet.FieldsByName('ID').AsString;
myDetailQuery.Active := True;

The query for Detail TADOQuery looks like this:

SELECT * FROM DetailTable
WHERE ID = :ID;

If there's a better way, I'd love to see it too.

TADOTable has this functionality built in, so you might consider using that instead. Set TADOTable.MasterSource. There's more information on that property in Delphi help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文