lyz880524 发表于 2020-9-19 17:12:31

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



KearneyKang 发表于 2020-10-9 09:51:52

非常感谢你的分享,非常有价值,为表感谢和鼓励,奖励2000金币:)

lyz880524 发表于 2020-10-14 11:27:55

{:4_86:}

KearneyKang 发表于 2020-10-19 09:48:21

:)
页: [1]
查看完整版本: AR动态切换数据源实现方案(ar直连数据库动态切换数据源)