[英]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.