课件Delphi实用教程

PPT
  • 阅读 53 次
  • 下载 0 次
  • 页数 96 页
  • 大小 1.119 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
课件Delphi实用教程
可在后台配置第一页与第二页中间广告代码
课件Delphi实用教程
可在后台配置第二页与第三页中间广告代码
课件Delphi实用教程
可在后台配置第三页与第四页中间广告代码
课件Delphi实用教程
课件Delphi实用教程
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 96
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】课件Delphi实用教程.ppt,共(96)页,1.119 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-45373.html

以下为本文档部分文字说明:

第9章数据库应用程序开发Delphi实用教程第9章数据库应用程序开发第9章数据库应用程序开发9.1数据库应用系统的开发过程通常开发数据库应用程序有以下三个阶段:分析阶段。明确应用程序需做什么及需要什么数据、谁将使用这些数据。设计阶段

。确定数据表的形式和所需的程序块,编写为了实现设计中的功能的程序代码。维护阶段。对应用程序进行维护,根据用户使用情况进一步优化应用程序。利用Delphi进行客户机/服务器数据库应用系统的开发,通常按以下步骤进

行:系统总体设计与规划。网络和SQL服务器建设。数据库设计。前端开发。调试与应用程序的发布。第9章数据库应用程序开发9.2试题库管理系统的设计实例9.2.1创建stkgl(试题库管理)数据库创建包含试题信息表和试卷信息表,结

构分别如下两表所示。试题信息表(表名st)第9章数据库应用程序开发9.2.1创建stkgl(试题库管理)数据库试卷信息表(表名sj)第9章数据库应用程序开发9.2.2建立存储过程编写试题库管理系统中使用的试卷生成存储过程。思路:根据试卷信息表(sj)的试卷编号(sjbh),查

找到相应记录的试卷内容。根据试卷内容(sjnr),创建一个新的试卷表(paper)。试卷表(paper)包含两个字段:题型代码(txdm)和题目内容(tmnr)。代码如下:第9章数据库应用程序开发9.2.2建立存储过程CREATEPROC

EDUREsjsc@sjbhtinyintASDROPTABLEpaper;CREATETABLEpaper(txdmtinyint,tmnrtext);DECLARE@iint;SET@i=-3;WHILE@i<40BEGINSET@i=@i+4;INSERTINTOpaper(txdm

,tmnr)SELECTtxdm,tmnrfromstWHEREthIN(SELECTsubstring(sjnr,@i,3)FROMsjWHEREsjbh=@sjbh)end;第9章数据库应用程序开发9.2.2建立存储过程说明:该存储过程的功能是把符合条件的题型代

码(txdm)和题目内容(tmnr),插入paper表中,paper表即为生成的试卷。Where条件子句使以下的select语句所产生的题型代码(txdm)和题目内容(tmnr)所对应的题号(th)必须在sj表中试卷内容(sjnr)中。selecttxdm,tmnrfromstwherethi

n(selectsubstring(sjnr,@i,3)fromsjwheresjbh=@sjbh)第9章数据库应用程序开发9.2.2建立存储过程因为sj表中sjnr存放的是以逗号分割的试题编号,所以通过把试题编号

提取出来,逻辑上构成了一个试题编号的集合。并通过以下的Where子句产生符合条件的题号(th)所对应的试卷内容(sjnr)。wherethin(selectsubstring(sjnr,@i,3)fromsjwheresjbh

=@sjbh)局部变量@i,控制从sj表中试卷内容(sjnr)中选取试题的数量。最后,返回生成的试卷给客户端程序。第9章数据库应用程序开发9.2.3用户界面设计用户界面设计应根据用户的要求进行,不同的用户有不同的要求。通常,下面的原则具有一定的普遍意义。(1)力求界面美观

大方,避免界面布局过分拥挤,一般来说,按钮不应太多,如果按钮过多,可以考虑用菜单替代。(2)颜色选择不应过多,尽量保持与操作系统或运行应用程序的背景相协调。尤其没必要追求过分鲜艳的界面。(3)最好提供友好的中文界面。(4)

要充分考虑到与用户的交互性,在后台执行的应用程序可以通过提供一个进度条方式给用户一个直观的认识。(5)最好能提供一定的提示信息,用以引导用户操作。(6)要充分考虑到用户的误操作的可能性,对敏感的信息提供一定的保护措施。比如对删除数据库中的记录,最好提供确认对话框,让用户确认是否删除

记录,以减少误操作造成数据丢失。第9章数据库应用程序开发9.2.3用户界面设计有几种典型界面风格:(1)简洁型简洁型用户界面第9章数据库应用程序开发9.2.3用户界面设计(2)典雅型典雅型用户界面第9章数据库应用程序开发9.2.3用户界面设计(3)明了型明了型用户界面第9章数据库应用程序开

