Delphi中多库关联查询

2016-02-19 17:29 5 1 收藏

下面是个简单易学的Delphi中多库关联查询教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - 编程语言 】

  在我们对数据库进行操作时,经常用到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。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  第二步 在BDE数据库引擎中添加两个数据库列名ZFGjj和RSDA。

  第三步 在表单中增加两个DataBase控件DataBase1和DataBase2,在AliasName属性中分别选择ZFGjj和RSDA,DataBaseName属性中分别键入ZFGjj和RSDA,最后将KeepConnection和Connected属性都设为True。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  现在可以输入相应的代码了:

  

  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:在职职工目录CWhere(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应在程序开始时声明其类型并赋值。

来源:https://www.tulaoshi.com/n/20160219/1615325.html

延伸阅读
str:=Table1.Tablename; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(format('select * from %s',[Str])); Query1.Open;
标签: Delphi
    一.DLL 库内存共享机制   从使用效果看,DLL和unit 很像,它们都可以被别的工程模块所调用,但二者在内部的实现机制上确存在着差别。如果一个程序模块中用uses语句引用了某个unit,编译程序在编译该模块时,便会连同unit一起编译,并把编译后的可执行代码链接到本程序模块中,这就是一个程序模块能够调用所引用unit中过程...
笔者设计了一段程序。首先在窗体上添加一个DBGrid来显示我们所要打印的数据,在这里,DBGrid不只是起到显示数据的作用,而且用户对DBGrid作的调整,例如改变了各字段的排列顺序,各字段的显示宽度等,都将直接反映到打印结果中去,也就是说,我们实际上就是要把DBGrid的内容直接输出到打印机。以下程序在Win 98+Delphi 4下编译通过,代码如...
大家还记得mssql的跨库查询吧,其实在access中也可以实现2个数据之间的交叉查询。下面我就给大家介绍下access的跨库查询。 首先让我们看看在access里是怎样实现对mdb文件进行查询的,我们随便创建个空数据库,对数据库D:daosdbdaidalos.mdb里的admin表的内容进行查询,SQL语句为: SELECT * from admin in "D:daosdbdaidalos.mdb...
标签: Delphi
  Delphi作为一种面向对象的可视化开发工具,以其开发程序的高速度和编译代码的高效率越来越受到广大编程人员的喜爱。尽管Delphi已经提供了非常强大的开发组件(VCL),但灵活使用API函数一定可以使你的程序增色不少。 状态键的检查 当今不少流行软件的编辑窗口(包括Delphi的代码编辑窗口)的底部都有一个状态条...

经验教程

567

收藏

73
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部