编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
Delphi数据库开发及统计表格设计,摘要:本文主要阐述在Delphi环境下,如何制作并在屏幕上显示出二维统计报表。关键词:Delphi数据库SQL查询控元纵向列表交叉统计列表Delphi是Borland公司开发的基于PASCAL语言的Windows平台应用程序开发工具,它将可视化编程(VisualProgramming)与面向对象(Object-Oriented)的卓越优点结合在PASCAL语,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> delphi >> 文章正文
【字体:
Delphi数据库开发及统计表格设计   进入问吧

本站地址:http://www.bajiao123.com

作者:佚名    文章来源:不详    点击数:    更新时间:2007-8-1    

Delphi数据库开发及统计表格设计

  摘要:本文主要阐述在Delphi环境下,如何制作并在屏幕上显示出二维统计报表。

  关键词:Delphi数据库 SQL查询 控元 纵向列表 交叉统计列表

  Delphi是Borland公司开发的基于PASCAL语言的Windows平台应用程序开发工具,它将可视化编程(Visual Programming)与面向对象(Object-Oriented)的卓越优点结合在PASCAL语言开发平台上,而且同时可以支持Client/Server模式的SQL数据库访问与ODBC(开发数据库互连),是一个真正面向对象的开发工具。

  Delphi最吸引人的特点是它的强大的数据库访问能力,它主要通过使用数据库引擎(Borland Database Engine,简称BDE)来访问本地数据库和远程数据库。但对于用户而言,不必直接编程访问BDE,而只需通过采用窗体(FORM)和大量方便且实用的数据库访问元件(Component)来实现,通过ReportSmith报表生成器可以生成多种随心所欲的报表。

  但是,用ReportSmith制作的各类报表,只便于输出至打印机上打印出来,若想把报表在屏幕上显示,则还需调用ReportView。而ReportView窗口界面对不太懂Delphi和Windows操作的普通用户来说,不直观,也不易操作。如何制作并在屏幕上显示出直观的二维统计报表,这是本文所要阐述的主要问题。

  以表格形式显示数据库内容一般地采用下面两种方式:

  ●纵向列表(如图1)

  ●交叉统计列表(如图2)


  一、纵向列表


  Delphi可以用TDBRID控件,以表格形式非常方便地显示单一或多数据库纵向列表。一般采用两种方法实现:

  (一)采用TTable与Tdatasource、TDbgrid控件

  在窗体中引入上述三个控件,并在Ttable中控件指出要访问的数据库存放路径及数据库名,在Tdatasource控件中指出数据源与Ttable相连,在TDbgrid控件中指出显示Tdatasource数据源内容,程序运行后,则显示出如图1所示的数据库纵向列表。

  该种方法一般用来显示单数据库表格或一对多两个数据库表格。

  (二)采用TQuery与Tdatasource、TDbgrid控件

  同样,在窗体中引入上述三个控件,并在TQuery控件中用SQL语句给出对有关数据库的查询,在Tdatasource控件中指出数据源与TQuery相连,在TDbgrid控件中指出显示查询的结果。程序运行后,则显示出如图1所示的数据库纵向列表。

  该种方法一般用于两个以上的多数据库查询。

  在TQuery控件中建立SQL查询有两种方法,一种是在程序设计阶段使用SQL查询,即为静态查询,第二种是在程序运行阶段使用SQL查询,即为动态查询。

  1. 静态查询 在编写程序时,在窗体中放置Tquery元件,并设置对象名称,如Query 1。使用Delphi对象检测器Object,双击Query 1对象的SQL属性,则激活SQL语句输入框,根据要求输入SELECT语句。当程序运行后,则显示出数据库纵向列表。静态查询比较简单,但实用性差。对于较复杂的查询,一般采用动态查询。

  2. 动态查询 同样,在编写程序时,在窗体中放置TQUERY元件,并设置对象名称,如Query 1。在相关的事件函数中输入SQL语句,例如:

  WITH QUERY 1 DO

  BEGIN

  SQL.CLEAR;

  SQL.ADD(‘SELECTDW,COUNT(DW)FROM B_BASETJ F,B_INFO E’);

  SQL.ADD(‘WHERE F.”SHBZCODE”=E.”SHBZCODE”GROUP BY DW’);

  OPEN;

  END;

  当程序运行后,由某一事件激发,则显示出查询结果纵向列表。


  二、交叉统计列表


  在Delphi环境下,无论用上述哪种方法制作数据库纵向列表,都是相对容易的。但要生成如图2所示二维统计报表,则并非易事。

  下面以笔者开发的《社会养老保险管理系统--统计管理》中的一段程序为例,详细说明图2所示交叉统计列表的制作。

  (一)调用数据库B_BASETJ.DB和B_INFO.DB

  上述两数据库的结构分别为:

  B_BASETJ.DB B_INFO.DB

字段名 字段类型

字段长度

字段名 字段类型

字段长度 dw a 4(单位代码) shbzcode a 21(社会保障号码) shbzcode a 21(社会保障号码) attribution a 10(工作属性) cadre_zw a 4(干部职务) sex a 2(性别)


  在B_INFO.DB数据库中存放着各人的基本情况,其中ATTRIBUTION字段包含固定工、农民合同工等工作属性;CADRE_ZW字段包含干部职务,若该字段内容为空,则表示为工人。

  (二)窗口界面设计及各组件属性说明

  用到的重要组件及其属性如下:

  QYERYTB1:TQUERY;{指明SQL的存取元件名为QUERYTB1}

  DataSourceTB1:Tdatasource;{指明与TQUERY相连的数据源为DatasourceTB1}

  Datasourcename=DataSourceTB1

  Dataset=QYERYTB1

  SG11:TstringGrid;{字符型二维数据表格}

  BTNEXIT:Tbutton;{取消按钮}

  (三)程序代码及其分析

  程序中主要通过使用TStringGrid和TQUERY控件来生成交叉统计列表。其中TStringGrid控件以二维网格形式显示字符型数据表格,CELL[I,K]为表格中的一个数据单元,K为行号,I为列号,K、I的起始值为0;TQUERY控件的作用是利用SQL语句统计出表格中某一列数据,如图2表格中共有6列,则需6次调用TQUERY。

  本程序还设置了公共程序段procedure COL(var I,k:INTEGER),这一子程序将被多次调用,用于填写表

[1] [2] [3] 下一页

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 编程资料集中营