发9.2.4C/S数据库应用程序设计1.“试题库管理系统”的系统结构“试题库管理系统”应用程序的结构设计如图所示:第9章数据库应用程序开发9.2.4C/S数据库应用程序设计2.建立数据模块DMSTKⅠ新建一个

数据模块DataModule1(最终保存该数据模块单元为DMUStk),如图所示,该数据模块所包含的组件及其属性设置值如下张表所示。数据模块DMSTK第9章数据库应用程序开发9.2.4C/S数据库应用程序设计数据模块组件对象属

性表第9章数据库应用程序开发9.2.4C/S数据库应用程序设计Ⅱ使用字段编辑器把QryTMNR,DSetSJ,TabST组件中的所有字段设置为永久字段,再设置这些永久字段的DisplayLabel属性,以便于阅读。ⅢDMstk数据模块保存了对试题库的ADO连接、数据集

、存储过程及查询等信息。利用属性编辑器生成ConStk的连接字符串(ConnectionString),步骤如下:●首先,鼠标双击ConStk,弹出设置连接属性对话框,选择其中的“UseConnect

ionString”单选框,单击“Build…”按钮,系统将弹出“数据链接属性”对话框。●其次,本例中,将访问基于MicrosoftSQLServer的数据库,因此选择“MicrosoftOLEDBProvider

forSQLServer”选项,选择完毕后单击“Next>>”按钮。第9章数据库应用程序开发9.2.4C/S数据库应用程序设计●第三,选择连接属性,这个界面上要求选择的内容较多。需根据SQLServer数据服务器的设置来定。本例中按以下步骤进行设置:(1

)单击“选择或输入服务器名称”下拉列表框的下拉按钮,显示当前系统可以访问的SQL服务器的列表,选择其中的一个,单击“Refresh”按钮,获得最新的SQL服务器列表。本例SQL服务器名为cjhdb,如图所示。第9章数据库应用程序开发9.2.

4C/S数据库应用程序设计(2)在“登录服务器的信息”中,输入相应SQLServer数据服务器的登录信息。本例以系统管理员sa身份登录计算机。(3)选中“选择数据库”单选框,单击其列表框的下拉按钮,如果在第(2)步

输入的登录信息正确,则会显示在第1步选择的SQLServer数据服务器中数据库的列表,否则系统就会显示出错提示。设置完后,单击“TestConnection”按钮测试输入的登录信息是否正确。(4)单击“确

定”按钮,连接字符串设置完毕(如图)。单击OK按钮返回。第9章数据库应用程序开发9.2.4C/S数据库应用程序设计3.主窗体设计试题库管理系统具有试题维护、试卷生成和维护等功能,设计的主界面如图所示。试题库管理系统主窗体所包含的组件及其属性值列于表中试题库管理系统主窗

体试题库管理系统主窗体和组件对象属性表第9章数据库应用程序开发9.2.4C/S数据库应用程序设计程序代码如下://引用stwh,sjwh,sjsc三个单元。//可以手工写入,也可以在完成模块单元后,使用File->UseUnit命令。usesstwh,sjwh,sjsc

;//按钮BtnSTWH的OnClick事件代码,用于调用“试题维护”窗体。//其它两个按钮BtnSJWH、BtnSJSC的OnClick事件代码与它类似。procedureTFrmMain.BtnSTWHClick(S

ender:TObject);beginFrmSTWH.ShowModal;end;保存该单元为main,保存项目为StkPrj。第9章数据库应用程序开发9.2.4C/S数据库应用程序设计4.试题维护窗体试题维护窗体主要用于试题和答案的输入和修改,其

界面如图所示,试题维护窗体所包含的组件及其属性值列于表中。在程序的实现部分要引用数据模块单元DMUSTK,即使用语句:usesDMUSTK;试题维护窗体试题维护窗体和组件对象属性表通过从数据模块DMStk中拖

拽永久字段TabSTtmnr、TabSTckda获得第9章数据库应用程序开发9.2.4C/S数据库应用程序设计5.试卷维护窗体试卷维护窗体主要用于试卷内容和评价等信息的输入和修改,其界面如图所示。其中的组件对象属性表及源程序与试题维护窗体及程序类似。试题维护窗体通过从数据模块DMStk中拖拽永久字

段DSetSJsjnr、DSetSJjspj获得试卷内容为三位数,以逗号分开第9章数据库应用程序开发9.2.4C/S数据库应用程序设计6.试卷生成窗体试卷生成窗体主要用于显示试卷内容,其界面及结构分别如图

所示,该窗体所包含的组件及其属性见下表。试卷生成窗体窗体结构第9章数据库应用程序开发9.2.4C/S数据库应用程序设计试卷生成窗体和组件对象属性表第9章数据库应用程序开发9.2.4C/S数据库应用程序设计程序代码如下://在程序的实

