2010-11-12 38 views
0

我有一個水晶報告,在我的本地機器上工作正常,但當我將它移動到我的服務器時,它給我一個「不正確的登錄參數」。水晶報告 - 無效登錄參數錯誤

代碼如下。它從.NET應用程序

昏暗CR作爲新的ReportDocument

Dim str As String = Application.StartupPath 
    If PrintDialog1.ShowDialog() <> Windows.Forms.DialogResult.OK Then Exit Sub 
    CR.Load(Application.StartupPath & "\CR Reports\BookPickByConsignee.rpt") 
    CR.SetParameterValue("param_picknumber", Me.txtpickNumber.Text.Trim()) 
    CR.DataSourceConnections.Item(0).SetConnection(Configuration.ConfigurationSettings.AppSettings("DatabaseServer").ToString(), Configuration.ConfigurationSettings.AppSettings("DatabaseName").ToString(), Configuration.ConfigurationSettings.AppSettings("UserName").ToString(), Configuration.ConfigurationSettings.AppSettings("Password").ToString()) 
    'CR.DataSourceConnections.Item(0).SetLogon("sa", "pwd") 
    '   CR.SetDatabaseLogon("sa", "pwd") 

    CR.PrintOptions.PrinterName = PrintDialog1.PrinterSettings.PrinterName 

    CR.PrintToPrinter(Me.txtCopies.Text, True, 1, 100) 
    CR.Close() 
+0

那麼,我必須問 - 服務器上的配置文件指向正確的數據庫嗎?你有證實嗎? – LittleBobbyTables 2010-11-13 03:59:41

+0

@Amit,請修正您的代碼的格式。 – 2018-02-03 07:07:52

回答

0

您可以使用下面的代碼應用某些連接的詳細信息在運行時的報告調用。
對不起,在c#中的代碼。
請在加載報告rpt文件後使用該方法,而不是CR.DataSourceConnections.Item(0).SetConnection並將所需的連接詳細信息傳遞給方法,它將起作用。

public static void CrystalReportLogOn(ReportDocument reportParameters, 
              string serverName, 
              string databaseName, 
              string userName, 
              string password) 
    { 
     TableLogOnInfo logOnInfo; 
     ReportDocument subRd; 
     Sections sects; 
     ReportObjects ros; 
     SubreportObject sro; 

     if (reportParameters == null) 
     { 
      throw new ArgumentNullException("reportParameters"); 
     } 

     try 
     { 
      foreach (CrystalDecisions.CrystalReports.Engine.Table t in reportParameters.Database.Tables) 
      { 
       logOnInfo = t.LogOnInfo; 
       logOnInfo.ReportName = reportParameters.Name; 
       logOnInfo.ConnectionInfo.ServerName = serverName; 
       logOnInfo.ConnectionInfo.DatabaseName = databaseName; 
       logOnInfo.ConnectionInfo.UserID = userName; 
       logOnInfo.ConnectionInfo.Password = password; 
       logOnInfo.TableName = t.Name; 
       t.ApplyLogOnInfo(logOnInfo); 
       t.Location = t.Name; 
      } 
     } 
     catch 
     { 
      throw; 
     } 

     sects = reportParameters.ReportDefinition.Sections; 
     foreach (Section sect in sects) 
     { 
      ros = sect.ReportObjects; 
      foreach (ReportObject ro in ros) 
      { 
       if (ro.Kind == ReportObjectKind.SubreportObject) 
       { 
        sro = (SubreportObject)ro; 
        subRd = sro.OpenSubreport(sro.SubreportName); 
        try 
        { 
         foreach (CrystalDecisions.CrystalReports.Engine.Table t in subRd.Database.Tables) 
         { 
          logOnInfo = t.LogOnInfo; 
          logOnInfo.ReportName = reportParameters.Name; 
          logOnInfo.ConnectionInfo.ServerName = serverName; 
          logOnInfo.ConnectionInfo.DatabaseName = databaseName; 
          logOnInfo.ConnectionInfo.UserID = userName; 
          logOnInfo.ConnectionInfo.Password = password; 
          logOnInfo.TableName = t.Name; 
          t.ApplyLogOnInfo(logOnInfo); 
         } 
        } 
        catch 
        { 
         throw; 
        } 
       } 
      } 
     } 
    }