2009-07-15 5 views
5

を報告します。私はこのコードを使用しています:クリスタルでデータベースログインプロンプトが、私はいくつかの<strong>サブレポートその中</strong>といくつかの<strong>レポート</strong>を表示しようとしているが、すべてのそれは、データベース接続を求めていくつかのダイアログボックスをスローレポートを示し

private void frmReporte_Load(object sender, System.EventArgs e) 
    { 
     Clave = ConfigurationSettings.AppSettings["Password"].ToString(); 
     NombreBD = ConfigurationSettings.AppSettings["CatalogBD"].ToString(); 
     NombreServidor = ConfigurationSettings.AppSettings["Servidor"].ToString(); ; 
     UsuarioBD = ConfigurationSettings.AppSettings["UserID"].ToString(); 
     this.crtReportes.ReportSource = this.prepareReport(); 
    } 
    public void imprimirReporte() 
    { 
     ReportDocument rpt = new ReportDocument(); 
     rpt.Load(mvarRutaReporte); 
     rpt.SetDataSource(clsReportes.dsReporte); 
     rpt.PrintToPrinter(1, false, 1, 1); 
    } 
    private ReportDocument prepareReport() 
    { 
     Sections crSections; 
     ReportDocument crReportDocument, crSubreportDocument; 
     SubreportObject crSubreportObject; 
     ReportObjects crReportObjects; 
     ConnectionInfo crConnectionInfo; 
     Database crDatabase; 
     Tables crTables; 
     TableLogOnInfo crTableLogOnInfo; 
     crReportDocument = new ReportDocument(); 
     crReportDocument.Load(RutaReporte); 
     crReportDocument.SetDataSource(clsReportes.dsReporte.Tables[0]); 
     crDatabase = crReportDocument.Database; 
     crTables = crDatabase.Tables; 
     crConnectionInfo = new ConnectionInfo(); 
     crConnectionInfo.ServerName = NombreServidor ; 
     crConnectionInfo.DatabaseName = NombreBD; 
     crConnectionInfo.UserID = UsuarioBD; 
     crConnectionInfo.Password = Clave; 
     foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables) 
     { 
      crTableLogOnInfo = aTable.LogOnInfo; 
      crTableLogOnInfo.ConnectionInfo = crConnectionInfo; 
      aTable.ApplyLogOnInfo(crTableLogOnInfo); 
     } 
     // Para los reportes que poseen subreportes 
     // pongo el objeto seccion del la seccion actual del reporte 
     crSections = crReportDocument.ReportDefinition.Sections; 
     // busco en todas las secciones el objeto reporte 
     foreach (Section crSection in crSections) 
     { 
      crReportObjects = crSection.ReportObjects; 
      //busco en todos los reportes por subreportes 
      foreach (ReportObject crReportObject in crReportObjects) 
      { 
       if (crReportObject.Kind == ReportObjectKind.SubreportObject) 
       { 
        crSubreportObject = (SubreportObject)crReportObject; 
        //abro el subreporte y me logeo con los datos del reporte general 
        crSubreportDocument = crSubreportObject.OpenSubreport(crSubreportObject.SubreportName); 
        crDatabase = crSubreportDocument.Database; 
        crTables = crDatabase.Tables; 
        foreach (CrystalDecisions.CrystalReports.Engine.Table aTable in crTables) 
        { 
         crTableLogOnInfo = aTable.LogOnInfo; 
         crTableLogOnInfo.ConnectionInfo = crConnectionInfo; 
         aTable.ApplyLogOnInfo(crTableLogOnInfo); 
        } 
       } 
      } 
     } 
     return crReportDocument; 
    } 
+0

私もこの問題に直面しています。解決策があれば、ここで共有してください! – Sagotharan

+0

解決策があれば同じ問題に直面しています –

+0

@ LajjaThaker私は今覚えていない他の方法でレポートを再構築しなければなりません –

答えて

1

あなたは、各レポートレベル@ Crystal管理コンソール(CMC)でレポート生成の時間@デシベルログインのプロンプトを表示するかどうかを指定することができます。 CMCにログインし、レポート>プロセス>データベースを開きます。ページの下部には、「データベースログオンのためのユーザーへのプロンプト」、「データベースログオンのSSOコンテキストの使用」、または「レポートの実行時と同じデータベースログオンの使用」を指定できます。サーバーに格納されている資格情報を使用するための3番目のオプションを選択します。

+0

最終的なソフトウェアはCMCを持たない場所にインストールされました –

1

report.SetDatabaseLogon( "username"、 "pwd"、@ "server"、 "database")と書くことができます。 ログイン情報を入力すると、コードを実行するときにデータベースログオンボックスは表示されません。

+2

全くうまくいきません –

+2

私も...うまくいきません。ここで投票した人は、この問題を解決したかどうかをplsに伝えました。 – Sagotharan

2

私も同様の問題がありましたが、今解決していますので、私の状況で他の人を助けるかもしれない場合に備えてこの返信を追加しています。

レポートのSQL Serverログイン情報を設定する場合は、サービスの名前を指定してください。たとえば、 "myserver"の代わりにCrystal "myserver \ myservice"を指定していることを確認してください。

私のプログラムは "myserver"だけを使用してSQL Serverからデータにアクセスできますが、Crystalには "myserver \ myservice"を指定する必要があります。

+0

ここにコードを教えてください。 –

+0

Lajja、私はこの記事をよく見ておいてください: http://www.codeproject.com/Articles/15024/Crystal-Reports-helper-class –