现部分引入以下三个单元usesDMUStk,dysj,DMUStkDy;//窗体FrmSJSC的OnHide事件代码。procedureTFrmSJSC.FormHide(Sender:TObject);beginDMSTK.QryTMNR.Active:=false;MenSJ.Lines.

Clear;end;第9章数据库应用程序开发9.2.4C/S数据库应用程序设计//菜单项MIDY的OnClick事件代码。用于打印试卷。procedureTFrmSJSC.MIDYClick(Sender:TObject

);begin{重新打开数据集,获得最新的数据。这里只列出了QryXZ组件的代码,其它的组件QryTK、QryPD、QryJD、QryJS、QryLS、QryWD、QryBC的代码从略。}DMStkDy.QryXZ.Active:=fals

e;DMStkDy.QryXZ.Active:=true;......//下面四条语句根据试卷编号,获得试卷名。//用于在打印出的试卷卷头中加入试卷名。DMStkDy.QrySJM.Close;DMStkDy.

QrySJM.Parameters.ParamByName('bh').Value:=strtoint(EdtSJBH.Text);DMStkDy.QrySJM.Open;FrmDY.RvProSJ.Exe

cute;//打印试卷end;第9章数据库应用程序开发9.2.4C/S数据库应用程序设计//菜单项MIExit的OnClick事件代码。procedureTFrmSJSC.MIExitClick(Sender:TObject);beginFrmDY.Close;end;第9章

数据库应用程序开发9.2.4C/S数据库应用程序设计//按钮BtnSJSC的OnClick代码。调用存储过程。procedureTFrmSJSC.BtnSJSCClick(Sender:TObject);beginMenS

J.Lines.Clear;//执行存储过程,按试卷编号生成试卷。DMSTK.SPSJSC.Parameters[1].Value:=strtoint(EdtSJBH.Text);DMSTK.SPSJSC.ExecProc;DMSTK.QryTMNR.Close;DMST

K.QryTMNR.Open;withDMSTKdo//在Memo1中显示试卷内容beginQryTMNR.Active:=true;QryTMNR.First;whilenotQryTMNR.EofdobeginMenSJ.Lines.

Append(QryTMNRtmnr.AsString);QryTMNR.Nextend;end;end;第9章数据库应用程序开发9.2.4C/S数据库应用程序设计试题库管理系统的主要窗体都已设计完成,只有与打印相关的数据模块DMStkDy和试卷打印窗体FrmDy尚

未设计,将在9.4节讨论。程序的运行结果如图所示。第9章数据库应用程序开发9.2.4C/S数据库应用程序设计6.使用项目管理器对项目StkPrj进行管理(1)选择主菜单下的File→OpenProject,打开项目St

kPrj。(2)选择主菜单下的View→ProjectManager菜单命令,弹出ProjectManager对话框,如图所示。通过项目管理器的树状结构和弹出式菜单,可以很方便地管理项目StkPrj。项目StkPrj第9章数据库应用程序开发9.2.4C/S数据库应用程序设计(3)

选择主菜单下的Project→Options命令,弹出ProjectOptions对话框,选择Forms页。Forms页用来设置应用程序的主窗体以及选择哪些窗体被系统自动创建、哪些窗体需用户自己创建,项目StkPrj中的窗体如图所示。第9章数据库应用程序开发9.2.4C/S数据库应用程

序设计(4)选择主菜单的Project→View→ViewSource命令,打开当前项目文件StkPrj,可以查看该项目的源代码。下面的代码是项目文件StkPrj中的内容。programStkPrj;//项目文

件StkPrjusesForms,mainin'main.pas'{FrmMain},DMUStkin'DMUStk.pas'{DMSTK:TDataModule},stwhin'stwh.pas'{FrmSTWH}

,sjwhin'sjwh.pas'{FrmSJWH},sjscin'sjsc.pas'{FrmSJSC},dysjin'dysj.pas'{FrmDY},DMUStkDyin'DMUStkDy.pas'{DMStkDy:

TDataModule};{$R*.res}第9章数据库应用程序开发9.2.4C/S数据库应用程序设计beginApplication.Initialize;Application.CreateForm(TFrmMain,FrmMain);Application.

CreateForm(TDMSTK,DMSTK);Application.CreateForm(TFrmSTWH,FrmSTWH);Application.CreateForm(TFrmSJWH,FrmSJWH);Application.CreateForm(TFrmSJSC,FrmSJSC);A

pplication.CreateForm(TFrmDY,FrmDY);Application.CreateForm(TDMStkDy,DMStkDy);Application.Run;end.第9章数据库应用程序开发9.3三层结

构程序设计三层结构指的是将用户界面、业务逻辑、数据管理三个层次部署在不同的位置上。用户界面是客户端桌面上实现的功能业务逻辑是在一个专门的应用服务器上实现的功能数据管理是在一个专门的数据库服务器上实现的功能三层结构的优势:瘦客户端

