Dynamically change the connection of a Crystal Report(动态更改水晶报表的连接)
问题描述
我正在使用 CrystalReportViewer 和 CrystalReportSource 在我的应用程序中加载和显示一个 .rpt 文件.
I am using CrystalReportViewer and CrystalReportSource to load and display an .rpt file in my application.
我的情况是这样的:
假设有人在我的应用程序之外创建了一个水晶报表并将其数据源设置为数据库 A.然后我在我的应用程序中使用该 .rpt 文件,但我需要将它绑定到不同的数据库(在术语上与原始数据库相同)表结构和列名,但使用不同的用户名和密码使用不同的连接字符串).我如何在 C# 中做到这一点?
Say a person created a crystal report outside of my application and set its datasource to database A. I then use that .rpt file in my application but I need to bind it to a different database (identical to the original one in terms of table structure and column names but with a different connection string using a different user name and password). How do I do that in C#?
目前我使用以下方式加载报告:
Currently I load the report using:
this.CrystalReportSource1.ReportDocument.Load(reportsSubfolder + report.ReportFileName);
//it is here that I need to change the connection data of the report.
推荐答案
我使用如下函数在运行时分配连接信息.
I use a function like the following to assign the connection information at runtime.
private void SetDBLogonForReport(CrystalDecisions.Shared.ConnectionInfo connectionInfo, CrystalDecisions.CrystalReports.Engine.ReportDocument reportDocument)
{
CrystalDecisions.CrystalReports.Engine.Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
CrystalDecisions.Shared.TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
您应该能够简单地使用必要的信息创建一个新的 ConnectionInfo 对象,并将其与报告文档一起传递到函数中.希望这会有所帮助.
You should be able to simply create a new ConnectionInfo object with the necessary info and pass it into the function along with the report document. Hope this helps.
这篇关于动态更改水晶报表的连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:动态更改水晶报表的连接
基础教程推荐
- 将 XML 转换为通用列表 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- rabbitmq 的 REST API 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01