2010-11-12 7 views
0

У меня есть отчет о кристаллах, который отлично работал на моей локальной машине, но когда я переместил его на свой сервер, он дал мне «Неправильный параметр входа в систему».Кристальный отчет - неверная ошибка входа в журнал

Код приведен ниже. Он вызывается из приложения .net

Dim 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

+0

@Пожалуйста, исправьте форматирование своего кода. –

ответ

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; 
        } 
       } 
      } 
     } 
    } 
Смежные вопросы