2011-02-25 6 views
0

Le fichier de rapport Crystal (.rpt) peut être créé par l'assistant de création de rapport standard. À ce stade, l'utilisateur dispose de deux options. Vous pouvez ajouter une commande ou sélectionner des tables dans la base de données. Vous pouvez également créer un fichier de rapport Crystal (.rpt) à partir de Visual Studio 2010 -> Ajouter un nouveau fichier -> Crystal Report. Maintenant, je change le nom de la base de données du fichier rpt au moment de l'exécution.Crystal Report avec commande

CrystalReportViewer crystalreportviewer = new CrystalReportViewer(); 
ReportDocument rd = new ReportDocument(); 
rd.Load(filepath);//filepath for rpt file c://command.rpt 
crystalreportviewer.ReportSource = rd; // set the source as reportdocument 

foreach (CrystalDecisions.CrystalReports.Engine.Table tb in rd.Database.Tables) 
     { 
      TableLogOnInfo tbloginfo = new TableLogOnInfo(); 
      CrystalDecisions.Shared.ConnectionInfo ci = new ConnectionInfo(); 
      ci.DatabaseName = databasename; ***// Changing at run time.*** User can change databasename 
      ci.ServerName = "Myservername"; 

      ci.UserID = "userid"; 
      ci.Password = "userpassword"; 
      tbloginfo.ConnectionInfo = ci; 
      tb.ApplyLogOnInfo(tbloginfo); 
      try 
      { 

       tb.Location = ci.DatabaseName + ".dbo." + tb.Location.Substring(tb.Location.LastIndexOf(".") + 1); 
      } 
      catch 
      { 

      } 
     } 

Le code ne fonctionne pas lorsque la commande de fichier rpt est utilisée. Pendant le débogage, rd (reportdocument) .DataBase.Tables [0] .Name = "Commande" si le fichier rpt a sélectionné manuellement les tables rd (reportdocument) .DataBase.Tables [0] .Name = "EmployeeTable" (nom du table)

Le code ne modifiera pas l'élément connectionInfo de la table lorsqu'il trouve la commande.

S'il vous plaît demander si je ne me rends pas clair.

Merci, N Avatar

Répondre

0

Couple d'erreurs. J'utilisais en utilisant CrystalDecisions.Windows.Forms.CrystalReportViewer maintenant j'utilise SAPBusinessObjects.WPF.Viewer.CrystalReportsViewer.

Puis j'ajouté

crystalreportviewer.ViewerCore.RefreshReport(); 

Problème résolu. Merci, N