|
本帖最后由 真主 于 2013-11-1 19:00 编辑
上次讲了VB调用报表的基本方法,可他无法实现动态调用,接下来我们要完成几个功能:
1、控件大小与窗体一样
2、在当前目录下建一个Reports文件夹,将报表文件统一放在里面,
3、在当前目录下建一个tool文件夹,将动态调用的报表名与报表数据源路径存入在tool文件夹中的print.txt文件夹中(后续在access打印时,动态向print.txt文件中写入,从而实现动态应用)
4、在窗体上新增两个Label控件,分别为Label1与Label2,另加一个框:Shape1
VB的最终代码如下:- Dim WithEvents Report As grproLibCtl.GridppReport
- Private Sub Form_Load()
- Me.GRPrintViewer1.Width = Me.Width - Shape1.Width
- Me.GRPrintViewer1.Height = Me.Height - Shape1.Height
- Label1.Caption = ""
- Va_FullName1 = App.Path & "\tools\Print.txt"
- '====创建文件
- If Dir(Va_FullName1, vbDirectory) = "" Then
- Set fs = CreateObject("Scripting.FileSystemObject")
- Set D = fs.CreateTextFile(Va_FullName1, True)
- End If
- '====信息读取
- Dim Va_i1 As Integer
- '读取文本文件信息,获取Server信息
- '----------------------------------------------------
- Va_lngHandle1 = FreeFile(0) '获得文件的句柄
-
- Open Va_FullName1 For Input As Va_lngHandle1 'For后面的参数表示以何种方式打开文件,Input是读取,Output是覆盖写入,Append是追加写入
- Do While Not EOF(Va_lngHandle1) '循环直到文件尾
- Line Input #Va_lngHandle1, strLine '每次读取一行存放在strLine变量中
- If Va_i1 = 0 Then Va_A1 = strLine
- If Va_i1 = 1 Then Va_A2 = strLine
- Va_i1 = Va_i1 + 1
- Loop '显示得到的全部分内容
- Close Va_lngHandle1 '关闭文件
- '====Server信息读取
- Label1.Caption = Va_A1
- Label2.Caption = Va_A2
- '改为全路径
- If Mid(App.Path, Len(App.Path), 1) = "" Then
- Label2.Caption = App.Path & "Reports" & Label2.Caption
- ' Label1.Caption = App.Path & Label1.Caption
- Else
- Label2.Caption = App.Path & "\Reports" & Label2.Caption
- ' Label1.Caption = App.Path & "" & Label1.Caption
- End If
- '==========================================================
- '创建报表对象
- Set Report = New grproLibCtl.GridppReport
- '载入报表模板文件,必须保证 Grid++Report 的安装目录在‘C:\Grid++Report 4.5’下,
- '关于动态设置报表路径与数据绑定参数请参考其它例子程序
- ' Report.LoadFromFile ("C:\Grid++Report 5.0\Samples\Reports\1a.简单表格.grf")
- ' Report.DetailGrid.Recordset.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Grid++Report 5.0\Samples\Data\Northwind.mdb"
- Report.LoadFromFile (Label2.Caption)
- Report.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Label1.Caption & ";password=" '设定参数集合的数据源
- Report.DetailGrid.Recordset.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Label1.Caption & ";password=" '设定明细网格的数据源
- '设置报表查询显示器控件的关联报表对象
- GRPrintViewer1.Report = Report
- '启动报表运行
- GRPrintViewer1.Start
-
- End Sub
- Private Sub Form_Resize()
- Me.GRPrintViewer1.Width = Me.Width - Shape1.Width
- Me.GRPrintViewer1.Height = Me.Height - Shape1.Height
- End Sub
复制代码 |
|