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
    评论
报表引擎与综合方面: 完全Unicode编码支持,软件内部编码为Unicode,报表模板文字默认保存为UTF-8编码(Unicode的紧凑编码)。 多国语言集成支持,一个程序支持多种语言。内嵌简体中文支持,其它语言文字嵌入到一个对应资源DLL文件,支持一种语言只要进行文字翻译即可。目前版本支持简体中文、繁体中文与英文。 控件界面实现背景换肤(Skin)功能,让控件与用户的软件界面更加融为一体。 界面优化:工具栏与窗口背景进行了美化,工具栏按钮图标采用256色图像。 统计框与统计函数可以统计运算表达式,而不仅仅只是支持一个字段的统计。 增加统计函数:方差与总体方差(VAR/VARP)、标准偏差与总体标准偏差(STDDEV/STDDEVP)、平均偏差(AVEDEV)、偏差平方和(DevSq)、空值个数(COUNTBLANK)、非空值个数(COUNTA)、非重复值个数(DISTINCT)、非空值平均(AVERAGEA)等。 增加部件框自定义绘制功能(CustomDraw),某些绘制要求不能用 Grid++Report 直接达到时,可以用绘制接口在报表脚本或报表事件响应代码中绘制出来 。 记录集字段排序可以指定升序或降序,多个字段排序时,不同字段可以分别指定升降序类别。 图表增加曲线图与气泡图 ,并增加显示坐标线功能。 交叉表可以进行自定义汇总统计,不仅仅只是进行简单的汇总求和,可以指定多种汇总统计方式。 表格中的超长内容可以延伸显示在下一行。 报表打印与预览显示方面: 打印策略增加:根据列的显示文字多少自动调整列的宽度,让所有文字都完整显示出来。 报表在打印预览时,可以将选中文字复制到系统剪贴板,方便向其它软件传递数据。 打印预览增加书签与缩略图导航功能。 单色打印功能:报表预览彩色输出,打印输出采用黑白灰度打印。 画笔与线段的宽度可以更精细的设置到小数位,如0.25、0.5、1.5等,打印输出可以得到更精细的表格线。 实现单独的浮动打印节,这样可以在明细表格旁边加竖排的文字,如票证旁边的‘第一联客户,第二联回单’。 实现表格追加补充空白表格列的功能,让整个表格显得更完整与整齐。 打印显示器的工具栏上可以增加自定义按钮,并有对应事件用来执行对应任务。 报表查询显示方面: 查询显示器可以进行数据分页显示,既可固定表格行数分页,也可根据窗口大小自动分页。 查询显示器中当CTRL或SHIFT键按下时,点击列标题可以按多个列综合排序。 查询显示器的工具栏上可以增加自定义按钮,并有对应事件用来执行对应任务。 报表数据导出方面: 整个报表导出功能进行了很大改造,导出与打印显示更加一致:位置更匹配,内容更多。 实现子报表数据完整导出。 增加RTF格式导出,方便用Microsoft Word打开导出的报表文件。 导出网页(HTML)支持图片导出。 报表设计器方面: 预览视图与查询视图集成到设计器控件中,设计器控件自身提供普通视图、页面视图、预览视图与查询视图,报表开发者可以轻松实现与 Grid++Report 本身的设计器程序类似的自定义报表设计功能。 增加即时提示(Tooltip)功能:在设计器中,当鼠标悬停在不能完整显示的文字上面时,即时提示窗口弹出并完整显示出文字。 在拖动与缩放部件框的时候,在标尺上指示位置。 更精细控制属性项的显示,根据属性名称控制是否公开某个属性。 下载地址:http://www.rubylong.cn/download/Grid++Report5.0_beta.zip ,请将以前安装的Grid++Report卸载后再安装这个版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值