---- (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
Dim mg As Integer
b1 = obj.Print_Report '打印报表
If Not b1 Then
mg = MsgBox("打印操作失败!", vbOKOnly, "打印消息")
End If
End Sub
Private Sub Command4_Click()
Unload Me
'关闭窗口
End Sub
Private Sub Form_Load()
Set obj = New clsReport
'创建对象实例
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set obj = Nothing
'撤消对象
End Sub