程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi中多庫關聯查詢

Delphi中多庫關聯查詢

編輯:Delphi

在我們對數據庫進行操作時,經常用到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”應在程序開始時聲明其類型並賦值。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved