报表查询功能
您可以应用OnceIO实现报表查询功能,从现有报表中查找相应信息并在网页上显示出来。
下图展示了某Access环境保存的用户信息报表UserInfo,以查询该报表中内容为例,向您介绍OnceIO报表查询功能的实现方法。
驱动及数据库安装
在OnceIO中访问access报表,需要搭建nodejs和access的接口,可以借助一个基于nodejs的access驱动程序实现。您可以选择合适的安装目录(此处,我们安装在E:\node-db-access文件夹中),在cmd窗口中执行:
npm install node-adodb
如果当前目录下尚未安装onceio,需要重新进行安装,即在cmd当前目录下执行:
npm install onceio
服务器调用及配置
创建js文件,首先获取onceio服务器模块,并实例化onceio对象app;获取node-adodb服务器模块,并将全局调试开关设置为true。
var OnceIO = require('onceio')
var app = OnceIO()
var ADODB = require('node-adodb');
ADODB.debug = true;
然后,需要初始化数据库连接参数:
// Connect to the MS Access DB
var connection = ADODB.open('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=QueryChart.accdb;Persist Security Info=False;');
ADODB.open函数的三个参数含义分别为:Provider为服务提供者的名称,Data Source代表需要查询的数据源,Persist Security Info为是否保存安全信息(详细解释参见persist security info)。其中Data Source中数据源路径可填写绝对路径,也可填写相对路径,在填写路径时,需要对“\”进行转义,即用“\"代替。
报表查询
以查询UserInfo报表中用户名信息为例,访问‘/dataquery/Username/:name‘,路径中’:name‘为变量,可用实际需要查询的姓名代替,内容被保存在req.params.name中。
ADODB.query()执行有返回值的SQL语句,“*” 代表返回所查询到信息所在栏对应的所有内容,方括号中UserInfo即为待查找内容所在表格,like后双引号中部分可以匹配任意一段含有req.params.name内容的字符串。
app.get('/dataquery/Username/:name', function(req, res) {
// Query the DB
connection
.query('SELECT * FROM [UserInfo] where Username like "%' + req.params.name + '%" ')
.on('done', function (data){
res.type('json')
res.send(JSON.stringify(data.records, ' ', ' '))
})
.on('error', function() {
res.send({ error: 'The info if not found' })
})
})
查询结果
若查询到相关信息,以json文件形式,在网页上返回查询到的表单中响应内容,否则,返回’The Info is not found'.