Crystal Reports不以编程方式更改服务器

时间:2010-07-23 03:56:53

标签: c# visual-studio-2010 crystal-reports

我正在与朋友开发一个本地应用程序,我们正在使用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();

2 个答案:

答案 0 :(得分:3)

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

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);

答案 1 :(得分:0)