oracle vba 数组_RSViewSE软件使用VBA做报表【2-2】

第二步、读取数据库的数据并显示

事实上,对于数据库的操作,查询功能应该用的更多一些。在RSViewSE里面,虽然以图形化的方式完成了数据记录功能,但却并没有集成直接读取数据的接口,所以,我们还是需要编写VBA脚本来实现对数据库的读取。

至于将数据读取回来后显示在哪里,这就可以选择了,为了方便,你可以直接显示在SE的画面内,就像之前我们在第一阶段设计的在画面内嵌入Spreadsheet表格控件一样,将读取回来的数据填充在这个表格内。还有个办法,就是在RSViewSE软件之外,使用高级语言编写一个exe程序,在该程序内实现对数据的读取和展示,RSViewSE软件只需要调用其即可。两种方式各有利弊,根据自己的能力选择使用。

示例中,我们使用在SE内嵌入spreadsheet表格控件显示方式实现。后面的高级扩展我们会说到编写外部程序调用。

示例设计:我们设计报表功能应该具有按时间查询功能、按泵站编号查询功能、查询完的数据导出到指定位置、查询完的数据可直接打印。

1)、编写脚本读取Access数据库内表的内容

VBA脚本代码中会涉及一个数据库的连接接口ADODB,它是一种兼容的各类数据库应用程序接口(API),各种数据库都可以。MySQL,PostgreSQL,Interbase,Firebird,Informix,Oracle,MS SQL 7,Foxpro,Access,ADO,Sybase,FrontBase,DB2等。关于此API的使用可自行百度查看。这是一种非常方便的连接数据库的接口。

注意,要在VBA环境中使用ADODB接口程序,需要在VBA的IDE里面引用一个叫Microsoft ActiveX Data Objects x.x Library的东西,根据你自己计算机的情况,勾选最大的版本即可

勾选即可。

我们使用该接口通过ODBC方式访问到已经创建的数据库。通过ADODB接口读取回来的数据库数据会存放在一个记录集Recordset内,我们需要对Recordset进行操作获取内容。

实际操作书接第一章节,将第一章节使用的画面复制一份出来,增加一个DTPicker控件和一个ComboBox控件,第一个是日期时间控件,第二个是下拉框控件。在放个按钮用于触发查询的过程

2、编写脚本,从Access数据库读取数据

因为从Access和从SQL Server里读取数据时SQL 语句会稍有差异,我们需要单独分开说。

思路:将数据库里读回来的数据按数组的形式返回给子函数,这样以后调用的时候就很方便了。先建一个带输入参数和返回值的子函数,其输入参数是一条SQL查询语句,输出参数是一个二维数组

3、调用数据库读取函数,填充到下拉框里面去

思路:下拉框内应该显示数据库内现有的泵站编号,并且可以选择单独查询一个和查询全部。下拉框的内容应当在画面加载时就调用。

4、写读回来的泵站数据到表格里面去

思路:因为使用RSViewSE软件自动存储数据到数据库的功能,我们查询的结果跟我们设计的报表格式很不一样,所以只能每次查询一部分,多次查询再填进去。我们设计定义一个带输入参数的过程,输入的参数为计划写数据的表格的列和每个列要查询的关键字。

注意SQL语句的书写,原则上,SQL语句在这里是一段字符串,可以拼凑,中间还可以嵌入变量。使用SQL语句查询是需要注意日期格式,在查询Access中的日期时间时在两边加上#符号,如#2020/03/22 12:00:00#。另外,在Access中通配符需要注意。

填坑:在Access里面执行SQL语句时,任意字符串的通配符为“*”符号,但是如果把SQL语句放在ODBC里面执行,就要用“%”了。

5、按钮调用写入数据

思路:给表格写入数据之前应该先将表格的内容清空,再写入

6、运行效果

需要项目文件及VBA源码请联系作者私信

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值