结构业务逻辑的集中封装集中的资源管理第9章数据库应用程序开发9.3.1基于DataSnap的三层数据库应用概述基于DataSnap的三层数据库图:三层数据库应用的结构(基于BDE)三层数据库应用的结构(基于ADO)第9章数据库应用程序开发9.3.

1基于DataSnap的三层数据库应用概述从图中可见三层数据库应用的结构与两层结构的区别在于:把原来集中在一台机器上的数据源和数据集组件分别放于网络中不同的机器上(有时也存放在一台物理机器上,但逻辑上仍属于三层结构),通过在应用服务器端增加供应器,在

客户端增加连接组件和客户端数据集,使两者联系起来。在一个三层应用中,客户端通过应用服务器得到数据和进行数据更新的过程,通常按照如下顺序和方式实现:(1)用户启动客户端应用。客户端连接到应用服务器(可以在设计时或者运行时指定)。如果应用服务器尚未运行,它将被启动。(2)客户端从应用服

务器请求数据。(3)应用服务器从数据库服务器获取数据,为客户端打包数据,返回一个数据包给客户端。额外的信息(例如,字段显示特性),可以被包含在数据包的元数据中。这个将数据打包的过程叫做“供应(providing)”。(4)客户端解开数据包,显示数据给用户。第9章数据库应

用程序开发9.3.1基于DataSnap的三层数据库应用概述(5)当用户与客户端程序交互时,数据被更新(增加、删除或修改记录)。这些改动被客户端记录在一个变更日志中。(6)客户端向应用服务器提请更新(ApplyUpdat

es),通常是响应用户的一个操作。为了提请更新,客户端将它的变更日志打包并作为一个数据包发送给服务器。(7)应用服务器解开数据包,并向数据库服务器递交更新(PostUpdates)(如果需要,在一个事务的环境中)。如果一个记录不能被递交(例如,由于另一个应用在客户端请求之后、提请更新

之前,改变了记录),应用服务器或者尝试用当前数据调整(Reconcile)客户端的改变,或者保存不能被提交的记录。这个提交记录和缓存问题记录的过程叫做“解析(Resolving)”。(8)当应用服务器完成解析过程,它返回没有递交的记录给客户端,以供后来的进一步解析。(9)客户端调整没有解析的记

录。可以有多种方式,典型地,客户端尝试更正阻碍记录被递交的情况,或放弃变化。如果错误的情况可以被修正,客户端再次提请更新。(10)客户端从服务器得到数据刷新自己。第9章数据库应用程序开发9.3.1基于DataSna

p的三层数据库应用概述DataSnap组件表供应器和客户端数据集组件需要midas.d11或midaslib.dcu,它们管理作为数据包存储的数据集。由于供应器是用在应用服务器上,而客户端数据集用在客户端,所以如果使

用midas.dll,则必须在应用服务器和客户端都要部署它。第9章数据库应用程序开发9.4.2应用服务器结构应用服务器的基础是一个远程数据模块(RemoteDataModule),它是特殊的数据模块,支持IAppServer接口。在一个

远程数据模块中同样包含一个或者多个数据集组件,来代表数据库服务器上的记录。同样也包含某种数据库连接组件,用来让数据集与数据库服务器交互。对于远程数据模块公布给客户端的每个数据集,必须有一个数据集供应器(Data

SetProvider)。第9章数据库应用程序开发9.4.3客户端应用结构对于最终用户,三层应用中的客户端与一个使用缓存更新的传统两层应用看上去一样。用户的交互是通过标准的数据敏感组件,只是在这里,数据敏感组件从一个客户端数据集组件(Cli

entDataSet)得到数据进行显示。连接组件建立连接到应用服务器。通过一个连接组件,客户端数据集从一个供应器组件取回数据,并将更新提请给供应器。有多种的连接组件,使用各自不同的通信协议。对应于应用服务器上的不同种类的远程数据模块,在客户端需要使用不同种类的连接组件,如表所示。第9章数据库应用程

序开发9.4.4三层应用开发开发三层数据库应用的主要工作过程如图所示。第9章数据库应用程序开发9.4.4三层应用开发下面建立一个三层数据库应用,包括一个应用服务器stkServer和一个客户端Client。应用服务器实

现与数据库stkgl的连接。客户端通过应用服务器对数据库中的试题表进行修改。1.建立应用服务器并注册1)建立应用服务器建立应用服务器的步骤如下:(1)选择菜单File→NewApplication,新建一个应用。(2)选择菜单File→N

ew→Other→Multitier→RemoteDataModule,新建一个远程数据模块(如图),并设定类名RDMstk,其他取默认值。第9章数据库应用程序开发9.4.4三层应用开发(3)选择一个AD

