我是Delphi的新手。我有两个TSQLTables(称为A和B),分别通过两个TDataSetProviders连接到两个TClientDataSets(称为cdsA和cdsB)。两个DataSources(dsA和dsB)完成了场景。
让A成为主要的,让B成为详细的。
将B.MasterSource设置为dsA值,并且B.MasterFields值引用一个在cdsA中不存在的字段(但在查询中存在)。当我启动应用程序时,我首先打开cdsA,然后打开cdsB。出了些问题。链接到dsA数据源的DBGrid显示数据,链接到dsB的DBGrid不显示任何内容。 SQLMonitor日志文件显示在B中实现的查询被执行(一个简单的
为什么链接到dsB的DBGrid不显示与cdsA当前记录相关的B记录?只有在查询列中指定IndexFieldNames时才有效吗?我错过了什么? TIA.
让A成为主要的,让B成为详细的。
将B.MasterSource设置为dsA值,并且B.MasterFields值引用一个在cdsA中不存在的字段(但在查询中存在)。当我启动应用程序时,我首先打开cdsA,然后打开cdsB。出了些问题。链接到dsA数据源的DBGrid显示数据,链接到dsB的DBGrid不显示任何内容。 SQLMonitor日志文件显示在B中实现的查询被执行(一个简单的
select a,b,c from tableB
)。如果我更改查询并显示字段'X'(select a,b,c,X from tableB
),则一切正常。为什么链接到dsB的DBGrid不显示与cdsA当前记录相关的B记录?只有在查询列中指定IndexFieldNames时才有效吗?我错过了什么? TIA.
IndexFieldNames
的值,就会出现“字段索引超出范围”的错误。如果是TabA JOIN TabB on a = b
,我必须将b
指定为详细信息的IndexFieldNames
属性的值。否则,网格将不显示任何内容。我使用Vista、Delphi7、Oracle11g和Devart dbExpress驱动程序(版本4.70)。 - FrancescoJOIN
连接这些表。每个表都在其自己的TSQLTable
组件中单独查询,然后使用MasterSource
和MsterFields
属性将它们“连接”以形成主/细节关系。除非您正在尝试更复杂的操作,否则不需要其他任何操作来建立简单的关系。 - LightBulb