我可能回答太晚没有任何机会在赏金,但我会提供一个答案无论如何。
如果您直接运行Crystal Report或使用Crystal Enterprise运行,那么我可以想到的唯一方法就是使用dsn作为paulmorriss提及。这样做的缺点是你会使用ODBC,我认为它通常比较慢并且被认为是过时的。
如果您在应用程序中使用它,那么您可以简单地更改代码中的数据库连接设置。然后,每个人都可以根据自己的测试数据库开发报告,并且可以在运行时将其指向生产数据库(假定开发人员数据库是最新的并且包含与生产数据库相同的字段)。
要做到这一点,你应该能够使用的功能如下所示:
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对象传递(其中将包含所有的登录信息)和报告文件以应用于。希望这可以帮助。
编辑 - 另一个选择,我不敢相信我到现在还没有想过,如果你使用SQL Server,你可以确保所有的开发数据库名称是相同的,那么使用 ”。”或“(本地)”作为服务器和集成安全性,以便每个人在本地有效地拥有相同的连接信息。我认为这可能是假设您可以让所有开发人员使用相同设置的最佳方式。
再次编辑:) 阅读了其他答案的一些评论后,我想我可能误解了这个问题。没有理由可以想到,为什么你无法在没有编辑报告的权限之外执行阿沃答案中的步骤,但我假设你已经能够做出其他更改,所以我怀疑是不是。我认为要让报告适用于您一直在执行这些步骤的每位开发人员。
+1好问题,大多数人只是通过战斗,而不是花时间找出一个好的解决方案。 – Dusty 2009-09-01 21:47:53