OQuery组件,再从组件面板的DataAccess页选择一个数据集供应器组件DatasetProvider,放入到远程数据模块中远程数据模块RDMstk所包含的组件及其属性列于表中。远程数据模块RDMstk的组件对象属性表第9章数据库应用程序开发9.4.4三层应用开发(4)设计应用服务器

的主窗体。用于提示用户应用服务器已经工作,如图9.21所示,只需放入一个Label组件,修改其Caption为“正在运行……”。(5)保存主窗体单元为stkServer,远程数据模块为RDMUstk,保存项目为stk3Prj。服务器端程序主窗体第9章数据库应用程序开发9.4.4三层

应用开发2)注册和运行(1)选择主菜单Run→Parameters…,在Parameters栏中输入“/regserver”,如图所示。(2)选择主菜单Run→Run,运行应用服务器stk3Prj。设置服务器运行参

数第9章数据库应用程序开发9.4.4三层应用开发2.建立客户端应用(1)选择主菜单File→NewApplication,新建一个应用。(2)从DataSnap页,选择一个DCOM连接组件DCOMConnection放入到窗体中。

通常要设置DCOMConnection组件的以下属性:●ComputerName属性该属性表明应用服务器所在的机器。若为空,表示应用服务器与客户端应用在同一台机器。●ServerName属性该属性指出应用服务器的组件类名字(即服务器注册的名字)。本例点击ServerName属性取值

的下拉列表,选择stk3Prj。DCOM连接组件第9章数据库应用程序开发9.4.4三层应用开发(3)从DataAccess页,选择一个客户端数据集组件ClientDataSet(命名为CDSStu),放入到窗体中。通常ClientDataS

et组件需设置的属性有:●RemoteServer属性用于指出DCOM连接。本例设置为为DCOMConStu。●ProviderName属性用于指出应用服务器的数据集提供者。本例点击属性栏的下拉列表,其中将有应用服务器中的数

据集供应器的名字DSProST,选中它,如图所示。第9章数据库应用程序开发9.4.4三层应用开发(4)在窗体中放入其他相关的组件第9章数据库应用程序开发9.4.4三层应用开发客户端应用程序所使用的窗体和组件及其属性列于表中。第9章数据库应用程序开发9.4.4三层应用开发客

户端程序代码如下:按钮BtnXG的OnClick事件代码:procedureTFrmClient.BtnXGClick(Sender:TObject);beginCDSStu.ApplyUpdates(-1);en

d;按钮BtnSX的OnClick事件代码:procedureTFrmClient.BtnSXClick(Sender:TObject);beginCDSStu.Close;CDSStu.Open;end;第9章数据库应用程序开发9.4.4三层应用开发按钮BtnCX的OnClick事件代

码:procedureTFrmClient.BtnCXClick(Sender:TObject);beginCDSStu.UndoLastChange(true);end;第9章数据库应用程序开发9.4.4三层应用开发3.

运行程序可以试着同时运行多个客户端,连接到同一个应用服务器,观察它们共同工作的情形。如图所示。第9章数据库应用程序开发9.4数据库报表组件和报表设计器9.4.1建立第一份报表下面通过最少的步骤,为数据库student中的表students建立第一份报表。(1)运行D

elphi7.0,创建一个新的应用。(2)在窗体上放入数据集组件,如Table、Query或其它数据集组件。在本例中放入一个Table组件,并设置其DatabaseName为student,TableName为students,Name为TabStu,Ac

tive为true。(3)在窗体上放入Rave页中的RvDataSetConnection组件,设置其DataSet属性为第2步中创建的TabStu,Name属性值为StuCXN。第9章数据库应用程序开发9.4.1建立第一份报表(4)在窗

体上放入Rave页中的RvProject组件,窗体界面如图所示。双击该组件(或者右击该组件,选择RaveVisualDesigner菜单项),进入Rave报表设计器。报表应用程序主窗体第9章数据库应用程序开发9.4

.1建立第一份报表报表设计器,其主界面如图工具条属性面板页设计器项目树第9章数据库应用程序开发9.4.1建立第一份报表(5)在Rave报表设计器的主菜单中选择File→NewDataObject,打开“DataConnection”对话框,如图所示

。选择其中的DirectDataView项,单击Next按钮,在“ActiveDataConnections”列表框中选择“StuCXN(DT)”项,如图所示,单击OK按钮。选择数据对象类型对话框选择活动数据连接对话框第9章数据库应用程序开发9.4.1建立第一

份报表(6)在项目树(ProjectTree,在报表设计器的右边)中,打开数据视图条目(DataViewDictionary),选择刚被创立的DataView1,再使用属性面板,重命名DataView为DVStu,如图所示重命名Dat

aView1第9章数据库应用程序开发9.4.1建立第一份报表(7)创建报表。下面通过报表创建向导来创建报表,步骤是:●选择报表设计器主菜单下的Tools→ReportWizards→SimpleTable,确保已选择DVStu,如图所示,单击Next按钮。第9

