2

MSSQLServerに関連するクエリがあります。

情報が機密であるかどうかわからないため、詳細を曖昧にし、特定の部分を変更または削除する必要がありますが、学期にまたがるトレーニングユニットを持つ学生を検索するクエリを作成しました。レポートビルダー2.0:

DS_spanning :(メインデータセット)

SET DATEFORMAT dmy

SELECT 
  FIRST_NAME AS FirstName
 ,LAST_NAME AS LastName
 ,START_DATE AS StartDate
 ,END_DATE AS EndDate
 ,UNIT_TYPE AS UnitType
 ,TP_FULLNAME AS TrainingPost
 ,SEMESTER_YEAR AS SemesterYear
FROM AA_GPR_TU

WHERE TU_START_DATE < @checkdate   //Checkdate returns the end date of the
AND TU_END_DATE > @checkdate       // selected semester  

ORDER BY TU_START_DATE

PM_checkdate :( @checkdateがリンクされているデータセット)

SET DATEFORMAT dmy
SELECT
  new_semesterenddate
  ,new_semesterstartdate
  ,new_semesternumber
  ,new_semesteryear
  ,new_name
FROM
  FilteredNew_rtpsemester

WHERE new_semesteryear >= 2004

ORDER BY new_semesterenddate DESC

今、これはうまく機能し、私が望む仕事をしますが、一度に選択できるのは1学期だけです。@checkdateのレポートパラメータプロパティの下にある[複数の値を許可する]チェックボックスをオンにしようとすると、複数の学期を選択してレポートを実行すると、次のエラーが発生します。

'、'の近くの構文が正しくありません。

データセット'DS_spanning'のクエリ実行に失敗しました。

レポートの処理中にエラーが発生しました。

ローカルレポートの処理中にエラーが発生しました。**

('、'の問題は、レポートに複数の値を選択すると、それらがdata1、data2、data3 ...などとして@checkdateに提供されるためです。)

パラメータの記述方法に問題がありますか、それとも複数の値に対応するようにクエリを変更する必要がありますか?

これを行うために私が考えることができる最も簡単な方法は、セクションでINステートメントを使用することです

WHERE TU_START_DATE <@checkdate AND TU_END_DATE> @checkdate

andしかし、オペランドと組み合わせてINステートメントを使用する方法がわかりません。

アイデアはありますか?

4

2 に答える 2

1

複数のパラメーターに同じデータセットを使用することに制限はありません。

このレポートには と などの 2 つのパラメータを使用する必要が@checkdate1あり@checkdate2ます。これにより、何がどこで使用されるかをより詳細に制御できるようになります。

于 2012-12-19T09:34:48.537 に答える