GridReport 5.0 报表的使用

 

 连接:

   'GripReport 连接语句  GRID Report 连接到的数据库
    Public ConnectStringForGridReport As String = "Provider=SQLOLEDB.1;Password=password;Persist Security Info=True;User ID=sa;Initial Catalog=DBName;Data Source=SQL Server;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=**PC003;Use Encryption for Data=False;Tag with column collation when possible=False"

 

引用:

      Interop.grproLib,AxInterop.grproLib

定义:

        Imports grproLib

        Private Report0 As New GridppReport

使用:

        Report0.LoadFromFile("" & Application.StartupPath & "\gridreport.grf")
        Report0.DetailGrid.Recordset.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=\\10.10.10.10\IQCDatabase\Access2003.mdb;Password=;Jet OLEDB:Database Password='password'"
        Report0.DetailGrid.Recordset.QuerySQL = "Select * From "'"

        '设置报表查询显示器控件的关联报表对象
        AxGRDisplayViewer1.Report = Report0
        '启动报表运行

         Report.DetailGrid.FixCols = 2         '锁定为两行
        AxGRDisplayViewer1.Start()

 

第二种:多条记录的情况    

                Frm员工信息报表.AxGRDisplayViewer1.Stop()
                AddHandler Report.FetchRecord, AddressOf SimpleEmployeeQuery   '指针 + 地址  这一句可以不加

 

        Report.LoadFromFile(Application.StartupPath & "\reports\GridReport.grf")
        Report.PrepareRecordset()                '这句一定要加 否则出错

 

    Private Structure MatchFieldPairType
        Public grField As IGRField
        Public MatchColumnIndex As Integer
    End Structure      '结构体

 

  Public Shared Sub FillRecordToReport(ByVal Report As IGridppReport, ByVal dt As DataTable)
        Dim MatchFieldPairs() As MatchFieldPairType
        ReDim MatchFieldPairs(Math.Min(Report.DetailGrid.Recordset.Fields.Count, dt.Columns.Count))

        '根据字段名称与列名称进行匹配,建立DataReader字段与Grid++Report记录集的字段之间的对应关系
        Dim MatchFieldCount As Integer
        MatchFieldCount = 0
        Dim I As Integer
        For I = 0 To dt.Columns.Count - 1
            Dim fld As IGRField
            For Each fld In Report.DetailGrid.Recordset.Fields
                If String.Compare(fld.Name, dt.Columns.Item(I).ColumnName, True) = 0 Then
                    MatchFieldPairs(MatchFieldCount).grField = fld
                    MatchFieldPairs(MatchFieldCount).MatchColumnIndex = I
                    MatchFieldCount = MatchFieldCount + 1
                    Exit For
                End If
            Next fld
        Next

        '将 DataTable 中的每一条记录转储到Grid++Report 的数据集中去
        Dim dr As DataRow
        For Each dr In dt.Rows

            Report.DetailGrid.Recordset.Append()

            For I = 0 To MatchFieldCount - 1
                If Not dr.IsNull(MatchFieldPairs(I).MatchColumnIndex) Then
                    MatchFieldPairs(I).grField.Value = dr.Item(MatchFieldPairs(I).MatchColumnIndex)
                End If
            Next

            Report.DetailGrid.Recordset.Post()
        Next
    End Sub   'DataTable的GridReport的填充方式

    Public Shared Sub FillRecordToReport(ByVal Report As IGridppReport, ByVal dr As SqlDataReader)

        Dim MatchFieldPairs() As MatchFieldPairType
        ReDim MatchFieldPairs(Math.Min(Report.DetailGrid.Recordset.Fields.Count, dr.FieldCount))

        '根据字段名称与列名称进行匹配,建立DataReader字段与Grid++Report记录集的字段之间的对应关系
        Dim MatchFieldCount As Integer
        MatchFieldCount = 0
        Dim i As Integer
        For i = 0 To dr.FieldCount - 1
            Dim fld As IGRField
            For Each fld In Report.DetailGrid.Recordset.Fields
                If String.Compare(fld.RunningDBField, dr.GetName(i), True) = 0 Then
                    MatchFieldPairs(MatchFieldCount).grField = fld
                    MatchFieldPairs(MatchFieldCount).MatchColumnIndex = i
                    MatchFieldCount = MatchFieldCount + 1
                    Exit For
                End If
            Next fld
        Next

        'Loop through the contents of the OleDbDataReader object.
        '将 DataReader 中的每一条记录转储到Grid++Report 的数据集中去

        Report.DetailGrid.Recordset.Append()

        For i = 0 To MatchFieldCount - 1

            If Not dr.IsDBNull(MatchFieldPairs(i).MatchColumnIndex) Then
                MatchFieldPairs(i).grField.Value = dr.GetValue(MatchFieldPairs(i).MatchColumnIndex)
            End If
        Next

        Report.DetailGrid.Recordset.Post()

    End Sub           'DataReader的GridReport的填充方式

 

 

