本帖最后由 KearneyKang 于 2020-10-9 10:03 编辑
本文将介绍ActiveReports通过ODBC直连mysql数据库,并实现动态切换数据源;另外一篇AR动态切换数据源实现方案(jsp调用ar报表服务)https://gcdn.grapecity.com.cn/fo ... 80249&fromuid=49872(出处: 葡萄城产品技术社区)是程序执行sql
本篇将实现在AR直连数据库执行查询的时候动态切换数据源的实现方式:
首先上图:
1:设置DataSource类型为 Odbc Provider
2:连接字符串:(测试地址)
- Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Port=3306;Database=dba;User=root;Password=123456;Option=3;
复制代码
3:新建dataset并编写sql
注意:需要下载 mysql odbc驱动
我使用的是 mysql 8 https://downloads.mysql.com/arch ... bc-8.0.17-win32.msi
其他版本官网直接下载https://downloads.mysql.com/archives/c-odbc/,注意要下载 win32 版本的,AR本身就是win32的嘛;
在ReportService中实现动态切换数据源:
- public class ReportWebService : GrapeCity.ActiveReports.Web.ReportService
- {
- PageReport pageReport;
- PageDocument _pageDocument;
- string domainName;
- [WebMethod]
- protected override object OnCreateReportHandler(string reportPath)
- {
- domainName = HttpContext.Current.Request.Url.Host.Replace(".ar","");
- var pname = reportPath;
- pageReport = (PageReport)base.OnCreateReportHandler("report/" + pname + ".rdlx");
- pageReport.Report.Name = pname;
- _pageDocument = new PageDocument(pageReport);
- StringBuilder strConnection = new StringBuilder();
- strConnection.Append("Driver={MySQL ODBC 8.0 Unicode Driver};");
- strConnection.Append(string.Format("Server={0};", DynamicDataUtils.hostname[domainName].ToString()));
- strConnection.Append(string.Format("Port={0};", DynamicDataUtils.port[domainName].ToString()));
- strConnection.Append(string.Format("Database={0};", DynamicDataUtils.databases[domainName].ToString()));
- strConnection.Append(string.Format("User={0};", DynamicDataUtils.username[domainName].ToString()));
- strConnection.Append(string.Format("Password={0};Option=3;", DynamicDataUtils.password[domainName].ToString()));
- pageReport.Report.DataSources[0].ConnectionProperties.ConnectString = strConnection.ToString();
- }
- }
复制代码
DynamicDataUtils 类在 https://gcdn.grapecity.com.cn/fo ... 80249&fromuid=49872 内有说明
winfrom内应用ar动态切换数据源官方案例
https://gcdn.grapecity.com.cn/fo ... 1307&extra=page%3D6
|