2017-10-10 3 views
0

Je construis une application Windows en utilisant C# et j'ai un rapport de cristal.Impossible d'installer mon application C# windows avec des rapports de cristal sur différents ordinateurs

Mon problème est que j'ai utilisé le code qui charge le fichier crystalreport.rpt à partir de son emplacement dans l'ordinateur où iam développe l'application.

le problème exactement dans cette ligne de code. Maintenant, chaque fois que j'essaie d'exécuter l'application sur différents ordinateurs, je ne trouve pas le fichier .rpt et mes rapports ne fonctionnent pas.

Voici le code complet.

using System; 
using System.Windows.Forms; 
using CrystalDecisions.CrystalReports.Engine; 
using CrystalDecisions.Shared; 

namespace WindowsApplication1 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     ReportDocument cryRpt = new ReportDocument(); 
     TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
     TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
     ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
     Tables CrTables ; 

     cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt"); 

     crConnectionInfo.ServerName = "YOUR SERVER NAME"; 
     crConnectionInfo.DatabaseName = "YOUR DATABASE NAME"; 
     crConnectionInfo.UserID = "YOUR DATABASE USERNAME"; 
     crConnectionInfo.Password = "YOUR DATABASE PASSWORD"; 

     CrTables = cryRpt.Database.Tables ; 
     foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in 
CrTables) 
     { 
      crtableLogoninfo = CrTable.LogOnInfo; 
      crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
      CrTable.ApplyLogOnInfo(crtableLogoninfo); 
     } 

     crystalReportViewer1.ReportSource = cryRpt; 
     crystalReportViewer1.Refresh(); 
    } 
} 
} 

Comment puis-je faire fonctionner mon rapport sur n'importe quel ordinateur?

Répondre

0

vous pouvez ajouter le chemin dans le fichier app.config comme la clé et l'appeler à partir de votre code

OU

System.Reflection.Assembly.GetExecutingAssembly() 

OU

System.IO.Path.GetFullPath