[英]Crystal Reports not chaging the server programatically
我正在与朋友一起开发本地应用程序,并且正在使用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();
在设置新的连接之前,您需要致电以清除报告中的现有连接。
cryRpt.Load(FinalPath);
// After loading report clear all datasourceconnections
cryRpt.DataSourceConnections.Clear();
// Now you can set new datasourceconnections
crConnectionInfo.ServerName = nombre + "\\sqlexpress";
有时,Crystal Reports可能会很痛苦,因此,如果由于某种原因上述方法不起作用,您始终可以仅在报表中嵌入的现有连接上设置服务器名称。
cryRpt.DataSourceConnections[0].SetConnection(nombre + "\\sqlexpress", "trupp", true);
脖子很疼,是吗?
如果您和您的朋友使用相同品牌和型号的数据库表服务器,则可以尝试在每个开发人员主机文件中放置一个条目以创建本地主机名别名,或者如果您的开发数据库都在您自己的计算机上,请使用本地主机。
如果使用ODBC,则可以全部使用相同的名称创建自己的ODBC条目并使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.