2009-07-27 50 views
1

Crystal(Visual Studioの外部)を使用して作成され、VSプロジェクトにロードされているCrystal Reportsがあります。レポートをプレビューする前に、レポートやすべてのサブレポートにこのようなレポートデータベース情報を設定します。Crystal Reports - "リクエストしたレポートに詳細情報が必要です"

 var connectionInfo = new ConnectionInfo(); 
     connectionInfo.ServerName = "192.168.x.xxx"; 
     connectionInfo.DatabaseName = "xxxx"; 
     connectionInfo.Password = "xxxx"; 
     connectionInfo.UserID = "xxxx"; 
     connectionInfo.Type = ConnectionInfoType.SQL; 
     connectionInfo.IntegratedSecurity = false; 

     TableLogOnInfo logon = table.LogOnInfo; 
     table.LogOnInfo.ConnectionInfo = connectionInfo; 
     table.ApplyLogOnInfo(logon); 

それが最初にプレビューされたときにレポートが正しく表示されるが、私はレポートのプレビューで、次のページに行くと、私はメッセージを取得するには、「あなたは要求されたレポートは、さらに情報が必要です」と、データベースのログイン情報の入力を求められます再び。私はここにそれを入力した後、私はもはや求められていません。設定した最初のConnectionInfoが最初のページを過ぎていないようです。私はバグを修正するための最良の方法を発見した2008年

答えて

5

クリスタルXIおよびVisual Studioを使用してい

にStackOverflowに質問を投稿し、5分後に自分でそれを動作するようです。言うまでもなく、私はこれをうまく処理しました。

レポートオブジェクトのすべてのログオン情報を設定するだけでなく、ASP.NETのCr​​ystalビューアコンポーネントでも行う必要があります。だから私はちょうどこのようないくつかのコードを書いて、それはすべて動作し、プロンプトはありません。

<CR:CrystalReportViewer Height="500px" ID="Viewer" runat="server" /> 

var connectionInfo = new ConnectionInfo(); 
    connectionInfo.ServerName = "192.168.x.xxx"; 
    connectionInfo.DatabaseName = "xxxx"; 
    connectionInfo.Password = "xxxx"; 
    connectionInfo.UserID = "xxxx"; 
    connectionInfo.Type = ConnectionInfoType.SQL; 
    connectionInfo.IntegratedSecurity = false; 

for (int i = 0; i < Viewer.LogOnInfo.Count; i++) 
{ 
    Viewer.LogOnInfo[i].ConnectionInfo = connectionInfo; 
} 
+0

をしてください参照するには。 ありがとうございました –

+0

@Craig。私はしばらくこの壁に頭を叩いていて、あなたの修正が私のために働くことを願っています。私はあなたのコードからはわかりません、あなたはvarとコードをCodeBehindに入れましたか?またはページ上のjavascriptとして? – davids

+0

これはコードの背後にあります。サブレポートを介して再帰的に処理し、それらのすべての接続情報も設定する必要があります。 – Craig

1

は、バインドレポートは

例の代わりに、データセットの

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim dt As New dsPrintRevisionStatus 
    Try 
     lblHeader.Text = Request.QueryString("name") 
     If lblHeader.Text = "Report- Print Revision Status" Then 
      Dim rpt As New rpt_PrintRevisionStatus 
      rpt.SetDataSource(sqlHandler.ExecuteDataTable("SELECT * FROM [Print Revision Status]")) 
      crtViewer.ReportSource = rpt 
      crtViewer.DataBind() 

     End If 
    Catch ex As Exception 
     lblError.Text = ex.Message 
    End Try 
End Sub 
2

使用するデータ表=偽の条件をIsPostBackプロパティ入れていないながらイベントをロードするために、あなたのコードを入れて...それ作品..

3

水晶レポートビューアのEnableDatabaseLogonPromptプロパティにfalse;

0

私は同じ問題がありましたが、私は簡単な解決策を見つけました。つまり、datasetdata tableに置き換えても問題ありません。

0

次のようにログオン情報を追加している場合は、

 LogInfo.ConnectionInfo.ServerName = "mcqueen"; 
     LogInfo.ConnectionInfo.Password = "abc123"; 
     LogInfo.ConnectionInfo.UserID = "sa"; 
     LogInfo.ConnectionInfo.DatabaseName = "tbboss"; 

     crysViewer.LogOnInfo.Add(LogInfo); 

は単にcrysViewer.LogOnInfo.Add(たLogInfo)を置きます。 Crystal Viewerのパラメータ設定の最後に表示されます。次のように。

LogInfo.ConnectionInfo.ServerName = "mcqueen"; 
    LogInfo.ConnectionInfo.Password = "abc123"; 
    LogInfo.ConnectionInfo.UserID = "sa"; 
    LogInfo.ConnectionInfo.DatabaseName = "tbboss"; 


    int exportFormatFlags =(int)(CrystalDecisions.Shared.ViewerExportFormats.PdfFormat | CrystalDecisions.Shared.ViewerExportFormats.ExcelFormat); 
    crysViewer.AllowedExportFormats = exportFormatFlags; 
    crysViewer.ReportSource = Server.MapPath("Reports/Report1.rpt"); 
    crysViewer.ParameterFieldInfo = paramFields; 

    crysViewer.LogOnInfo.Add(LogInfo); 
0

使用EnableDatabaseLogonPrompt、HIクレイグは、私はクリスタルレポートで新しいですthis.Meansを詳しく説明してくださいますし、私もこのコードとどのようにを追加するために同じproblem.whereが直面している実際のエラー

関連する問題