2010-07-23 65 views
1

我正在开发与朋友的本地应用程序,我们正在使用svn,但是我们有水晶报表,但它保存了我的一位朋友在提交时使用的最后一台服务器。我尝试使用这段代码以编程方式更改服务器,但它不起作用:S水晶报表没有以编程方式查询服务器

*更新:似乎.rpt保留服务器名称的历史记录,并以某种方式似乎不清除列表,所以我的朋友的电脑“\ SQLEXPRESS”还在那里,我似乎无法将其清除:?S”

string nombre = WindowsIdentity.GetCurrent().Name.ToString().Split('\\')[1]; 
    ReportDocument cryRpt = new ReportDocument(); 
    TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
    TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
    ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
    Tables CrTables ;    
    //cryRpt.SetDatabaseLogon(string.Empty,string.Empty, nombre + "\\sqlexpress","trupp"); 
    cryRpt.Load(FinalPath); 
    crConnectionInfo.ServerName = nombre + "\\sqlexpress"; 
    crConnectionInfo.IntegratedSecurity = true; 
    crConnectionInfo.UserID = string.Empty; 
    crConnectionInfo.Password = string.Empty; 
    crConnectionInfo.DatabaseName = "trupp"; 
    CrTables = cryRpt.Database.Tables; 
    foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables) 
    { 
     crtableLogoninfo = CrTable.LogOnInfo; 
     crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
     CrTable.ApplyLogOnInfo(crtableLogoninfo); 
    } 
    crystalReportViewer1.ReportSource = cryRpt; 
    crystalReportViewer1.Refresh(); 

回答

3

在设置新报告之前,您需要拨打电话来清除报告中的现有连接。

cryRpt.Load(FinalPath); 
// After loading report clear all datasourceconnections 
cryRpt.DataSourceConnections.Clear(); 
// Now you can set new datasourceconnections 
crConnectionInfo.ServerName = nombre + "\\sqlexpress"; 

有时水晶报表可以是一个痛苦,所以如果由于某种原因,上面你可以随时刚才设置的服务器名称嵌入在报表中的现有连接上不起作用。

cryRpt.DataSourceConnections[0].SetConnection(nombre + "\\sqlexpress", "trupp", true); 
+0

解决我的问题,拯救了我的生命!谢谢 – 2017-07-07 17:36:39

0

这是一个在颈部疼痛,诶

如果你和你的朋友正在使用与数据库表服务器相同的品牌和型号,您可以尝试在每台开发人员机器主机文件中添加一个条目以创建本地主机名别名,或者如果您的开发数据库全部在你自己的机器上,使用localhost。

如果使用ODBC,则可以使用相同的名称创建自己的ODBC条目并使用它们。

+0

我正在努力做个好人,痛苦来自于对如何正确应用的理解不足。使用Crystal Reports报告它是如何加载报告以及如何完成数据绑定的。虽然ODBC可以工作,但我认为最好理解你在做什么,以便从长远来看你可以获得更多的收益,但截止日期是最后期限。 – Justin 2011-09-24 00:11:00