现在的位置: 首页 > 综合 > 正文

机房收费系统(三)——VB与报表

2012年09月10日 ⁄ 综合 ⁄ 共 2725字 ⁄ 字号 评论关闭


      周报表,让我纠结了好几天,今天做一点点,发现实现不了,于是又留到第二天,就这样,一个报表让我挂了大概四五天吧。

表新建:

     

    1:点击“插入”——分别选择“报表头、报表尾、页眉、明细网格”

    2:点击“插入”——选择“静态框”,在静态框中添加文字信息

    3:点击“插入”——选择“综合文字框”,在综合文字框中设置参数“StartData”和“EndData”

          即:  EndData同StartData一样

             


   4:点击“SQL”,完成数据库连接

         


         在这里点击“测试”后可能会出现这样一个窗体:

                                


         这是报表与数据库连接时发生的错误,解决办法是:

                第一:换一种连接方式,用sa身份验证、windows身份验证、OLEDB连接数据库、ODBC连接数据库等;

                第二:数据库连接使用模块中连接数据库的语句。

  5:点击“Clm(根据字段自动生成列)”完成列的设置

          


6:双击标题行中的字段,完成对标题行的设置

        


这样就完成了对报表的建立,剩下的,也就是VB与报表连接,在VB中,报表的显示问题。

报表与VB交互

1:界面:
       

2:添加部件并报表实例化
 Dim WithEvents Report As grproLibCtl.GridppReport  '实例化报表

     WithEvents注意:处理时间源所引发的事件

                                 变量 Report将用于处理对象的事件。可以通过提供类名来指定对象类型,该类是创建这个对象的类。 
                                 WithEvents   变量不能是派生对象变量。也就是说,不能把它声明为   As   Object—当声明该变量时必须指定类名
                                 不能把 WithEvents 变量声明为  As  New。必须明确地创建事件源对象,并将它赋给   WithEvents   变量
                                 不能在标准模块中声明   WithEvents   变量。只能在类模块、窗体模块以及其它定义类的模块中声明
                                 不能创建   WithEvents   变量数组

3:VB中写入程序
      窗体加载中:          
Private Sub Form_Load()

    '创建报表对象
    Set Report = New grproLibCtl.GridppReport
    '载入报表模版文件
    Report.LoadFromFile (App.Path & "\周报表.grf")
    '设置数据连接串
    Report.DetailGrid.Recordset.ConnectionString = "provider=SQLOLEDB;server=zhudan-pc;database=charge1_sys;integrated security =SSPI"
    '用来使grdWeekliyBill报表查询器控件显示报表中的内容
    grdWeekliyBill.Report = Report
    grdWeekliyBill.Start

    Report.ParameterByName("StartDate").Value = Format$(StartDateView.Value, "yyyy-mm-dd")
    Report.ParameterByName("EndDate").Value = Format$(EndDateView.Value, "yyyy-mm-dd")

    '日期控件不可见
    StartDateView.Visible = False
    EndDateView.Visible = False

End Sub

    刷新:

Private Sub cmdRefresh_Click()    '账单刷新

    Dim strSQL As String
    Dim strMsg As String
    Dim objRsWeekliyBill As ADODB.Recordset
    Dim objRsDaliyBill As ADODB.Recordset

    If StartDateView.Value > EndDateView.Value Then '条件限制
        MsgBox "终止日期不能小于起始日期!", vbOKOnly + vbExclamation, "警告"
        Exit Sub
    End If

    '日期的选定
    strSQL = "select * from DayCheckInfo where date between'" & Format$(StartDateView.Value, "yyyy - mm - dd") & "'" & " and'" & Format$(EndDateView.Value, "yyyy-mm-dd") & "'"
    Set objRsDaliyBill = ExecuteSQL(strSQL, strMsg)

    strSQL = "select * from WeekCheckInfo"
    Set objRsWeekliyBill = ExecuteSQL(strSQL, strMsg)
    Do While objRsWeekliyBill.EOF = False
        objRsWeekliyBill.Delete
        objRsWeekliyBill.MoveNext
    Loop

    '更新到日结表中
    Do While objRsDaliyBill.EOF = False '判断是否有数据
        With objRsWeekliyBill
            .AddNew
            .Fields(0) = objRsDaliyBill.Fields(0)
            .Fields(1) = objRsDaliyBill.Fields(1)
            .Fields(2) = objRsDaliyBill.Fields(2)
            .Fields(3) = objRsDaliyBill.Fields(3)
            .Fields(5) = objRsDaliyBill.Fields(4)
            .Fields(4) = objRsDaliyBill.Fields(5)
            .Update
            objRsDaliyBill.MoveNext
        End With
    Loop
    grdWeekliyBill.Refresh  '刷新

    Report.DetailGrid.Recordset.QuerySQL = "select * from weekcheckinfo where date between '" & StartDateView.Value & "' and '" & EndDateView.Value & "'"

         我的报表之所以不按照我的“要求”来检索某一个日期内的数据,就是因为少了最后一句话。


4:最总显示结果
     

        学习,让我在这过程中纠结、郁闷,可当我明白、懂得后,却又是一阵阳光,为了那一丝阳光,我们不断努力着,追求着~~~~~~~~
    


抱歉!评论已关闭.