?? 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 + -