Delphi中多庫關聯查詢 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
此為轉貼資料 Delphi中多庫關聯查詢
作者: delhpi技術網 評價: 上站日期: 2002-01-02
內容說明:
來源: -------------------------------------------------------------------------------- 在我們對資料庫進行操作時,經常用到TTable控制項,但TTable只能同時對一個資料表進行操作,而TQuery控制項不僅具有TTable的多數功能,而且同時可對多個資料表進行操作。不僅如此,TQuery控制項還有更強大的資料庫查詢功能,可以同時對多個不同結構的資料庫進行關聯查詢,被查詢的資料庫可以是ODBC支援的任何一種類型,當然電腦中必須先安裝ODBC和BDC(Delphi的資料庫引擎),現舉例說明。 一、連接Paradox和dBASE進行異庫查詢 例如:Master.db和Customer.dbf分別?Paradox和dBASE的資料庫,它們有一個公共欄位CustNo。這時可輸入如下代碼: Query1.Close;
Query1.DataBaseName:=′′;
Query1.SQL.Clear;
Query1.SQL.Add(′Select * from 〃Master.db〃 A,〃Customer.dbf 〃 B Where A.CustNo=B.CustNo′);
{在同一行內輸入}
Query1.Open; 注意:進行多庫聯查時,TQuery控制項的DataBaseName屬性必須先置空,單引號內不包含任何字元;A和B分別是Master.db和Customer.dbf的別名(引用別名可減少代碼長度)。 二、MS Access的多表聯查 Access資料庫屬於多表集合資料庫(一個資料庫中包含多個資料表),所以,對兩個Access資料庫進行查詢的方法就與上述有所不同。例如:我們有RSDA.mdb和ZFGjj.mdb兩個資料庫,RSDA中包含人事檔案、在職職工目錄和離職職工目錄等資料表,ZFGjj通過公共欄位“用戶號”與RSDA相連。如果我們從ZFGjj中提取一個用戶號,需要從RSDA中得到擁有此用戶號的職工姓名,這時就必須用到TQuery的多表查詢。 第一步 在ODBC中增加兩個資料源“ZFGjj”和“RSDA”。 第二步 在BDE資料庫引擎中添加兩個資料庫列名“ZFGjj”和“RSDA”。 第三步 在表單中增加兩個DataBase控制項“DataBase1”和“DataBase2”,在AliasName屬性中分別選擇“ZFGjj”和“RSDA”,DataBaseName屬性中分別鍵入“ZFGjj”和“RSDA”,最後將KeepConnection和Connected屬性都設?“True”。 現在可以輸入相應的代碼了: Begin
For I:=1 To 10 Do
Begin
Query1.Close;
Query1.DataBaseName:=′′;
Query1.Sq1.Clear;
Query1.Sq1.Add(′Select A.七月,B.個人賬號,B.用戶號,C.姓名From“:ZFGjj:個人彙激部門表”A,“:ZFGjj:住房公積金明細表”B,“:RSDA:在職職工目錄”C
Where(A.用戶號=B.封存=:ib)′);{在同一行輸入}
Query1.Prepare;
Query1.Params[0].DataType.=ftInteger;
Query1.Params[1].DataType.=ftBoolean;
Query1.Params[0].Asinteger:=ia[I];
Query1.Params[1].Asboolean:=ib;
Query1.Open;
End;
End; 代碼中SQL語句必須在一行內輸入,不能分行。SQL語句中使用了動態參數“ia”和“ib”,Delphi會自動按參數出現的順序將它們添加在Query1的Params屬性中並分配索引號分別?0和1,參數“ia”和“ib”應在程式開始時聲明其類型並賦值。
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |