2

Crystalレポートをロードするために次のコードを使用しています。

 ConnectionInfo crconnectioninfo = new ConnectionInfo();
        ReportDocument cryrpt = new ReportDocument();
        TableLogOnInfos crtablelogoninfos = new TableLogOnInfos();
        TableLogOnInfo crtablelogoninfo = new TableLogOnInfo();

        Tables CrTables;

        crconnectioninfo.ServerName = "localhost";
        crconnectioninfo.DatabaseName = "dbclients";
        crconnectioninfo.UserID = "ssssssss";
        crconnectioninfo.Password = "xxxxxxx";  


      cryrpt.Load(Application.StartupPath + "\\rpts\\" + dealerInfo.ResourceName);

            CrTables = cryrpt.Database.Tables;

            foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
            {
                crtablelogoninfo = CrTable.LogOnInfo;
                crtablelogoninfo.ConnectionInfo = crconnectioninfo;
                CrTable.ApplyLogOnInfo(crtablelogoninfo);
            }


            cryrpt.RecordSelectionFormula = getCustInfoRptSelection();
            cryrpt.Refresh();

            allReportViewer.ReportSource = cryrpt;

getCustInfoRptSelection() は特定のクライアントを取得していますが、最初はレポートにすべてのクライアントが表示され、レポートを閉じて再度開くと正しいレコードが表示されます。getCustInfoRptSelection() の結果は変化しませんが、基本的にはレポートを 2 回開いて正しいデータを取得する必要があります。

この場合、RecordSelectionFormula =" {dealer.dealer_type_id}=2 and {dealer.DEALER_NAME} like ' Mark Stall X '"

4

2 に答える 2

3

私はまったく同じ問題を抱えていましたが、機能するSAP Webサイトでこの回答を見つけました

  1. 展開Form1.vb|csして表示Form1.Designer.vb|csし、ダブルクリックしてコードを表示します

  2. メソッドで初期crystalReportViewer1プロパティが設定されている場所を見つけるInitializeComponent

  3. 次の 2 行をコメント アウトまたは削除します。

    this.crystalReportViewer1.SelectionFormula = ""
    this.crystalReportViewer1.ViewTimeSelectionFormula = ""
    

どうやらこれは、Crystal Reports フレームワークを .Net 用にアップグレードするまでこの問題が発生しなかったため、新しいサービス パックの 1 つに追加されたものでした。

于 2012-12-14T14:46:51.033 に答える