数据报表设计器在多层结构开发的应用
2008-02-23 06:52:45来源:互联网 阅读 ()
---- 一 、前言
---- 多层应用开发之所以能够成为程序开发的主流技术,是与其具有的数据访问和事务处理能力紧密相关的。多层应用开发在逻辑上则分为三层:客户(表现层),应用服务器(业务层)和数据库(数据层)。客户向服务器发请求,作为中间层的服务器接收请求提供相应的逻辑、性能和目录服务,并最终通过服务器建立与数据库的连接。多层应用开发中很重要的一点是将应用逻辑集中于服务器,这样一个进程便可以为多个客户服务,而不用再为每客户都建立一个服务器进程。下文可作为表现层的一个例子。
---- 二、数据结构
---- 假设我们要打印两项数据,其定义如下:
字段名 数据类型 数据长度
tid char 10
tname char 20
---- 三、创建工程
---- (1)在新建工程中选取“标准 EXE”后按“确定”键,修改工程名为Rptprint,修改Form1的name 属性为 frmreport。增加一个类模块,修改Class1的name 属性为clsreport。如果在“工程”菜单中未发现“添加Data Report”的子菜单,则要进行以下操作,单击“工程”菜单中的“部件”,选中“设计器”中的“Data Report”选项后单击“确定”按钮。此时应在“工程”菜单中发现“添加Data Report”的子菜单,单击该子菜单添加一个Data Report 到工程。
---- (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)引用Microsoft ActiveX Data Objects 2.0 Library类库,做完以上操作后保存工程。
---- 四、编写程序
---- (1)在clsreport 类模块输入如下代码:
Option Explicit
Private RST_RPT As ADODB.Recordset
'定义一个记录集变量
Private Sub Class_Initialize()
Set RST_RPT = CreateObject("ADODB.Recordset")
'创建一个空的记录集
With RST_RPT
.Fields.Append "tid", adChar, 10
.Fields.Append "tname", adChar, 20
'往记录集中添加字段(此例假设只有两个,
如需要可增加多个字段)
.CursorLocation = adUseClient
'设置CursorLocation属性为“客户端游标”
End With
RST_RPT.Open
'打开记录集
Set DataReport1.DataSource = RST_RPT
'设置DataReport1设计器的数据源为 RST_RPT 记录集
End Sub
Private Sub Class_Terminate()
If Not RST_RPT Is Nothing Then
RST_RPT.Close
'关闭记录集
End If
Set RST_RPT = Nothing
'撤消对象
End Sub
Public Function AddRecord(strdata
() As String) As Boolean
On Error GoTo errdo
'错误捕获
With RST_RPT
.AddNew
!tid = strdata(1)
!tname = strdata(2)
'给记录集赋值
.Update
'更新修改
End With
AddRecord = True
'如果成功则返回“真”
Exit Function
errdo:
'可根据需要对错误进行分类处理
'方法可查阅随机文档的“调试代码和处理错误”部分
'此例省略
AddRecord = False
'如果失败则返回“假”
Set RST_RPT = Nothing
'撤消对象
End Function
Public Function Print_Report() As Boolean
On Error GoTo errdo
If Not RST_RPT Is Nothing Then
Set DataReport1.DataSource = RST_RPT
'重置数据源
End If
DataReport1.PrintReport
'直接打印
Print_Report = True
'如果成功则返回“真”
Exit Function
errdo:
Print_Report = False
'如果失败则返回“假”
End Function
Public Function Show_Report() As Boolean
On Error GoTo errdo
If Not RST_RPT Is Nothing Then
Set DataReport1.DataSource = RST_RPT
'重置数据源
End If
DataReport1.Show
'浏览
Show_Report = True
'如果成功则返回“真”
Exit Function
errdo:
Show_Report = False
'如果失败则返回“假”
End Function
---- (2)在frmreport 窗体输入如下代码:
Option Explicit
Private obj As clsReport
'定义局部变量
Private Sub Command1_Click()
Dim b1 As Boolean
Dim sd(2) As String
Dim mg As Integer
sd(1) = Trim(TextID.Text)
sd(2) = Trim(TextName.Text)
'把要打印的数据赋给sd数组,此例的数据来自文本框。
'在多层开发应用中数据源通常是通过业务层和数据层处理
'后返回的记录集(如ADODB.Recordset),把记录集
'赋给sd数组,即可打印。注意要保持记录集的字段数
'与设计器的文本框数一致。
b1 = obj.AddRecord(sd) '增加记录
If b1 = True Then
mg = MsgBox("增加记录成功!", VBOKOnly, "打印消息")
Else
mg = MsgBox("增加记录失败!", vbOKOnly, "打印消息")
End If
End Sub
Private Sub Command2_Click()
Dim b1 As Boolean
Dim mg As Integer
b1 = obj.Show_Report '浏览记录
If Not b1 Then
mg = MsgBox("浏览操作失败!", vbOKOnly, "打印消息")
End If
End Sub
Private Sub Command3_Click()
Dim b1 As Boolean
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash