网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
用Delphi的Tquery控件充分发挥数据库系统SQL功能
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

综观现有的RAD工具——Microsoft的Visual Basic、Sybase的PowerBuilder及Inprise的Delphi,它们都提供了相应的数据库控件。软件开发人员利用这些控件可以有效、方便地实施数据库编程,但编写高效及功能强大的数据库应用软件应该直接、动态地利用数据库管理系统的SQL功能。

  下例的程序是在Delphi 4.0上开发的一个相对简单的人事管理软件的一部分,它能够满足复杂的动态查询、条件打印,实现全活动的工资字段管理和复杂计算功能。

  Delphi访问数据库,一般通过Borland数据库引驚(BDE,Borland DataBase Engine),通过BDE可以访问客户机/服务器数据库,如Microsoft SQL、Oracle、Sybase、DB2等,及本地数据库,如Access、Paradox、dBase等。本例采用的数据库是Sybase SQL Anywhere5.0。但应该指出的是,由于各个数据库系统的功能不一样,在编程考虑软件移植性的时候应注意使用标准isql,还要利用当前数据库的特殊功能。

  在Delphi里,可以直接发挥数据库SQL语句功能的控件除了Tquery,还有TupdateSQL、TstoredSQL等,利用这些控件可以实现查询、计算外,还可以建立、修改数据库表等等。本文以Delphi的Tquery控件为例,通过下面两段程序实现动态查询、复杂计算的方法,阐述数据库编程应充分发挥数据库系统功能这一概念。

  程序中用到的两个控件说明:

  * Tquery控件:name属性为DynamicQuery,如果用以查询,RequestLive属性为False,如果用以更改则要求RequestLive属性为True。

  * TdataSource控件:name属性为DynamicSource,DataSet属性为DynamicQuery。


  一、 动态查询的实现



  图一

  {下面程序是“执行查询”按钮被按下后的响应程序。它首先根据上图复合条件对话框生成的条件生成复杂的连接两表的SQL语句,然后利用Tquery控件将结果响应在显示窗口上。生成打印报表原理也一样}

  procedure TMainFrm.ExcuteQueryBtnClick(Sender: TObject);

  var

  condition:String;

  begin

  { MergeConditionDlg就是上图所示的对话框}

  if MergeConditionDlg.ShowModal = mrOK then

  begin

   { MainCondition.Text为上图“编辑主设限条件”显示的内容}

   if MergeConditionDlg.MainCondition.Text = '''' then

   begin

   { SubCondition.Text为上图进入“子条件构造”对话框生成的内容 }

   if MergeConditionDlg.SubCondition.Text = '''' then

   condition := ''''

   else

   condition := ''身份证 IN (SELECT 身份证 FROM 人员基本情况 WHERE ''+ MergeConditionDlg.SubCondition.Text+'') '';

   end

   else

   begin

   if MergeConditionDlg.SubCondition.Text = '''' then

   condition := MergeConditionDlg.MainCondition.Text

   else

   condition := ''(''+MergeConditionDlg.MainCondition.Text+'') AND (身份证 IN (SELECT 身份证 FROM 人员基本情况 WHERE ''+ MergeConditionDlg.SubCondition.Text+'')) '';

   end;

   with DataFrm do

   begin

   DynamicQuery.Close;

   DynamicQuery.SQL.Clear;

   DynamicQuery.SQL.Add(''SELECT * FROM gzdaView '');

   if (condition〈〉 '''') then

   DynamicQuery.SQL.Add(''WHERE 身份证 IN (SELECT 身份证 FROM 人员基本情况 WHERE ''+condition+'') '');

   DynamicQuery.SQL.Add('' ORDER BY 单位编号,部门编号,行政级别编号,工作时间,出生日期,发放日期'');

   DynamicQuery.Open;

{DbgridDlg对话框根据DBGrid数据源的不同显示不同的结果}

   DBgridDlg.DBGrid.DataSource := DataFrm.DynamicSource;

   if DBgridDlg.ShowModal =
  • 上一篇资讯: 判断MS SQL Server是否启动
  • 下一篇资讯: Delphi COM编程的一个BUG
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号