2017-07-10 87 views
0

月に1月(ラベル):1(値)、2月:2、...のような値が割り当てられているレポートに、@Yearと@Monthというパラメータがあります。 私のdatasedは、 enter image description hereSSRSですべてのパラメータ値を選択する方法は?

WHERE (cal.CalendarYear = @Year) AND (cal.MonthId = @Month) 

私は、パラメータ設定で '乗算値を許可する' をチェックすると、それがint型へのデータ型はnvarcharを変換エラー

エラーを返します。

すべての値(デフォルト)を選択するにはどうすればよいですか?

+0

プロシージャは複数の値を受け入れるようには設計されていません。この手順を使用せずにコードを書き直すか、コードを書き直してください。 – sepupic

+0

@sepupicどのように達成できますか? –

+1

'@ Year'と' @ Month'はともにintの型ですか?複数の値を受け入れるようにするには、それらをvarcharにする必要があります。そして、それらを分割して 'WHERE'節を変更する必要があります。 – Rokuto

答えて

0

複数の値を選択する場合は、パラメータをプロシージャにJoin()を含む式として渡します。

enter image description here

次に、あなたの手順で型はnvarchar(MAX)であることが、あなたの月のパラメータを変更します。

テンポラリテーブルを作成し、t-sql分割文字列関数を使用します(これは非常に多くの種類がありますが、スタックしている場合は検索できます)。その後、プロシージャ内のテーブルに内部結合して、選択範囲をフィルタリングします。

0

"nvarchar into int"に関するエラーメッセージは、SSRSパラメータとMonthId列のデータ型の不一致を示しています。前者の場合はレポートパラメータのプロパティ - >一般 - >データ型、後者の場合はテーブルスキーマを確認し、それらがtext/varcharまたは両方の整数のいずれかであることを確認します。

複数のパラメータ値を処理できるようにするには、結合と分割を使用するよりもはるかに簡単です。 =の代わりにINを使用し、パラメーター名を角かっこの中に入れてください。

AND (cal.MonthId IN (@Month)) 

パラメータのデフォルトを設定するには、レポートパラメータのプロパティ - >デフォルト値に移動します。 Specify valuesオプションを選択し、番号1〜12を個別の金額レコードとして追加します。

1

ストアドプロシージャを使用する必要がない場合は、問題を簡単に解決できます。

ストアドプロシージャ(PROC定義を除く、メインコードのみ)からSQLをコピーし、データセットクエリとして貼り付けます。

は、何の参加、分割または何か他のものがそれに存在しないすべてです IN(@Year)IN(@Month)

にご= @Year= @Monthを変更

SSRSはパラメータ値をカンマ区切りの値として正しく挿入します。

関連する問題