• VB查询数据库之报表——机房收费系统总结(六)


    我们要用一个软件做报表的模板、然后在VB里面添加部件、代码调用模板,详细步骤如下。


    一、下载安装


    首先做报表要下载安装Grid++Report 4.5 报表设计器

    点击下载(内含破解补丁)


    二、制作模板


    1、打开软件——插入——页眉、明细网格、页脚、如图


    2。制作页眉


    静态框:好像Label,能写入文字并显示

    综合文字框:可以写入函数、变量等、跟文字结合并显示、在这里我们用作显示日期



    上图右下角[#date3#][#time#]制作是自定义了date3跟time这两个变量、并且在VB代码中付给他俩当前的日期与时间、做法如下。


    (1)新建参数


    这里叫做参数、其实也是数据的容器、我还是习惯叫变量、都差不多

    在软件的右边如图、参数集合---插入---参数



    (2)更改属性


    这个就是相当于给参数或者说变量命名、定义格式、定义数据类型

    名称:VB付给这个参数值的时候要写

    格式:日期是yyyy/mm/dd时间的是hh:mm:ss如图

    我一共定义了4个参数、

    date1和date2是显示周报表查询从日期1到日期2的日期如图

    date3和time是显示当前日期和时间

    具体效果如图



    (3)放到页眉上


    参数定义好、下面就放上去了、首先在页眉新建一个综合文字框

    然后双击文字框、弹出窗口点击、插入域-----引用类型选参数----然后选择参数



    效果如图


    3、制作表格


    (1)连接数据库(从左到右依次点击)


    ——查询的SQL语句写自己的表

    记得点下测试、一般没问题、有问题的话看下SQL语句是否写错



    (2)生成字段和列


    先点击1、然后点击2、便可以自动执行刚刚的SQL语句获得表里的字段和行

     


    页眉就不说了、直接用静态框就可以了

    1.添加Grid++Report 的控件、如图

    2.选择名字为GRDisplayViewer的控件、放到From上(蓝色第一个)

    3.其他控件也放上去、名字如下图(跟我名字一样才能用.名字不一样要改代码)



    4.开始时间和结束时间用的是时间控件DTPicter时间控件,部件载入名上图有(本人忘了是哪个了……)


    5.引用(菜单--工程--引用)引用Grid++Re…………如图




    6.代码(复制进去应该就行了、有详细备注、实在不懂的可以点我

    [vb] view plaincopyprint?
    1.Dim WithEvents Report As grproLibCtl.GridppReport  '实例化报表</SPAN>  
    2.'报表刷新  
    3.Private Sub cmdCheckDay_Click()  
    4.    Dim txtsql As String  
    5.    '判定终止日期不能小于起始日期  
    6.    If StartDateView.Value > EndDateView.Value Then '条件限制  
    7.        MsgBox "终止日期不能小于起始日期!", ,"温馨提示"  
    8.        Exit Sub  
    9.    End If  
    10.  
    11.    Report.DetailGrid.Recordset.ConnectionString = ConnectString '数据源连接数据库直接调用写好的模块内容  
    12.    If txtBalance.Text = "" Then '判断上期text里是否为空  
    13.        '查询日期1到日期2的记录  
    14.        txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & _  
    15.                 StartDateView.Value & "' and '" & EndDateView.Value & "'"  
    16.    Else  
    17.        '如果上期余额的text里不为空则查询日期1到日期2中、上期余额是文本中的记录  
    18.        txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & _  
    19.                 StartDateView.Value & "' and '" _  
    20.                 & EndDateView.Value & "' And Balance = '" & txtBalance.Text & "'"  
    21.    End If  
    22.  
    23.    '显示报表中的内容  
    24.    Report.DetailGrid.Recordset.QuerySQL = txtsql  
    25.    grdWeekliyBill.Refresh  
    26.  
    27.    '报表模板上的4个日期或时间赋值  
    28.    Report.ParameterByName("Date1").Value = Format$(StartDateView.Value, "yyyy-mm-dd")  
    29.    Report.ParameterByName("Date2").Value = Format$(EndDateView.Value, "yyyy-mm-dd")  
    30.    Report.ParameterByName("Date3").Value = Date  
    31.    Report.ParameterByName("time").Value = Time  
    32.  
    33.End Sub  
    34.'预览  
    35.Private Sub cmdpreview_Click()  
    36.    Report.PrintPreview (True)  
    37.End Sub  
    38.  
    39.'打印  
    40.Private Sub cmdput_Click()  
    41.    Report.[Print] (True)  
    42.End Sub  
    43.  
    44.'载入窗体  
    45.Private Sub Form_Load()  
    46.    '创建报表对象  
    47.    Set Report = New grproLibCtl.GridppReport  
    48.    '载入报表模版文件  
    49.    Report.LoadFromFile (App.Path & "周报表.grf")  
    50.    '设置数据连接串  
    51.    Report.DetailGrid.Recordset.ConnectionString = ConnectString  
    52.  
    53.    '查询语句  
    54.    txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & StartDateView.Value & "' and '" & EndDateView.Value & "'"  
    55.    Report.DetailGrid.Recordset.QuerySQL = txtsql '执行  
    56.    '显示报表中的内容  
    57.    grdWeekliyBill.Report = Report  
    58.    grdWeekliyBill.Start  
    59.  
    60.    '报表模板上的4个日期或时间赋值  
    61.    Report.ParameterByName("Date1").Value = Format$(StartDateView.Value, "yyyy-mm-dd")  
    62.    Report.ParameterByName("Date2").Value = Format$(EndDateView.Value, "yyyy-mm-dd")  
    63.    Report.ParameterByName("Date3").Value = Date  
    64.    Report.ParameterByName("time").Value = Time  
    65.  
    66.End Sub  
    Dim WithEvents Report As grproLibCtl.GridppReport  '实例化报表</SPAN>
    '报表刷新
    Private Sub cmdCheckDay_Click()
        Dim txtsql As String
        '判定终止日期不能小于起始日期
        If StartDateView.Value > EndDateView.Value Then '条件限制
            MsgBox "终止日期不能小于起始日期!", ,"温馨提示"
            Exit Sub
        End If
    
        Report.DetailGrid.Recordset.ConnectionString = ConnectString '数据源连接数据库直接调用写好的模块内容
        If txtBalance.Text = "" Then '判断上期text里是否为空
            '查询日期1到日期2的记录
            txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & _
                     StartDateView.Value & "' and '" & EndDateView.Value & "'"
        Else
            '如果上期余额的text里不为空则查询日期1到日期2中、上期余额是文本中的记录
            txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & _
                     StartDateView.Value & "' and '" _
                     & EndDateView.Value & "' And Balance = '" & txtBalance.Text & "'"
        End If
    
        '显示报表中的内容
        Report.DetailGrid.Recordset.QuerySQL = txtsql
        grdWeekliyBill.Refresh
    
        '报表模板上的4个日期或时间赋值
        Report.ParameterByName("Date1").Value = Format$(StartDateView.Value, "yyyy-mm-dd")
        Report.ParameterByName("Date2").Value = Format$(EndDateView.Value, "yyyy-mm-dd")
        Report.ParameterByName("Date3").Value = Date
        Report.ParameterByName("time").Value = Time
    
    End Sub
    '预览
    Private Sub cmdpreview_Click()
        Report.PrintPreview (True)
    End Sub
    
    '打印
    Private Sub cmdput_Click()
        Report.[Print] (True)
    End Sub
    
    '载入窗体
    Private Sub Form_Load()
        '创建报表对象
        Set Report = New grproLibCtl.GridppReport
        '载入报表模版文件
        Report.LoadFromFile (App.Path & "周报表.grf")
        '设置数据连接串
        Report.DetailGrid.Recordset.ConnectionString = ConnectString
    
        '查询语句
        txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & StartDateView.Value & "' and '" & EndDateView.Value & "'"
        Report.DetailGrid.Recordset.QuerySQL = txtsql '执行
        '显示报表中的内容
        grdWeekliyBill.Report = Report
        grdWeekliyBill.Start
    
        '报表模板上的4个日期或时间赋值
        Report.ParameterByName("Date1").Value = Format$(StartDateView.Value, "yyyy-mm-dd")
        Report.ParameterByName("Date2").Value = Format$(EndDateView.Value, "yyyy-mm-dd")
        Report.ParameterByName("Date3").Value = Date
        Report.ParameterByName("time").Value = Time
    
    End Sub
    
    



     
     
     

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    static inline和inline的区别——stm32实测
    实现自动构建编译javaweb项目并发布到N台服务器
    手把手教你用Mysql-Cluster-7.5搭建数据库集群
    HAProxy实现mysql负载均衡
    使用LVS+keepalived实现mysql负载均衡的实践和总结
    阿里巴巴Java开发手册———总结
    阿里巴巴Java开发手册———个人追加的见解和补充(五)
    阿里巴巴Java开发手册———个人追加的见解和补充(四)
    Chapter 3 Phenomenon——24
    阿里巴巴Java开发手册———个人追加的见解和补充(三)
  • 原文地址:https://www.cnblogs.com/lucari/p/4608595.html
Copyright © 2020-2023  润新知