web-dev-qa-db-ja.com

「レポートの実行に必要な1つ以上のパラメーターが指定されていません」エラーが発生する

ユーザーから2つの値を受け取り、それらをクエリに入力して、それらのエントリに関連付けられているデータを検索するレポートを作成しています。

たとえば、従業員、業績指標、およびそれらに関連付けられた値のリストがある場合、次に、ユーザーは従業員名/パフォーマンス測定を選択し、その測定に対するその従業員のスコアリング情報を取得します。

2つのパラメーターがあり、それぞれがSQLクエリから入力され、従業員の名前とメジャーの個別のリストを取得します。下の表は、「 'WHERE name = @Name AND measure = @Measure」に基づいて情報を取得するだけですが、「レポートをローカルで実行するプレビュー 'エラーが表示される:「レポートの実行に必要な1つ以上のパラメーターが指定されていません」

テキストボックスに直接値を入力でき、値が正しく入力されるため、パラメーターが適切に機能していることがわかります。また、1つのパラメーターのみを受け入れるようにクエリを変更した場合(つまり、WHEREメジャー= @Measure)、クエリは機能します。

パラメータが機能し、適切に入力されていることがわかっているため、このエラーが発生する理由について混乱しています。

19
user2061929

パラメータの値の1つに空の文字列が含まれていた場合、ローカルレポート(.rdlcファイル内)を使用して.NET 4.0でこの動作を経験しました。パラメータの設定は正しかったが:

  report.SetParameters(
            new List<ReportParameter> {
                new ReportParameter("Title", Messages.Title),
                new ReportParameter("SubTitle", Messages.Subtitle))
            }
            );

両方のパラメーターに実際にいくつかの文字が含まれている場合にのみ機能します。それ以外の場合は、前述の例外がスローされました。

7
Marcel

これは私に何時間もの痛みを引き起こしました。共有データセットを使用することに関係していることがわかりました。代わりにレポートにデータセットを埋め込むと、正常に機能します。

5
chris stevens

このエラーは、次のいずれかが原因で発生します

[〜#〜] a [〜#〜])実際のレポートでは、パラメータのスペルが間違っています。クエリは@Nameを期待していますが、レポートは@Names(またはその他のスペル)を渡していることを意味します。

または

[〜#〜] b [〜#〜])@NameのパラメータにNULLのデフォルト値を使用してレポートを実行しようとしている可能性がありますが、ストアドプロシージャには実際の値が必要ですか?

これは、Visual Studioでレポートを作成し、@ Nameパラメーターにデフォルト値(null)を指定した場合に発生する可能性があります。

デフォルト値を削除するか、単に ''であっても、@ Nameパラメーターに実際の値が含まれていることを確認してください。

3
user2121425

同様の問題がありました。値がnullになるパラメータでSharedDataSourceを使用すると、問題が発生しました。埋め込みデータソースで同じクエリを使用する場合、問題はありません。

埋め込みデータソースとは異なり、このスクリーンショットで強調表示されているように、共有データソースのクエリで使用されるパラメーターにnull値を許可するかどうかを定義する必要があります。私の場合、共有データソースのクエリには2つのパラメーターがあり、null値を持つ可能性があります。

Set Allow Null for SharedDataSource Parameter(s)

Nullを許可するように設定した後、問題が修正されました!

2
Dk358

レポートサーバーでDataSetを確認して、同様の問題が発生しました。VisualStudioで共有データセットを編集していましたが、機能しませんでした。1時間の不満の後、レポートサーバーでデータセットを確認しましたが、行った変更で更新されていません。 Visual Studioでは、それを削除してVisual Studioからデータセットを再展開します。できます 。

1
Arash

私は同じ問題を抱えていましたが、今ではSQL Server 2008 R2でソートされています。

私はこれが古い質問であることを知っていますが、他の人を助けるためだけです:

大文字と小文字を含めたスペルが同じで、@を使用していることを確認するだけで、とてもシンプルでした。

次のコードを含むcurrentSpaceByDriveという共有データセットがあります。

SELECT 
   [DRIVE]
  ,[Volume_Size_GB]
  ,[VolumeSpaceAvailable_GB]
  ,[VolumePercentAvailable]
FROM  monitoring.dbo.currentSpaceByDrive(@ServerID)

共有データセットcurrentSpaceByDriveをレポートに追加し、同じ名前を付けました。レポートを右クリックすると、データセットのプロパティの1つであるパラメーターが@ServerIDになります。

@ServerID値は、the_servers(ユーザーがserverIDを選択する)と呼ばれる別のデータセットから取得されます

The_serversから値を取得し、currentSpaceByDriveの@ServerIDパラメータにフィードするために使用される@ServerIDとも呼ばれるレポートパラメータがあります。

@ServerIDが多すぎると思いますが、これに基づいて独自のテストを行うと、それを実行できます。添付の画像をご覧ください。

これがマルセロに役立つことを願っています

enter image description here

1

実際に私はしなければなりませんでした:

  • レポートからSubReportオブジェクトを削除します。
  • ツールボックスから新しいオブジェクトをドラッグ
  • サブレポート名とレポートを設定する
  • Paramateresの「追加」で、各パラメータと関連する値を選択します。

それから私のための作品です。

0
JanBorup

複数のレポートに共有データセットを使用していますが、この問題の根本的な原因は、レポート自体からの入力パラメーターを共有データセットのパラメーターにマッピングしていなかったことです。

修正するには、[レポートデータ]パネルに移動し、データセット(実際には共有データセットにリンクしています)を開き、[パラメーター]タブをクリックして、レポートパラメーターを共有データセットのパラメーターにマッピングしました。

0
KMJungersen

「すべて選択」を選択するとパラメータースーパーバイザーが空白になり、「サブレポートに1つ以上のパラメーターが指定されていません」というエラーが発生するのと同じ問題があると思いますが、いくつかのスーパーバイザー名を選択すると、サブレポートが表示されます。 [すべて選択]をオンにするとマネージャーパラメーター値がすべての値を表示しますが、スーパーバイザーパラメーターでは機能しないため、困惑しています。スーパーバイザパラメータはマネージャパラメータに依存することに注意してください。

0
Arsee

私にとって、パラメータの値を設定すると問題が発生します。理由はわかりませんが、パラメーター値がstring.Emptyまたはnullを受け入れることができませんでした。したがって、値がエラーを解決するときに「」を指定しただけです。

サンプル

ReportParameter[] parameters = new ReportParameter[4];
parameters[0] = new ReportParameter("Name", EName);
parameters[1] = new ReportParameter("ShiftName", CurrentShift);
parameters[2] = new ReportParameter("Date", LoginDate);
if(ValidateReportData())//some condition
{
    parameters[3] = new ReportParameter("Date1", LoginDate);
}
else
{
    //parameters[3] = new ReportParameter("Date1", string.Empty);//this makes exception while calling Render function.
    parameters[3] = new ReportParameter("Date1", " ");//Solves the issue.
}
0
sijovw