章数据库应用程序开发9.4.1建立第一份报表●将弹出如图所示的选择字段列表框,在列表框中选择所有字段(单击“All”按钮),单击Next。第9章数据库应用程序开发9.4.1建立第一份报表●进入如图所示的界面,可以改变报表字段的顺序,单击Next。第9章数据库应用程序开

发9.4.1建立第一份报表●进入如图所示的界面,可以改变报表的标题。本例中把标题改为“学生情况表”后,单击Next。第9章数据库应用程序开发9.4.1建立第一份报表●进入如下左图所示的界面,可以改变报表的字体。最后,单击“Generate”按钮生成报

表。查看页面设计器中的内容,如下右图。改变报表的字体页面设计器第9章数据库应用程序开发9.4.1建立第一份报表(8)预览报表,单击“ExecuteReport”,将出现“OutputOption”对话框,选择Pr

eview,然后点击OK按钮,将会看到生成报表的效果。如果所生成报表的效果不理想,可以通过页面设计器调整有关组件的位置。OutputOption对话框第9章数据库应用程序开发9.4.1建立第一份报表运行效果图报表预览第9章数据库应用程序开发9.4.1建立第一份报表在报表中用到的一

些技术:数据连接组件。在应用程序所提供的数据和Rave组件之间提供了一个桥梁。RvProject组件。提供了一些重要的属性和方法来创建报表。报表项目文件(.RAV文件)。这种类型的文件用来存放报表,是一种二进制文

件,类似于Delphi的.DFM文件。报表(reports)。报表被存储在报表库中,报表由页组成。根据需要一个报表可以包含多页。数据视图(DataViews)。定义了从数据库中获得数据的方式。第9章数据库应用程序开发9.4.2数据库报表组件Rave页报表组件图:1.引擎类组件

(enginecomponents)包括RvNDRWriter、RvSystem,用以生成报表。2.格式转换类组件(rendercomponents)包括RvRenderPreview、RvRenderPrinter、RvRenderPDF、RvRenderHTML、RvRe

nderRTF和RvRenderText组件,可把NDR文件(Rave报表文件)或TRvNDRWriter生成的流转换为PDF、HTML、RTF、TEXT等格式。第9章数据库应用程序开发9.4.2数据库报表组件3.数据连接组件数据连接组件包括RvCusto

nConnection、RvDataSetConnection和RvTableConnection,它们在应用程序和Rave可视化组件之间提供了一个桥梁,其作用和使用方法列于表中。第9章数据库应用程序开发9.4.2数据库报表

组件4.RvProject组件●RvProject组件是应用程序与Rave报表之间的接口,它有两个重要的属性:(1)Engine:指明输出引擎。(2)ProjectFile:指出一个已经用Rave设计好的报表项目文件(.rav文件)。●使用RvProject组件生成报表的基本步骤为:(1)调用R

vProject.Open。打开ProjectFile属性中定义的报表。(2)调用RvProject.GetReportList(ListBox1.Item,true)。在列表框中显示报表项目文件中的所有报表名。第9章数据库应用程序开发9.4.2数据库报表组件(3)填写列表框ListBo

x1的OnClick事件,在其中调用以下两个方法:RvProject.SelectReport(ListBox1.Item[ListBox1.ItemIndex],true);RvProject.ReportDescToMemo(Memo1);即

当用户选择好需打印的报表后,把报表的描述信息显示在多行文本框Memo1中。根据实际应用背景,这一步可以省略。(4)调用RvProject.Execute。实际打印所选报表。(5)调用RvProject.Close。关闭报表项

目文件,释放内存。第9章数据库应用程序开发9.4.2数据库报表组件【例】使用RvProject组件生成报表并进行打印的示例。本例按上述5个步骤生成报表,进行打印。所设计的应用程序主界面如图所示,所使用的窗体、组件及其属性值列于表。第9章数据库应用程序开发9.4.2数据库报表组件窗体和组件对象属

性表第9章数据库应用程序开发9.4.2数据库报表组件下面编写程序代码://主窗体FrmRepPrn的OnCreate事件。完成创建报表的(1)-(2)步。procedureTFrmRepPrn.FormCreate(Sender:TObject)

;beginRvPro.Open;RvPro.GetReportList(LBRep.Items,true);end;//列表框LBRep的OnClick事件。//当在LBRep列表框中选择好要打印得报表后,完成生成报表的第3

步。}procedureTFrmRepPrn.LBRepClick(Sender:TObject);beginRvPro.SelectReport(LBRep.Items[LBRep.ItemIndex],true);RvPro.ReportDescToMemo(Mem

Desc);end;第9章数据库应用程序开发9.4.2数据库报表组件//主窗体FrmRepPrn的OnDestroy事件。完成生成报表的第5步。procedureTFrmRepPrn.FormDestroy(Sender:TObject);beginRvPro.Close;end;//按钮Btn

