📄 using a data source to bind parameters.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>Using a data source to bind parameters</title>
</head>
<body>
<table border="0" width="100%" style="font-size: 9pt">
<tr>
<td width="100%"><strong>从另一个数据表获得参数</strong><br>
如果参数的值既不是在设计期间指定,也不是在运行期间指定,就可以使用TQuery构件的DataSource属性用于指定一个数据源(TDataSource构件),在这个数据源中查找与参数名匹配的字段,然后用这个字段的值作为参数的值。<br>
<br>
假设一个数据模块LinkModule,上面有一个TQuery构件叫OrdersQuery,它的SQL语句如下:<br>
SELECT CustNo, OrderNo, SaleDate FROM Orders<br>
WHERE CustNo = :CustNo<br>
<br>
另外,数据模块上还有下列构件:<br>
(1)一个TTable构件叫CustomersTable,它的TableName属性设为CUSTOMER.DB。<br>
(2)一个TDataSource构件叫OrdersSource,它的DataSet属性设为OrdersQuery。<br>
(3)一个TDataSource构件叫CustomersSource,它的DataSet属性设为CustomersTable。<br>
(4)OrdersQuery的DataSource属性也设为CustomersSource。<big><br>
<img src="../images/TopoGraph.jpg"
width="256" height="160" alt="TopoGraph.bmp (122934 bytes)"></big> <br>
(5)窗体上有两个TDBGrid构件,它们的DataSource属性分别指定CustomersSource和OrdersSource。如果编译和运行这个应用程序,将看到如图所示的效果:<br>
<br>
因为运行的时候没有对SQL语句中的:CustNo参数赋值,OrdersQuery将试图从CustomersSource指定的数据集中查找匹配的字段。由于CustomersSource是从CUSTOMER.DB中获取数据的,而CUSTOMER.DB中恰好有一个CustNo字段,所以,:CustNo参数的值就是CustNo字段的值。如果您在显示CUSTOMER.DB的数据表中选择了另一条记录,将导致:CustNo参数的值跟着变化。也就是说,两个TDBGrid已经建立的主从关系。因此,每次在Customers数据表中选择一条记录,OrdersQuery的Select语句执行,从Orders数据表中返回CustNo等于当前Customer数据表的CustNo的所有记录。<hr
size="1">
<p align="center"><a href="mailto:ilovedelphi@163.net">RainBow</a><font color="#ffffff">。</font>策划制作
版权所有</td>
</tr>
</table>
<p> </p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -