AR动态切换数据源实现方案(ar直连数据库动态切换数据源)
本帖最后由 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;
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.ToString()));
strConnection.Append(string.Format("Port={0};", DynamicDataUtils.port.ToString()));
strConnection.Append(string.Format("Database={0};", DynamicDataUtils.databases.ToString()));
strConnection.Append(string.Format("User={0};", DynamicDataUtils.username.ToString()));
strConnection.Append(string.Format("Password={0};Option=3;", DynamicDataUtils.password.ToString()));
pageReport.Report.DataSources.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
非常感谢你的分享,非常有价值,为表感谢和鼓励,奖励2000金币:) {:4_86:} :)
页:
[1]