在两个查询之间创建关系 delphi
Create relationship between two query delphi
我有两个 table 国家和城市(country_id 在国家 table 是 PK,country_id 在城市 table 是 FK)。
哪个组件用于创建两个查询之间的关系以快速报告。
哪个结构应该是:
- 查询 2. 客户端数据集.... 3. ? 4.?
这通常称为所涉及数据集之间的 Master-Detail 关系。
在 Delphi 中,您通过将 Detail 数据集连接到 TDataSource 来设置一个,TDataSource 的数据集连接到 Master 数据集。您可以在服务器端执行此操作(即在两个查询之间,使用 Detail 的 DataSource
属性 或在两个客户端数据集之间使用 [=24 的 MasterSource
属性 =]。当在服务器端执行此操作时,您将查询的 SQL 编写为参数化查询,参数是其值与 Master 的 PK 匹配的参数,如
Select * from mydetailtable where masterid = :masterid
一旦在两个数据集之间建立了 Master-Detail 关系,它应该可以与几乎任何报告生成器一起使用,包括 FastReports。
参见例如http://docwiki.embarcadero.com/RADStudio/Rio/en/Setting_Up_Master-Detail_Linked_Relationships 从 DBExpress 组件的角度讲了这一点,但该原理适用于其他 Delphi 数据集组件。
我有两个 table 国家和城市(country_id 在国家 table 是 PK,country_id 在城市 table 是 FK)。
哪个组件用于创建两个查询之间的关系以快速报告。
哪个结构应该是:
- 查询 2. 客户端数据集.... 3. ? 4.?
这通常称为所涉及数据集之间的 Master-Detail 关系。
在 Delphi 中,您通过将 Detail 数据集连接到 TDataSource 来设置一个,TDataSource 的数据集连接到 Master 数据集。您可以在服务器端执行此操作(即在两个查询之间,使用 Detail 的 DataSource
属性 或在两个客户端数据集之间使用 [=24 的 MasterSource
属性 =]。当在服务器端执行此操作时,您将查询的 SQL 编写为参数化查询,参数是其值与 Master 的 PK 匹配的参数,如
Select * from mydetailtable where masterid = :masterid
一旦在两个数据集之间建立了 Master-Detail 关系,它应该可以与几乎任何报告生成器一起使用,包括 FastReports。
参见例如http://docwiki.embarcadero.com/RADStudio/Rio/en/Setting_Up_Master-Detail_Linked_Relationships 从 DBExpress 组件的角度讲了这一点,但该原理适用于其他 Delphi 数据集组件。