这个好象差不多:
1)在Delphi集成开发环境中建立一个新的项目。然后在主窗体中加入
TADOConnection组件连接数据库,让它连接到范例NorthWind数据库。再放入
TADOQuery组件。设定它的Connection属性值为刚才的TADOConnection组件,设
定它的SQL属性值为:select*fromSuppliers。再设定它的Active属性值为True,
以便从Suppliers数据表中选择数据。接着在主窗体中加入TDataSource,设定它的
DataSet属性值为刚才的TADOQuery组件,再加入TDBCtrlGrid组件,并且在其中
加入Suppliers数据表的数据感知组件。此时主窗体看起来应该类似如图2-23所示。
2)再于主窗体中加入另外一个TADOQuery。设定它的Connection属性值为步
骤1)的TADOConnection组件,然后设定它的SQL属性值为:select*fromProducts
WhereSupplierID=:SupplierID。在范例NorthWind数据库中,Suppliers数据表和
Products数据表有Master/Detail关系,而且这两个数据表以SupplierID这个字段作为
连接的索引字段。因此在这个新的TADOQuery组件中,它的SQL属性值会以动态
参数:SupplierID作为从Products选取数据的依据,而动态参数:SupplierID则会由步
骤1)中的MasterTADOQuery组件提供。稍后会说明如何让这两个TADOQuery组件
连接在一起。现在接着放入TDataSource组件,设定它的Dataset属性值为刚才加入
的TADOQuery组件。最后放入TDBNavigator和TDBGrid组件,并且设定它们的
DataSource属性值为刚才加入的TDataSource组件。
3)现在这个步骤是让步骤1)和步骤2)形成Master/Detail关系的关键步骤,我们
只需要设定步骤2)中的TADOQuery组件的DataSource属性值为步骤1)中的
TDataSource组件。这样当步骤1)的TADOQuery组件从Suppliers数据表选取数据时,
便会把Suppliers数据表中的SupplierID传递给步骤2)的TADOQuery,让它以这个
SupplierID关键值做为从Products数据表选取数据的过滤标准。现在我们可以把步
骤2)的TADOQuery组件的Active属性值设定True以便开始处理Detail的数据表。
请编译这个范例应用程序并且执行它,那么你应该可以看到类似图2-25所示
的画面。当我们使用窗体上方的Navigator浏览Master数据时,下方的DBGrid就会
显示Detail数据表相关的数据。现在这个范例应用程序已经是一个可以使用ADO技
术处理Master/Detail关系的数据库应用程序。