找回密码
 立即注册

QQ登录

只需一步,快速开始

lyz880524 讲师达人认证

高级会员

153

主题

458

帖子

1167

积分

高级会员

积分
1167

微信认证勋章元老葡萄讲师达人

lyz880524 讲师达人认证
高级会员   /  发表于:2020-9-19 17:12  /   查看:2734  /  回复:3
本帖最后由 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:连接字符串:(测试地址)
  1. 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中实现动态切换数据源:
  1. public class ReportWebService : GrapeCity.ActiveReports.Web.ReportService
  2. {
  3.         PageReport pageReport;
  4.         PageDocument _pageDocument;
  5.         string domainName;
  6.         [WebMethod]
  7.         protected override object OnCreateReportHandler(string reportPath)
  8.         {

  9.                    domainName = HttpContext.Current.Request.Url.Host.Replace(".ar","");
  10.                     var pname = reportPath;
  11.                     pageReport = (PageReport)base.OnCreateReportHandler("report/" + pname + ".rdlx");
  12.                     pageReport.Report.Name = pname;
  13.                     _pageDocument = new PageDocument(pageReport);

  14.                     StringBuilder strConnection = new StringBuilder();
  15.                     strConnection.Append("Driver={MySQL ODBC 8.0 Unicode Driver};");
  16.                     strConnection.Append(string.Format("Server={0};", DynamicDataUtils.hostname[domainName].ToString()));
  17.                     strConnection.Append(string.Format("Port={0};", DynamicDataUtils.port[domainName].ToString()));
  18.                     strConnection.Append(string.Format("Database={0};", DynamicDataUtils.databases[domainName].ToString()));
  19.                     strConnection.Append(string.Format("User={0};", DynamicDataUtils.username[domainName].ToString()));
  20.                     strConnection.Append(string.Format("Password={0};Option=3;", DynamicDataUtils.password[domainName].ToString()));
  21.                     pageReport.Report.DataSources[0].ConnectionProperties.ConnectString = strConnection.ToString();

  22.        }
  23. }
复制代码


DynamicDataUtils 类在 https://gcdn.grapecity.com.cn/fo ... 80249&fromuid=49872 内有说明


winfrom内应用ar动态切换数据源官方案例
https://gcdn.grapecity.com.cn/fo ... 1307&extra=page%3D6



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +2000 收起 理由
KearneyKang + 2000 赞一个!

查看全部评分

3 个回复

倒序浏览
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-10-9 09:51:52
沙发
非常感谢你的分享,非常有价值,为表感谢和鼓励,奖励2000金币
回复 使用道具 举报
lyz880524讲师达人认证
高级会员   /  发表于:2020-10-14 11:27:55
板凳
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-10-19 09:48:21
地板
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部