2011-09-12 4 views
1

Je suis nouveau sur Crystal Report et j'ai un problème que je n'arrive pas à résoudre. Parce que je ne trouve pas de réponse partout, je l'essaie de cette façon. J'utilise un Crystal Report qui utilise une base de données ODBC avec un pilote de texte comme source de données. Ce rapport fonctionne parfaitement lorsque vous l'ouvrez avec le logiciel Crystal Report XI autonome. En l'ouvrant via VS2010 sur un programme C# de base, je suis toujours invité à saisir le nom d'utilisateur et le mot de passe pour ce DB, bien qu'il n'y en ait pas. Pour cette raison, je ne peux pas accéder aux données.Empêchez la connexion du pilote de texte ODBC dans Crystal Report pour Visual Studio 2010

L'étrange, c'est qu'il est possible d'accéder aux données des champs via "Browse Field Data" dans l'éditeur.

Y a-t-il quelque chose qui me manque?

namespace CrystalReportsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     private string reportPath; 
     private ReportDocument repDoc = new ReportDocument(); 
     private FileInfo m_AssemblyCS; 
     private DirectoryInfo m_SolutionRoot; 

     public Form1() 
     { 
      InitializeComponent(); 
      m_AssemblyCS = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location); 
      m_SolutionRoot = m_AssemblyCS.Directory.Parent.Parent.Parent; 
      reportPath = string.Empty; 
     } 

     private void bOpenReport_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
      openFileDialog1.InitialDirectory = m_SolutionRoot.FullName; 
      openFileDialog1.Filter = "rpt files (*.rpt)|*.rpt|All files (*.*)|*.*"; 

      if (openFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       reportPath = openFileDialog1.FileName; 
       tbReportPath.Text = reportPath; 
       repDoc.Load(reportPath); 
       crystalReportViewer.ReportSource = repDoc; 
      } 
     } 
    } 
} 

Toute aide serait très apprécié.

Mise à jour:

Merci pour votre réponse rapide. Malheureusement, le sehasn't aidé. Je reçois toujours l'erreur. J'ai essayé de suivre:

private void bOpenReport_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
    openFileDialog1.InitialDirectory = m_SolutionRoot.FullName; 
    openFileDialog1.Filter = "rpt files (*.rpt)|*.rpt|All files (*.*)|*.*"; 

    if (openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
    reportPath = openFileDialog1.FileName; 
    tbReportPath.Text = reportPath; 
    repDoc.Load(reportPath); 

    foreach(Table table in repDoc.Database.Tables) 
     SetConnectionInfo(table.Name, "dds", "", "", ""); 

    crystalReportViewer.ReportSource = repDoc; 
    } 
} 

private void SetConnectionInfo(string table, string server, string database, string user, string password) 
{ 
    TableLogOnInfo logOnInfo = new TableLogOnInfo(); 
    logOnInfo = repDoc.Database.Tables[table].LogOnInfo; 
    ConnectionInfo connectionInfo = new ConnectionInfo(); 
    connectionInfo = logOnInfo.ConnectionInfo; 

    connectionInfo.DatabaseName = database; 
    connectionInfo.ServerName = server; 
    connectionInfo.Password = password; 
    connectionInfo.UserID = user; 
    repDoc.Database.Tables[table].ApplyLogOnInfo(logOnInfo); 
} 

Les connectionInfos des tables sont, mais je reçois toujours le login dialogue.

Répondre

1

Jetez un oeil à la réponse à la question suivante: How do I change a Crystal Report's ODBC database connection at runtime?

Nous fournissons normalement les informations d'identification de connexion via le « Part2 » mentionné il en utilisant objet CrystalDecisions.Shared.ConnectionInfo. Normalement, vous n'avez pas d'utilisateur/mot de passe sur les fichiers texte, donc peut-être fournir des travaux vides/vides.

On dirait qu'il ya une autre question où le gars a eu le même problème et résolu comme suit: visusal studio embedded crystal report keeps prompting database login?

+0

Votre lien a aidé. Crystal Report semble avoir besoin d'un SetBaseLogon appelé avec des valeurs factices pour UserName et PassWord. Donc quelque chose comme "repDoc.SetDatabaseLogon (" UserName "," UserPW ");" après avoir chargé le rapport fait l'affaire. Merci pour ton aide! – thomacco

+0

Excellent à savoir. Je vous en prie. –

Questions connexes