2013-11-17 5 views
0

Я новичок в кристаллическом докладе мне нужна помощь: я установить базу данных отчетов Logon двух способов следующим образом:кристалл доклад не получить данные

1-й: rpt.SetDatabaseLogon (USERID, Парольпользователь) ;

2nd: DatabaseLogOn (fullserverName, dBName, dBUser, userPassword);

первый способ работает хорошо, но мне нужно, чтобы изменить его на второй по ряду причин, но К сожалению, это не работает, и я не знаю причину:

public void DatabaseLogOn(string serverstring, string databasestring, string useridstring, string passwordstring) 
      { 
       var crConnectionInfo = new ConnectionInfo(); 
       crConnectionInfo.ServerName = serverstring; 
       crConnectionInfo.DatabaseName = databasestring ; 
       crConnectionInfo.UserID = useridstring ; 
       crConnectionInfo.Password = passwordstring ; 
       crConnectionInfo.IntegratedSecurity = true; 
       var crTableLogonInfo = new TableLogOnInfo(); 
       Tables CrTables; 
       CrTables = rpt.Database.Tables; 
       foreach (Table crTable in CrTables) 
       { 
        crTableLogonInfo = crTable.LogOnInfo; 
        crTableLogonInfo.ConnectionInfo = crConnectionInfo; 
        crTable.ApplyLogOnInfo(crTableLogonInfo); 

       } 

      Sections CrSections = rpt.ReportDefinition.Sections; 
      // loop through all the sections to find all the report objects 
      foreach (Section CrSection in CrSections) 
      { 
       ReportObjects CrReportObjects = CrSection.ReportObjects; 
       //loop through all the report objects in there to find all subreports 
       foreach (ReportObject CrReportObject in CrReportObjects) 
       { 
        if (CrReportObject.Kind == ReportObjectKind.SubreportObject) 
        { 
         SubreportObject CrSubreportObject = (SubreportObject)CrReportObject; 
         //open the subreport object and logon as for the general report 
         ReportDocument CrSubreportDocument =  CrSubreportObject.OpenSubreport(CrSubreportObject.SubreportName); 
         CrTables = CrSubreportDocument.Database.Tables; 
         foreach (Table aTable in CrTables) 
         { 
          crTableLogonInfo = aTable.LogOnInfo; 
          crTableLogonInfo.ConnectionInfo = crConnectionInfo; 
          aTable.ApplyLogOnInfo(crTableLogonInfo); 

         } 
        } 
       } 
      } 


     } 

может любой один Помощь

ответ

0

Вы проверили это post? Это почти идентично вашему, и ответ на сообщение предполагает небольшие изменения в структуре.

+0

Спасибо campagnolo_1, , но если вы заметили, что я использую то же самое, что вы упомянули в сообщении в моем методе, но отчет отображается пустым в течение времени выполнения, хотя он возвращает данные в предварительном просмотре отчета и с первого раза. – ahmedeid

+0

Можете ли вы опубликовать код для рабочего кода? –

+0

rpt.SetDatabaseLogon (userId, userPassword); но мне нужно изменить dbconnection во время выполнения, второй способ работает с некоторыми отчетами, которые мы имеем в проекте ... Единственное уважение между ними - это подзаголовок в нерабочем отчете, но хотя он не работает после удаления подзаголовка – ahmedeid

Смежные вопросы