Prn的OnClick事件。完成生成报表的第4步。procedureTFrmRepPrn.BtnPrnClick(Sender:TObject);beginRvPro.Execute;end;//主窗体FrmRepPrn的OnShow事件。procedureTFrmRepPrn.FormShow

(Sender:TObject);beginLBRep.ItemIndex:=0;LBRepClick(nil);end;第9章数据库应用程序开发9.4.3Rave报表设计器1.Rave报表设计器有三种方法打开Rave5.0报表设计器:(1)选择Delphi7

主菜单Tools→RaveDesigner。(2)在主窗体中放入RvProject组件后,双击该组件。(3)在主窗体中放入RvProject组件后,右击该组件,选择RaveVisualDesigner。Rave报表设计器主界面,它包括四个部分:(1)设计器顶端显示各种工具

条。(2)页(Page)。(3)项目树。包括三类节点,即报表库、全局页、数据视图。(4)属性面板,用于定义组件的外观和行为。第9章数据库应用程序开发9.4.3Rave报表设计器2.报表设计器组件(1)基本组件Rave的Standard组件Sta

ndard组件及其作用第9章数据库应用程序开发9.4.3Rave报表设计器(2)条形码组件(3)画图组件BarCode页组件Drawing页组件第9章数据库应用程序开发9.4.3Rave报表设计器(4)报表组件报表组件用于从数据库中取

得数据,产生报表。Report页组件说明Report页组件第9章数据库应用程序开发9.4.3Rave报表设计器3.报表预览三种方法执行一个报表:(1)选择Rave报表设计器主菜单中的File→ExecuteReport选项。(2)单击工具栏中或Pro

ject页中的ExecuteReport图标。(3)按F9键。4.表段表段是指特殊的数据输出区域,Rave5.0内定义了多种表段,如表头BodyHeader、分组组头GroupHeader、表格数据栏Detail、表尾BodyFooter等。第9章数据库应用程序开发9.4.3Rave报表设计

器下面是Delphi7.0中自带的一个表段示例:(1)选择Rave主菜单中的File→Open选项,打开RaveDemo.rav文件(在\ProgramFiles\Borland\Delphi7\Rave5\Demos目录下)。(2)在报

表设计器右边的项目树中打开ReportLibrary,双击SimpleListingReport报表使其加亮显示,再单击其左侧的“+”打开它,出现MainPage页。(3)再单击MainPage页左侧的“+”,出现CustomerDVRegion区域

,再打开它。(4)选中CustomerDVTitleBand,观察报表设计器左边的属性面板中的属性设置。本表段将作为ControllerBand属性定义的表段的表头或表尾,是表头还是表尾,取决于BandStyle属性。单击BandStyle属性右侧的,进入表段风格

编辑器,如下图所示。第9章数据库应用程序开发9.4.3Rave报表设计器表段风格编辑器:第9章数据库应用程序开发9.4.3Rave报表设计器在表段风格编辑器中,可以定义或改变表段风格,表段风格包括表段的打印位置(即前面说明的表段的类型)和

打印时机,两者分别给出报表静态和动态信息,两表列出了表段位置和打印时机的信息。表段的位置说明表段打印时机说明第9章数据库应用程序开发9.4.3Rave报表设计器【例】在上面已打开的报表中,为每行记录增加一行横线分隔符,并在报表的每一页页头打印出一个图标。步骤如下:(1)放

入Report页中的两个Band组件(组件名BdLine和BdRear)到DVStuRegion区域。(2)将BdLine和BdRear的ControllerBand属性均设置为DVStuDataBand。这时,注意观察页面设计器中这两个表段前面的箭头形状和颜色的变化,从中可以清楚地

看出这两个表段BdLine和BdRear与DVStuDataBand表段的对应关系。(3)在BdLine表段中,用Drawing页中的HLine组件画一横线。在BdRear表段中,放入Standard页组件中的Text组件(TxtRear)

,设置其Text属性为“学生情况表”,见图。第9章数据库应用程序开发9.4.3Rave报表设计器(4)选中BdLine,在属性面板中,单击BandStyle属性右侧的,进入表段风格编辑器,设置BdLine的B

andStyle属性。在PrintHeader组中,选中Detail。在PrintOccurrence组中,选中First。再设置BdRear的BandStyle属性。在PrintHeader组中,选中Bo

dyFooter。在PrintOccurrence组中,选中First。设置完成后,表段的风格见图。打印预览学生情况报表如下一页图所示。第9章数据库应用程序开发9.4.3Rave报表设计器报表预览图第9章数据库应用程序开发9.4.4试题库管理系统的打印模块实例1.建立数据

模块(1)打开项目文件StkPrj。(2)建立数据模块DMStkDy(数据模块单元为DMUStkDy),向其中加入9个Query组件,如图所示,(每个Query组件与一种题型相对应),Query组件的属性按下一页

