数据报表设计器在多层结构开发的应用

2016-02-19 12:26 4 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的数据报表设计器在多层结构开发的应用懂设计的网友们快点来了解吧!

【 tulaoshi.com - 编程语言 】

----在VisualBasic中制作报表,一般是用数据环境设计器(DataEnvironmentDesigner)与数据报表设计器(DataReportDesigner)相结合来实现的。上述方法通常应用于客户/服务器(C/S)结构。下面,让我们一起来探讨一下DataReportDesigner在多层结构中的应用。
  
  ----一、前言
  
  ----多层应用开发之所以能够成为程序开发的主流技术,是与其具有的数据访问和事务处理能力紧密相关的。多层应用开发在逻辑上则分为三层:客户(表现层),应用服务器(业务层)和数据库(数据层)。客户向服务器发请求,作为中间层的服务器接收请求提供相应的逻辑、性能和目录服务,并最终通过服务器建立与数据库的连接。多层应用开发中很重要的一点是将应用逻辑集中于服务器,这样一个进程便可以为多个客户服务,而不用再为每客户都建立一个服务器进程。下文可作为表现层的一个例子。
  
  ----二、数据结构
  
  ----假设我们要打印两项数据,其定义如下:
  
  字段名数据类型数据长度
  tidchar10
  tnamechar20
  
  ----三、创建工程
  
  ----(1)在新建工程中选取“标准EXE”后按“确定”键,修改工程名为Rptprint,修改Form1的name属性为frmreport。增加一个类模块,修改Class1的name属性为clsreport。如果在“工程”菜单中未发现“添加DataReport”的子菜单,则要进行以下操作,单击“工程”菜单中的“部件”,选中“设计器”中的“DataReport”选项后单击“确定”按钮。此时应在“工程”菜单中发现“添加DataReport”的子菜单,单击该子菜单添加一个DataReport到工程。
  
  ----(2)添加四个CommandButton控件(name属性分别为Command1、Command2与Command3,Command4,caption属性分别为“增加”、“预览”、“打印“与“返回”)和两个TextBox控件(name属性分别为TxtID与TxtName)到frmreport窗体。
  
  ----(3)双击工程中的DataReport1打开设计器,添加两个RptTextBox控件(名称分别为Text1和Text2)到“细节(Section1)”分组中,修改Text1的DataField属性为tid,Text2的DataField属性为tname。
  
  ----(4)引用MicrosoftActiveXDataObjects2.0Library类库,做完以上操作后保存工程。
  
  ----四、编写程序
  
  ----(1)在clsreport类模块输入如下代码:
  
  OptionExplicit
  PrivateRST_RPTAsADODB.Recordset
  '定义一个记录集变量
  
  PrivateSubClass_Initialize()
  SetRST_RPT=CreateObject("ADODB.Recordset")
  '创建一个空的记录集
  WithRST_RPT
  .Fields.Append"tid",adChar,10
  .Fields.Append"tname",adChar,20
  '往记录集中添加字段(此例假设只有两个,
  如需要可增加多个字段)
  .CursorLocation=adUseClient
  '设置CursorLocation属性为“客户端游标”
  EndWith
  
  RST_RPT.Open
  '打开记录集
  
  SetDataReport1.DataSource=RST_RPT
  '设置DataReport1设计器的数据源为RST_RPT记录集
  EndSub
  PrivateSubClass_Terminate()
  IfNotRST_RPTIsNothingThen
  RST_RPT.Close
  '关闭记录集
  EndIf
  
  SetRST_RPT=Nothing
  '撤消对象
  EndSub
  
  PublicFunctionAddRecord(strdata
  ()AsString)AsBoolean
  
  OnErrorGoToerrdo
  '错误捕获
  
  WithRST_RPT
  .AddNew
  !tid=strdata(1)
  !tname=strdata(2)
  '给记录集赋值
  .Update
  '更新修改
  EndWith
  AddRecord=True
  '如果成功则返回“真”
  ExitFunction
  
  errdo:
  '可根据需要对错误进行分类处理
  '方法可查阅随机文档的“调试代码和处理错误”部分
  '此例省略
  AddRecord=False
  '如果失败则返回“假”
  SetRST_RPT=Nothing
  '撤消对象
  EndFunction
  
  PublicFunctionPrint_Report()AsBoolean
  
  OnErrorGoToerrdo
  
  IfNotRST_RPTIsNothingThen
  SetDataReport1.DataSource=RST_RPT
  '重置数据源
  EndIf
  
  DataReport1.PrintReport
  '直接打印
  Print_Report=True
  '如果成功则返回“真”
  ExitFunction
  errdo:
  Print_Report=False
  '如果失败则返回“假”
  EndFunction
  
  PublicFunctionShow_Report()AsBoolean
  
  OnErrorGoToerrdo
  
  IfNotRST_RPTIsNothingThen
  SetDataReport1.DataSource=RST_RPT
  '重置数据源
  EndIf
  
  DataReport1.Show
  '浏览
  Show_Report=True
  '如果成功则返回“真”
  ExitFunction
  errdo:
  Show_Report=False
  '如果失败则返回“假”
  EndFunction
  
  ----(2)在frmreport窗体输入如下代码:
  
  OptionExplicit
  PrivateobjAsclsReport
  '定义局部变量
  
  PrivateSubCommand1_Click()
  Dimb1AsBoolean
  Dimsd(2)AsString
  DimmgAsInteger
  
  sd(1)=Trim(TextID.Text)
  sd(2)=Trim(TextName.Text)
  '把要打印的数据赋给sd数组,此例的数据来自文本框。
  '在多层开发应用中数据源通常是通过业务层和数据层处理
  '后返回的记录集(如ADODB.Recordset),把记录集
  '赋给sd数组,即可打印。注意要保持记录集的字段数
  '与设计器的文本框数一致。
  b1=obj.AddRecord(sd)'增加记录
  Ifb1=TrueThen
  mg=MsgBox("增加记录成功!",vbOKOnly,"打印消息")
  Else
  mg=MsgBox("增加记录失败!",vbOKOnly,"打印消息")
  EndIf
  EndSub
  
  PrivateSubCommand2_Click()
  Dimb1AsBoolean
  DimmgAsInteger
  
  b1=obj.Show_Report'浏览记录
  IfNotb1Then
  mg=MsgBox("浏览操作失败!",vbOKOnly,"打印消息")
  EndIf
  EndSub
  
  PrivateSubCommand3_Click()
  Dimb1AsBoolean
  DimmgAsInteger
  
  b1=obj.Print_Report'打印报表
  IfNotb1Then
  mg=MsgBox("打印操作失败!",vbOKOnly,"打印消息")
  EndIf
  EndSub
  
  PrivateSubCommand4_Click()
  UnloadMe
  '关闭窗口
  EndSub
  
  PrivateSubForm_Load()
  Setobj=NewclsReport
  '创建对象实例
  EndSub
  
  PrivateSubForm_Unload(CancelAsInteger)
  Setobj=Nothing
  '撤消对象
  EndSub
  
  ----五、小结
  
  ----上例具有如下特点:(1)组织数据很灵活,既可以是本地数据也可以是记录集或者俩者相结合。(2)程序运行速度很快,它比用VB生成Excel报表快得多。(3)易于移植,只要建立ActiveXDLL工程,加入clsReport和DataReport1模块编译成动态库,即可被其他应用程序调用。建议:可修改clsReport类模块的属性把它直接作为DataReport1数据源,关于类模块的详细用法可查阅有关文档。本例用VisualBasic6.0(专业版)编写,在Windows95下调试通过。->

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

