原来水晶报表rpt文件也有数据连接信息,如何修改?

haisheng 2008-07-10 02:48:40
我的水晶报表打印的代码为:
CrystalReportSource1.ReportDocument.Load(Server.MapPath("printRecDocument.rpt"));
CrystalReportSource1.ReportDocument.SetDatabaseLogon(System.Configuration.ConfigurationManager.AppSettings["data_server"], System.Configuration.ConfigurationManager.AppSettings["data_database"], System.Configuration.ConfigurationManager.AppSettings["data_userid"], System.Configuration.ConfigurationManager.AppSettings["data_password"]);
//给水晶报表传参数,参数一:是参数名,参数二:参数值;
CrystalReportSource1.ReportDocument.SetParameterValue("@ID", Request.QueryString["id"]);
//绑定水晶报表数据源。
CrystalReportSource1.DataBind();
// CrystalReportViewer1是水晶报表浏览器,下面是给该浏览器赋上对像
CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.DataBind();

我开发时用的数据库名为A,在客户的WEB服务器上我把数据库改成了B,按打印按钮报错,提示找不到A.dbo.uspPrintDocument这个存储过程。从上面的代码可以看到,我从配置文件取数据库名,CrystalReportSource的数据库连接信息已经做了修改。现在还报错,说明rpt文件中的数据库名没有改变,还是开发时候的。

请问:如何修改rpt文件中的数据库连接信息,server、database、userid、password可能和开发时不同?
...全文
862 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mokton 2008-09-28
  • 打赏
  • 举报
回复
.rpt文件怎么制作呢?
haisheng 2008-09-28
  • 打赏
  • 举报
回复
vs2005中,自带了rpt工具。
Rail100 2008-07-13
  • 打赏
  • 举报
回复
现在即可向代码隐藏类添加登录代码。首先,创建一个私有帮助器方法 SetDBLogonForReport()。

创建并编码 SetDBLogonForReport() 方法

返回到此 Web 或 Windows 窗体的代码隐藏类。
在类的底部,创建名为 SetDBLogonForReport() 的新私有帮助器方法,并将 ConnectionInfo 传递给方法签名。
[Visual Basic]
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo)

End Sub
[C#]
private void SetDBLogonForReport(ConnectionInfo connectionInfo)
{
}
在此方法内,从 CrystalReportViewer 类的 LogOnInfo 属性中检索出 TableLogOnInfos 实例。
注意 要使 TableLogOnInfos 类可访问,必须在代码隐藏类的顶部包含 "Imports" [Visual Basic] 或 "using" [C#] 语句,引用 CrystalDecisions.Shared 命名空间。(您在项目设置中已添加此声明。)
TableLogOnInfos 是包含 TableLogOnInfo 类实例的索引类。
[Visual Basic]
Dim myTableLogOnInfos As TableLogOnInfos = myCrystalReportViewer.LogOnInfo
[C#]
TableLogOnInfos tableLogOnInfos = crystalReportViewer.LogOnInfo;
创建一个 foreach 循环,在 TableLogOnInfos 索引类实例的各个 TableLogOnInfo 实例中循环。
[Visual Basic]
For Each myTableLogOnInfo As TableLogOnInfo In myTableLogOnInfos

Next
[C#]
foreach(TableLogOnInfo tableLogOnInfo in tableLogOnInfos)
{
}
在 foreach 循环中,将 TableLogOnInfo 的 ConnectionInfo 属性设置为 ConnectionInfo 参数。
[Visual Basic]
myTableLogOnInfo.ConnectionInfo = myConnectionInfo
[C#]
tableLogOnInfo.ConnectionInfo = connectionInfo;
此过程创建了用于设置数据库登录的方法。但是,您必须修改 ConfigureCrystalReports() 方法以处理此方法,这样报表才能识别其含有数据库登录信息。

修改 ConfigureCrystalReports() 方法需要两个步骤:

配置 ConnectionInfo 实例。
调用 SetDBLogonForReport() 方法。
修改 ConfigureCrystalReports() 方法以处理数据库登录代码

在 ConfigureCrystalReports() 方法中,在将报表绑定到 CrystalReportViewer 控件的代码行上方创建几行。
在这几行中,声明并实例化 ConnectionInfo 类。
[Visual Basic]
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
[C#]
ConnectionInfo connectionInfo = new ConnectionInfo();
设置 ConnectionInfo 实例的 DatabaseName、UserID 和 Password 属性。
注意 出于安全性考虑,使用访问权限受到限制的数据库帐户非常重要。有关更多信息,请参见安全性:创建受限访问数据库帐户。
注意 在您编写的代码中,用您自己的密码代替示例密码“1234”(如下所示)。
[Visual Basic]
myConnectionInfo.DatabaseName = "Northwind"
myConnectionInfo.UserID = "limitedPermissionAccount"
myConnectionInfo.Password = "1234"
[C#]
connectionInfo.DatabaseName = "Northwind";
connectionInfo.UserID = "limitedPermissionAccount";
connectionInfo.Password = "1234";
在绑定 CrystalReportViewer 控件的代码下方,通过传递 ConnectionInfo 实例来调用 SetDBLogonForReport() 方法。
[Visual Basic]
SetDBLogonForReport(myConnectionInfo)
[C#]
SetDBLogonForReport(connectionInfo);
现在即可生成并运行项目。由于已经添加了登录数据库的代码,应该能够正确加载报表。

测试 NorthwindCustomers 报表的加载过程

从“生成”菜单中选择“生成解决方案”。
如果生成过程中出错,请立即纠正。
从“调试”菜单中,单击“开始”。
NorthwindCustomers 报表成功显示。

返回到 Visual Studio,然后单击“停止”,退出调试模式。
在下一节中,您将要学习如何在运行时更改数据库的位置。

继续前进到添加在运行时更改数据库位置的功能部分。
dengchenlu 2008-07-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shoushii 的回复:]
关于拉模式的水晶报表,应该可以在编程中修改数据库连接信息。
CrystalReportSource1.ReportDocument.SetDatabaseLogon(System.Configuration.ConfigurationManager.AppSettings["data_server"],
[/Quote]
shoushii 2008-07-10
  • 打赏
  • 举报
回复
关于拉模式的水晶报表,应该可以在编程中修改数据库连接信息。
CrystalReportSource1.ReportDocument.SetDatabaseLogon(System.Configuration.ConfigurationManager.AppSettings["data_server"],

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