表进行设置。数据模块DMStkDy第9章数据库应用程序开发9.4.4试题库管理系统的打印模块实例数据模块中组件对象属性表设置对象属性的说明:(1)共有9个ADOQuery组件,其中QryXZ、QryTK、QryPD、QryJD、QryJS、Q

ryLS、QryWD、QryBC共8个组件,它们之间的区别在于SQL语句中的where子句,从txdm=1到txdm=8,在此从略。(2)点击QrySJM组件的Parameters参数右侧,设置参数bh的类型为DataType为ftInteger。第9章数据库应用程序开发9.4

.4试题库管理系统的打印模块实例(3)使用字段编辑器添加QryXZ、QryTK、QryPD、QryJD、QryJS、QryLS、QryWD、QryBC、QrySJM中的字段为永久字段。(4)在数据模块单元的实现部分引入DMUStk,即usesDMUStk;2.建立打印试卷窗体9个RvData

SetConnection组件每个RvDataSetConnection组件与数据模块DMStkDy中的一个Query组件对应。RAVEProject组件RvProSJ第9章数据库应用程序开发9.4.4试题库管理系统的打印模块实例打印试卷窗体和组件对象属性表

设置对象属性的说明:共有9个RvDataSetConnection组件(RvDSConXZ、RvDSConTK、RvDSConPD、RvDSConJD、RvDSConJS、RvDSConLS、RvDSConWD、RvDSConBC、RvDSConSJM),它们的Data

Set属性分别设置为(DMStkDy.QryXZ、RvDSConTK、DMStkDy.QryPD、DMStkDy.QryJD、DMStkDy.QryJS、DMStkDy.QryLS、DMStkDy.QryWD、DMStkDy.QryBC、DMStkDy

.QrySJM),在此略去。第9章数据库应用程序开发9.4.4试题库管理系统的打印模块实例3.创建数据视图进入Rave报表设计器,分别为RvDSConXZ至RvDSConBC和RvDSConSJM等9个组件创建数据视图DataView1至DataView9(重命名

为DVXZ、DVTK、DVPD、DVJD、DVJS、DVLS、DVWD、DVBC、DVSJM,分别代表选择题、填空题、判断题、简答题、计算题、论述题、问答题、编程题和试卷名)。创建这些数据视图后,在RAVE报表设计器中DataConnections对话框将显示连接,如下左图所示。在项目

树中将列出这9个数据视图,如右图所示。第9章数据库应用程序开发9.4.4试题库管理系统的打印模块实例4.创建试卷报表(1)在报表中放入一个Report页中的DataText组件和三个Standard页中的Text组件(分别命名为DTxtSJM、TxtS

JT1、TxtSJT2、TxtSJT3),用以填写试卷头。(2)在页中放入一个Region组件(命名为paper)。(3)在Region组件内放置一个Band组件(命名为BdXZT),在该Band组件内放置一个Text组件TxtXZT,用以填写“选择题”头。第9章数据库应用程序

开发9.4.4试题库管理系统的打印模块实例(4)●在Region组件内放入一个DataBand组件(命名为DBXZT)在该组件内放入一个Text组件TxtXZTNum,该组件用于填写选择题的题号,题号由TxtXZTNum的OnGetText事件代码生成。该事件代码为:TxtXZTNum.text:

=inttostr(strtoint(TxtXZTNum.text)+1);//题号初值为1。●放入TxtXZTNum组件后,单击报表的“EventEditor”页,见图,在“AvailableEve

nts”列表框中选择“OnGetText”,在最下方的编辑框中输入上述语句。创建试卷报表第9章数据库应用程序开发9.4.4试题库管理系统的打印模块实例●再在DBXZT组件内放入一个DataMemo组件DMemXZT,该组件用于写入试卷中选择题的内容。以上各组件的属性设置

见表:第9章数据库应用程序开发9.4.4试题库管理系统的打印模块实例各组件的属性设置续表(5)重复第3步和第4步,完成填空题、简答题等其他题型的生成。参见下页图。第9章数据库应用程序开发9.4.4试题库管理系统的打

印模块实例产生的项目树Paper页第9章数据库应用程序开发9.4.4试题库管理系统的打印模块实例实际产生的试卷第9章数据库应用程序开发9.4.5进一步使用报表设计器Rave5.0还有一些附加的功能。其中一个较有用的功能是能将报表格式文件转换为

HTML格式文件。例如把上图的试卷保存为HTML格式文件:procedureTForm1.Button1Click(Sender:TObject);varNDRStream:TMemoryStream

;beginNDRStream:=TMemoryStream.Create;tryNDRStream.LoadFromFile('test.ndr');RenderHTML.PrintRender(NDRStream,'test.html');finallyNDRStream.Free

;end;ShowMessage('NDRConverted');end;

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?