延伸阅读
  Windows 可以将多个显示器映射为虚拟桌面,使我们可以利用这一点设计出方便工作的应用程序。例如 PowerPoint 就充分发挥了双显示器的优势(大多数的笔记本电脑都支持),它可以在一个显示器上播放幻灯片,而在另一个显示器上显示备注,可以控制播放的进程,使使用者做商务演说的时候非常等心应手。那么我们怎么开发这种应用程序呢?这篇...
Oracle是目前应用最广泛的数据库系统。一个完整的数据库系统包括系统硬件、操作系统、网络层、DBMS(数据库管理系统)、应用程序与数据,各部分之间是互相依赖的,对每个部分都必须进行合理的配置、设计和优化才能实现高性能的数据库系统。本文讨论笔者使用Oracle开发局域网中、小型数据库应用中,系统硬件的选择与使用、应用数据库系统设...
从上个星期就开始有朋友问我为什么很久没有更新Blog了,其实我想我写Blog已经很勤快了,这次10多天没有更新Blog想当然是我又开始出差了。上星期台湾进行了『Delphi.NET多层应用系统开发技术研讨会』,在DevCo重新在台湾举办活动1,2个月之后,的确发现慢慢的一些客户开始回流来参加研讨会了,这是个好现象,也让我有机会和一些朋友谈谈他们...
相信每一个在windows下编过程序的人都或多或少地用过位图,大多数人是从网上下载一些成熟完善的DIB类库来使用(例如CxImage、CDIB),少数人有一套自己封装好的DIB类库,方便以后的扩充和使用。(近几年GDI+异军突起,在某些处理方面,如:缩放、旋转、渐变填充等它提供无与伦比的速度和质量,但,假如你想做一个完善的图像处理程序,直接...
VB作为快速开发Windows下的编程工具,已经为越来越多的开发者采用。但如果要开发出专业的Windows软件,还需采用大量的API函数,以下结合笔者开发管理软件的经验谈几点体会。 程序中判定Windows的版本 众所周知,Windows3.x各版本或多或少会有些差别,为了使开发程序避免出现莫名其妙的错误,最好在程序运行前自动判定Windows的版本。采...

经验教程

419

收藏

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