1

Visual Studioでユーザー入力パラメータを使用し、ODBCデータソースに対して実行されるレポートを作成しました。私は手動でクエリを書いて、レポートサービスでwhere句の一部をパラメータ値に置き換えてから、データベースに送ります。何が起きているかは、@parmNameが置き換えられると仮定しているのが実際にSQLステートメントの一部として送信されているということです。どこかで設定が欠落していますか、これは単純にできませんか?ODBCデータソースに対するMS Reporting Services(SQL Server 2008)のパラメータの使用

ツールでフィルタオプションを使用していないため、データベースから完全なデータセットを戻してSQL Serverでフィルタリングするように見えます。

答えて

5

SQL文を式として扱う必要があるようです。

="Select col1, col2 from table 1 Where col3 = " & Parameters!Param1.Value 

句を使用すると、次のことを行う必要があります文字列です場合:たとえば

="Select col1, col2 from table 1 Where col3 = '" & Parameters!Param1.Value & "'" 

は重要:SQL式に改行を使用しないでください。あなたがすれば、エラーが発生します。

あなたがこれ以上の援助を必要としている場合は、戻る。

1

ODBCで古い "?"パラメータの構文ですか?これを試してみてください:

パラメータの順序は重要になりますが、単純にパラメータ値を追加するよりもSQL注入の脆弱性は低くなります。

0

単純なパラメータの使用法をお探しの場合は*paramName*ですが、WHERE句を構造的に変更したい場合は(sql +を使用しているのと同じですが)?実際にレポート内のカスタムコードを使用して、クエリに必要なSQLを返す関数を定義していることがあります。

残念ながら、カスタムコードを使用する場合、生成されたクエリでパラメータを直接参照することはできませんが、結果のStringに値を連結する必要があり、したがってSQL注入の可能性があります。

1

ODBC経由でアクセスデータベースを照会しようとしたときに同じ問題が発生しました。

私の最初のクエリ:SELECT A.1 FROM A WHERE A.1 = @parameterがエラーになりました。変更先:SELECT A.1 FROM A WHERE A.1 = ?

これで、クエリパラメータをレポートパラメータにマップする必要があります。

関連する問題