客户端: 注册

      regsvr32 grdes50.dll
     regsvr32 gregn50.dll

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于VB.NET,C#,VB,VC,Delphi,BCB,VFP,易语言等。B/S开发适用于ASP.NET,ASP,PHP,JSP等,支持所有WEB服务器。 Grid++Report6.0版主要新增功能 ★引擎方面 1、增加了一个自由表格部件,可以灵活定义各种自由表格,具有单元格合并功能。 2、部件框增加边距设置,边框增加内层与阴影,虚线边框。 3、文字显示增加段间距、首字缩进与两端分散对齐。 4、分组报表可以按某个统计值的大小对分组项进行排序 5、数据源除了OLE DB外,增加XML、JSON与普通文本数据。 6、在编程接口中增加了很多应用函数,如数据压缩、数字格式化、日期时间解析与格式化、打印机与纸型枚举、文件选择对话框等。 7、其它杂项功能,根据多年收集的用户需求来增加与改进功能,如分组相关系统变量、图像旋转显示等。 ★设计器: 1、设计面板具有缩放设计功能。 2、将关联属性归类为组,方便在设计时集中设置与查看。 3、对象浏览窗口与属性窗口可以隐藏,方便在设计很宽的报表时增大设计面板的区域。 4、设计面板大小跟随明细网格总列宽来改变宽度,方便设计大宽度明细网格报表。 5、部件框锁定功能,被锁定的部件框不允许进行可视化拖放。 6、自动在分组头尾中增加统计框,默认为合计函数,并设置相应的对齐列。 7、数据源连接串可以为 XML 或 JSON 数据源,且可以自动生成字段。设计报表时数据源可连接的类型有:各种数据库、XML或JSON文件、产生XML或JSON的网络URL、EXCEL文件、TEXT文件。 8、设计器增加数据提供事件接口,在设计报表时可以用给报表加载自定义数据源。 ★打印与打印预览: 1、横向分页时,在数据不多的情况下,分页直接显示在本页,而不是在下一页。 2、在模板中可以保存默认打印机名称。 3、分组尾支持每页重复打印。 4、如果部件框跨页多次显示了,在新页中再次输出其上下边框。 5、提供编程接口枚举出Windows系统中安装的打印机,以及指定打印机支持的所有纸张类型。 ★查询显示: 1、没有明细网格的报表,背景图可以显示出来。 2、明细数据不多时,表格不会显示下部空白。 ★数据导出: 1、在导出Excel时,能用代码设置页边距等参数 2、在运行时对外观属性的改变可以反映到Excel导出。 ★图表: 1、重新设计图表接口,让图表可视化设计与编程控制更清晰简单。 2、支持更多图表类型,如百分比柱状图、垂直排列的柱图。 3、一个图表中可以混和显示多种不同类型的图形,如一个序列为柱图,另一个序列为曲线图。 4、Y轴可以显示双坐标轴,方便实现双轴柱状图等。 5、图例可以在下方显示,可以多栏显示。 6、增加图表数据记录集,图表数据直接从记录集或XML数据源加载,而不需用代码来加载图表数据。 7、图表方面还有很多细节方面的改进与增强,加强图表功能是本新版本的重要方面。 ★交叉表 1、多数据列交叉表可以将同一列产生的交叉列排列在一起。 2、在合计列中可以排除掉一些列不进行合计。 3、纵向交叉项目列中可以定义统计框或综合文字框表达式,在合计列中关联的字段自动求和,在项目列中关联字段为复制首笔值。 ★子报表: 1、子报表无数据可以自动隐藏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值