周报表,让我纠结了好几天,今天做一点点,发现实现不了,于是又留到第二天,就这样,一个报表让我挂了大概四五天吧。
表新建:
1:点击“插入”——分别选择“报表头、报表尾、页眉、明细网格”
3:点击“插入”——选择“综合文字框”,在综合文字框中设置参数“StartData”和“EndData”
即: EndData同StartData一样
在这里点击“测试”后可能会出现这样一个窗体:
第一:换一种连接方式,用sa身份验证、windows身份验证、OLEDB连接数据库、ODBC连接数据库等;
这样就完成了对报表的建立,剩下的,也就是VB与报表连接,在VB中,报表的显示问题。
报表与VB交互
1:界面:
2:添加部件并报表实例化
WithEvents注意:处理时间源所引发的事件
- Dim WithEvents Report As grproLibCtl.GridppReport '实例化报表
变量 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:最总显示结果
学习,让我在这过程中纠结、郁闷,可当我明白、懂得后,却又是一阵阳光,为了那一丝阳光,我们不断努力着,追求着~~~~~~~~