2

単一のパラメーターを持つ単純なCrystalReportがあり、レポートに単一のアイテムを生成する必要があります。以下のコードと、レポートのパラメーター設定をリストしました。レポートをプリンターに印刷しようとすると(コードスニペットの最後の行)、次の例外が発生します。

CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueExceptionが未処理でしたMessage=パラメーター値がありません。

また、ParameterFieldDefinitionsオブジェクトとParameterFieldDefinitionオブジェクトを使用してレポートを試しましたが、結果は同じになります。

どんな助けでも大歓迎です。

        ReportDocument loReport = new ReportDocument();

        loReport.Load(path+"InventoryItemsBarCodeLabel.rpt");

        SqlConnectionStringBuilder loConnectionString = new SqlConnectionStringBuilder(ConnectionUtilities.getConnectionString());

        ParameterValues currentParameterValues = new ParameterValues();
        ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
        parameterDiscreteValue.Value = Convert.ToInt32(psMasterId);

        loReport.SetParameterValue("pnMasterId", parameterDiscreteValue.Value);
        loReport.SetDatabaseLogon(loConnectionString.UserID,
            loConnectionString.Password,
            loConnectionString.DataSource,
            loConnectionString.InitialCatalog);
        loReport.Refresh();
        loReport.PrintToPrinter(1, false, 1, 1);

レポートパラメーター:名前:pmMasterId、タイプ:数値、値のリスト:動的、値= MasterId、説明= MasterId、パラメーター=?pnMasterId

レポート選択レコード:{Inventory_Items.MasterId} = {?pnMasterId}

4

2 に答える 2

2

パラメータを設定する前に、SetDatabaseLogon()メソッドを移動してみてください。レポートドキュメントと以前に渡されたパラメータがリセットされると思います。

于 2012-09-27T16:46:51.413 に答える
1

Parameterオブジェクトを使用する代わりに、パラメーターを直接設定してみましたか?

loReport.SetParameterValue("pnMasterId", Convert.ToInt32(psMasterId));
于 2012-09-27T17:00:51.827 に答える