系统中报表的使用
报表这块,由于比较生疏,都是自己从网上下载控件,然后看下载后的小例子,现学现卖的。
下面是应用中的一个小模块:
Dim WithEvents Report As grproLibCtl.GridppReport ’‘声明report具有报表控件的事件
Private Sub cmdPrint_Click() '打印报表
'因为报表对象的 Print 方法名与 VB 内部定义有冲突,所以要用中括号括起来
Report.[Print] (True)
End Sub
Private Sub cmdPrintPreview_Click() '打印预览
Report.PrintPreview (True)
End Sub
Private Sub Form_Load()
Set Report = New grproLibCtl.GridppReport '实例化一个报表
'载入报表模板文件
Report.LoadFromFile (App.Path & "\Checkweek.grf")
‘设置数据连接串
Report.DetailGrid.Recordset.ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.24.58;Initial CataLog=charge_my;UID=sa;PWD=123456"
GRDisplayViewer1.Report = Report '查看报表
GRDisplayViewer1.Start '显示报表
End Sub
'初始化,将DTPicker取得的时间转化成报表事件中字符串
'DTPicker是显示日期的控件
Private Sub Report_Initialize()
Report.ParameterByName("BeginDate").AsString = Format(DTPicker1.Value, "yyyy-mm-dd")
Report.ParameterByName("EndDate").AsString = Format(DTPicker2.Value, "yyyy-mm-dd")
End Sub
如果不用DTPicker控件的话,方法也可以
Dim withEvents Report As grproLibCtl.GridppReport ‘声明report具有报表控件的事件
Dim starttime As Date
Dim endtime As Date
Private Sub cmdpreview_Click()
Report.PrintPreview (True) ‘报表预览
End Sub
Private Sub cmdprint_Click()
Report.[Print] (True) ‘打印报表
End Sub
Private Sub cmdrefresh_Click()
Dataview.Stop ‘刷新报表
Set Report = New grproLibCtl.GridppReport ‘实例化一个报表
Report.LoadFromFile (App.Path & "\Checkweek.grf")‘加载报表文件
Report.DetailGrid.Recordset.connectionstring = "filedsn=andy.dsn;UID=sa;pwd=123456"
‘建立连接,也可以在创建报表的时候
Report.DetailGrid.Recordset.QuerySQL = "select * from daily_account where daily_time between '" & starttime & "' and '" & endtime & "'" ‘报表查看的内容
Dataview.Report = Report ‘查看报表
Dataview.Start ‘开始显示
End Sub
以上两种方法,其实相似的很,主要以掌握其实用为目的。
对于“dim withevents xx as adodb.recordset<br />”的理解:
其实这个声明,也没有什么难的。WithEvents 关键字,指定变量xx将用于处理对象的事件。可以通过提供类名来指定对象类型,该类是创建这个xx对象的类。<br />说明 xx 是一个用来响应由 ActiveX 对象触发的事件的对象变量。只有在类模块中才是合法的。使用 WithEvents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组。New 和 WithEvents 不能一起使用。