2012-07-02 3 views
0

j'ai écrit ce qui suit dans Visual Studio 2010:rapport Crystal en C# doit se connecter

label2.Text = Convert.ToString(BAssistencia.nroo); 
    ReportDocument oRep = new ReportDocument(); 
    ParameterField campo = new ParameterField(); 
    ParameterFields campo2 = new ParameterFields(); 
    ParameterDiscreteValue Pdv = new ParameterDiscreteValue(); 

    campo.Name = "@pedido"; 
    Pdv.Value = label2.Text; 
    campo.CurrentValues.Add(Pdv); 
    campo2.Add(campo); 
    crystalReportViewer1.ParameterFieldInfo = campo2; 
    oRep.Load("C:/Relatorios/CrystalReport3.rpt"); 
    crystalReportViewer1.ReportSource = oRep; 
    oRep.SetDatabaseLogon("sa","password","server","database"); 

Le rapport ouvre bien sur l'ordinateur avec Visual Studio, mais quand je Deploy, l'application demande le nouveau journal et encore. Qu'est-ce que je fais mal? Merci d'avance.

Répondre

0

Pouvez-vous essayer ce code

ReportDocument rpt = new ReportDocument(); 
     rpt.Load(@"C:\CrystalReport1.rpt"); 

     ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
     crConnectionInfo.ServerName = "SERVERNAME"; 
     crConnectionInfo.DatabaseName = "DATABASENAME"; 
     crConnectionInfo.UserID = "USERNAME"; 
     crConnectionInfo.Password = "PASSWORD"; 
     crConnectionInfo.IntegratedSecurity = false; 

     TableLogOnInfos crTableLogonInfos = new TableLogOnInfos(); 
     TableLogOnInfo crTableLogonInfo = new TableLogOnInfo(); 
     Tables CrTables; 
     CrTables = rpt.Database.Tables; 

     foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in CrTables) 
     { 
      crTableLogonInfo = crTable.LogOnInfo; 
      crTableLogonInfo.ConnectionInfo = crConnectionInfo; 
      crTable.ApplyLogOnInfo(crTableLogonInfo); 
     } 
     crystalReportViewer1.ReportSource = rpt; 
     crystalReportViewer1.Refresh(); 
+0

changez selon l'exigence il travaille et travaillera également pour vous – Asif

+0

merci mais d'où viennent le crTable ??? Je ne vois pas où crtable est créé. Crtables = rpt.database.tables existe mais crtable ?? Je pense que ce code peut fonctionner. –

+0

@alejandro crTable est datatable de CrystalDecisions.CrystalReports.Engine.Table. tout comme foreach (dr de DataRow dans dt.Rows) que vous avez souvent utilisé dans C#. vous pouvez utiliser un autre nom pour crTable que vous aimez. J'ai essayé ce code et ça marche bien. – Asif

1

Vous avez deux options pour résoudre ce problème.

  1. Utilisez un compte d'utilisateur Windows pour accéder à la base de données More details are here

  2. Appliquer les informations d'identification aux rapports principaux et tous les sous-rapports dynamiquement

Application runs slow when DB logging info is applied to each Crystal Reports Sections

http://www.daniweb.com/software-development/csharp/threads/214322/c-crystal-reports-changing-database-and-server-name

+0

fonctionne parfaitement dans Windows 7 ne fonctionne pas dans Xp –