使用在线设计器设计报表之前,请在系统管理门户定义好数据源备用。
用浏览器打开系统管理门户(http://localhost:8080/admin)。选择左侧菜单栏的【数据源】,再点击画面中部数据源列表右上方的【新建数据源】,如下图:
您将看到一个网页对话框,如下图:
其中,【提供程序】下拉框列出了系统支持的数据提供程序类型,通过这些提供程序,系统支持各种关系型数据库、XML文件、CSV文件、JSON等各种数据源。
Microsoft Sql Client Provider:用于定义SQL Server数据源。
Microsoft OleDb Provider:用于定义各种关系型数据库的数据源。
Microsoft Odbc Provider:用于定义各种关系型数据库的数据源。
Oracle Client Provider:用于定义Oracle数据源。
Xml Provider:用于定义XML数据源。
Json Provider:用于定于JSON数据源。
Csv Provider:用于定义CSV文件数据源。
根据数据源类型的不同,选择不同的【提供程序】类型,再输入相应的连接字符串内容,点击【保存】按钮,即可完成数据源的定义。
为确保连接字符串输入内容的正确性,可在保存之前点击【连接测试】按钮进行验证。
数据源保存成功,您将看到新创建的数据源出现在数据源列表中,如下图:
以下介绍不同类型数据源的定义方法。
MySQL数据源
如果数据源是MySQL数据库,可通过ODBC方式进行连接。
定义数据源之前,请从以下网址下载MySQL数据库的ODBC驱动程序并安装:
https://dev.mysql.com/downloads/connector/odbc/
请根据报表服务器操作系统的类型,选择下载32位或64位的驱动程序版本。
如果安装ODBC驱动程序失败,请先从微软网站下载安装Visual C++ 2010 可再发行软件包。对于64位操作系统,该软件包也必须同时安装32位和64位的版本:
64位版本:vcredist_x64.exe https://www.microsoft.com/zh-CN/download/details.aspx?id=14632
32位版本: vcredist_x86.exe https://www.microsoft.com/zh-CN/download/details.aspx?id=5555
MySQL数据源的定义方法如下:
(1)在数据源的【类型】处选择"Microsoft Odbc Provider"。
(2)在【连接字符串】中,如下形式的连接字串。
Driver={MySQL ODBC 5.3 UNICODE Driver}; Server=?; Database=?; User=root; Password=???; Option=3;
其中,Server参数为MySQL数据库服务器的IP地址,Port参数为MySQL服务器的端口号,默认为3306,Database参数为数据库名。
例如:
Driver={MySQL ODBC 5.3 UNICODE Driver}; Server=192.168.1.23; Port=3306; Database=MyDb; User=root; Password=123; Option=3;
(3)点击【连接测试】按钮验证连接字串的正确性,再点击【保存】按钮。
基于MySQL数据源定义数据集时,如果提示错误信息,请按如下方法排错:
(1)提示"xxx is not allowed to connect to this MySQL server"
这是因为服务器端禁止客户端访问,可通过两种方法解决:
(a)在MySQL服务器上执行GRANT授权语句,如:
GRANT ALL PRIVILEGES ON . TO 'root'@'192.168.1.3′ IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
(b)在MySQL服务器上修改user表中的记录,将host字段的值更新为百分号(%):
mysql>use mysql
mysql>GRANT SELECT,INSERT,UPDATE,DELETE ON \[db_name\].* TO \[username\]@\[ipadd\] identified by '\[password\]';
mysql>update user set host = '%' where user = 'root';
(2)提示错误:08S01 Lost connection to MySQL server at 'waiting for initial communication packet'
这是通讯设置问题,解决方法如下:
(a)在/etc/my.cnf文件的\[mysqld\]中加上 skip-name-resolve,然后重启MySQL。
(b)在/etc/hosts文件中添加【IP地址 主机名】映射,例如:
192.168.1.1 localhost
(3)参数查询不出结果,可能是参数形式问题,参数必须是问号形式,如:
select * from userinfo where date_format(duedate,'%Y') = ? and ID<=?
多个参数时,按数据集定义对话框中【参数】列表的次序来匹配。
DB2数据源
如果数据源是DB2数据库,可通过ODBC方式进行连接。
定义数据源之前,请从以下IBM网址下载DB2数据库的客户端并安装: http://www.ibm.com/developerworks/cn/downloads/im/udbexp/
请注意:DB2客户端组件包含DB2的ODBC驱动程序和其他必要组件。仅仅下载安装单独的ODBC驱动程序是不够的。
安装DB2客户端组件时,建议勾选所有功能部件。
DB2数据源的定义方法如下:
(1)在数据源的【类型】处选择"Microsoft Odbc Provider"。
(2)在【连接字符串】中,如下形式的连接字串。
Driver={IBM DB2 ODBC DRIVER}; Database=myDB; Hostname=myServer; Port=xxxx; Protocol=TCPIP; Uid=myUsername; Pwd=myPassword;
其中,Hostname参数为DB2数据库服务器的IP地址,Port参数为服务端口号,Database参数为数据库名。例如:
Driver={IBM DB2 ODBC DRIVER}; Database=Sample; Hostname=localhost; Port=5000; Protocol=TCPIP; Uid=db2admin; Pwd=Db123456;
(3)点击【连接测试】按钮验证连接字串的正确性,再点击【保存】按钮。
注意:
基于DB2数据源定义数据集时,SQL语句中的表和视图名之前,应加上Owner前缀,例如:
select * from Staff
需要修改为:
select * from Administrator.Staff
MongoDB数据源
MongoDB是典型的非关系型数据库,其操作与普通关系型数据库差异较大,以下详细介绍如何使用葡萄城报表设计器,设计以MongoDB数据库为数据源的报表。
(1)下载安装MongDB的ODBC驱动程序
MongoDB的ODBC驱动程序可从以下网址下载: http://www.simba.com/drivers/mongodb-odbc-jdbc/
请根据操作系统类型,选择安装32位或64位的驱动程序。安装文件分别为:
Simba MongoDB 2.2 32-bit.msi和Simba MongoDB 2.2 64-bit.msi
安装后请注意要将从simba.com获得的许可文件SimbaMongoDBODBCDriver.lic复制到安装目录下的lib子目录中(C:\Program Files\Simba MongoDB ODBC Driver\lib)。
(2)启动MongoDB的服务
(a)创建C:\MongoData\db1子目录,作为数据库文件的存储文件夹。
(b)运行cmd打开命令行窗口,转到MongoDB的安装目录下的Bin子目录,例如:C:\Program Files\MongoDB\Server\3.4\bin。执行以下命令:
mongod.exe --dbpath C:\MongoData\db1
(3)插入示例数据
(a)运行cmd打开命令行窗口,转到MongoDB的安装目录下的Bin子目录,例如:C:\Program Files\MongoDB\Server\3.4\bin。执行以下命令:
mongo
(b)创建集合(相当于数据库的表)
> db.createCollection("Emp")
其中,Emp为集合名,相当于数据库的表名。
(c)插入文档(相当于数据库的记录)
> db.Emp.insert({name:'John', age: 30})
(4)设计MongoDB数据源
(a)打开报表设计器,添加新数据源。
(b)选择【提供类型】为Microsoft Odbc Provider。
(c)输入如下形式的连接字符串:
Driver={Simba MongoDB ODBC Driver};Server=<MongoDB数据库服务器IP>; Port=27017;
完整的连接字串形如:
Driver=Simba MongoDB ODBC Driver; Server=\[ServerInfo\];
Port=\[PortNumber\]; Database=\[MongoDBDatabase\];
authMechanism=SCRAM-SHA-1或GSSAPI或PLAIN;
Driver=Simba MongoDB ODBC Driver; Server=\[ServerInfo\];
(5)设计MongoDB数据集
(a)在新添加的MongoDB数据源下添加新数据集。
(b)在【查询】部分输入SQL语句。
如: select * from Emp
其中,Emp就是MongoDB的集合名。
(6)设计报表表格
(a)在设计区拖放一个表格元素。
(b)设置表格字段绑定。
Excel数据源
葡萄城报表系统支持Excel文件数据源,对于无法直接访问的业务数据库,可将业务数据导出为Excel文件,然后基于这些文件生成报表。
定义Excel数据源的方法如下:
(1)在数据源的【类型】处选择"Microsoft Odbc Provider"。
(2)在【连接字符串】中,如下形式的连接字串:
如果是Excel 2003以及更早的XLS格式文件,连接字串形如:
Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; Dbq=C:\...\xxx.xls;
如果是Excel 2007或者更晚的XLSX格式文件,连接字串形如:
Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=C:\...\xxx.xlsx;
(3)点击【连接测试】按钮验证连接字串的正确性,再点击【保存】按钮。
注意:
(1)Excel的ODBC驱动程序是由Access数据库引擎(Database Engine)提供的。可从下面的网址下载: https://www.microsoft.com/en-US/download/details.aspx?id=13255
(2)在64位操作系统中,报表服务要求安装64位的Access引擎,而32位的Office软件可能已经安装了32位的Access引擎。但是Windows系统不允许同时安装32位和64位的Access数据库引擎,因此,在64位操作系统上,如果要安装Office软件,请安装64位的Office版本。
(3)为Excel数据源添加数据集时,请注意SQL语句中,表名应为Excel工作表的名称加上美元符($),例如:
select [ID],[名称] from [Sheet1$]
Access 数据源
如果数据源是微软的Access数据库,可通过OLEDB方式进行连接。定义Access数据源的方法如下:
(1)在数据源的【类型】处选择"Microsoft OleDb Provider"。
(2)在【连接字符串】中,如下形式的连接字串:
provider=Microsoft.ACE.OLEDB.12.0;
data source=C:\temp\Access\Database1.mdb;
(3)点击【连接测试】按钮验证连接字串的正确性,再点击【保存】按钮。
注意:
(1)Access的OLEDB提供程序是由Access数据库引擎(Database Engine)提供的。可从下面的网址下载: https://www.microsoft.com/en-US/download/details.aspx?id=13255
(2)在64位操作系统中,报表服务要求安装64位的Access引擎,而32位的Office软件可能已经安装了32位的Access引擎。但是Windows系统不允许同时安装32位和64位的Access数据库引擎,因此,在64位操作系统上,如果要安装Office软件,请安装64位的Office版本。