【发布时间】:2013-12-26 09:48:44
【问题描述】:
我有一个带有 2 个表的 SQL Server 2008 数据库:Master 和 Detail
主字段:ID 和 ... ;
详细字段:ID、MasterID 和 ... ;
我已经在 SQL Server 中设置了 Master 和 Detail 的关系
我希望当我在 Master DBGrid 中选择一条记录时,Detail Query 仅返回与所选 Master Record 相关的记录,而 Detail DBGrid 仅显示相关记录
我不想每次选择带有 SQL 代码(例如)之类的主记录时都重新查询详细信息 ADOQuery:
SELECT * FROM Detail WHERE MasterID = Master.ID
不使用 ADOTable (Master Source) 怎么办?
换句话说,我希望这种关系在 DB 层中!
【问题讨论】:
-
据我所知,主从关系通常与
TTable后代组件一起使用。你真的需要TADOQuery而不是TADOTable,它有MasterSource属性吗? -
"我不想每次都重新查询 Detail ADOQuery ..." 为什么不呢?如果 Sql Server 是后端,那么您可能使用的任何其他类型的数据集无论如何都必须在后台执行此操作。
-
"换句话说,我希望这种关系在 DB 层中!"然后在服务器上设置一个以 MasterID 作为输入并返回详细记录的存储过程(或 table-UDF)。不过,您的 Delphi 应用程序仍然必须调用存储的过程/函数。
标签: sql-server-2008 delphi delphi-2010 master-detail tadoquery