系统中报表的使用
报表这块,由于比较生疏,都是自己从网上下载控件,然后看下载后的小例子,现学现卖的。
下面是应用中的一个小模块:
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 不能一起使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构