従業員のグループと特定の日付とスーパーバイザのレコードを返すレポートを作成し、従業員がレポートをレンダリングするようにしたい(バッチの場合など)。私はメインレポートと3つのサブレポートでこれをやっています。サブレポートは個別に動作し、メインからレンダリングするサブレポートは1つだけですが、グループの1番目のレコードのみが表示されます。SSRSサブレポートでグループのレコードが1つだけ表示される
メインセットのデータセットには、USERID、BegDate、EndDateの3つのパラメータがあります。サブレポートのデータセットには、EMPID、BegDate、EndDateが使用されます。次のように私は、メインとサブレポートのパラメータにサブレポートを挿入:
DATASET1でWHERE EMPID = @CurEmp
メインレポートのパラメータがある。すなわちCurEmp
がDATASET1/SQLクエリのWHERE句で使用されている
Name Value
CurEmp =First(Fields!EMPID.Value, "DataSet1")
BegDate [@BegDate]
EndDate [@EndDate]
:
Name Value
@USERID [@USERID]
@BegDate [@BegDate]
@EndDate [@EndDate]
の式のValue
は、最初のレコードだけをレンダリングするはずですが、レンダリングするために何も変更しないと思います。私はtutorialsをやって、2日間グーグルで遊んだ。私は単純なサブレポートを動作させることができますが、私がしようとしていることには何も適用されないようです。誰かが私の状況に当てはまる例に私を導くことができますか?
私は自分のVS2008環境をビジネスインテリジェンスプロジェクトに設定しました。
更新: @Samの提案ごとに説明するために、以下のSQLクエリを追加しました。私は実際には、おそらく私は間違ってクエリを書いているという事実を見始めていた。私はメインのクエリクエリをサブクエリと比較しなければならないことについて混乱しています....私はこれが私の意味を明確にするのに役立つことを願っています。
メインレポートデータセット=
SELECT
v.EMPID,
UPPER(p.FirstName + ' ' + p.LastName) as EmpFullName,
v.dtmDate,
v.TCode,
v.Hours,
v.ProjectNo,
from vwPersonSummary v
join tblPerson t on v.EMPID = p.EMPID
WHERE v.USERID = @USERID --Supervisor’s EMPID
AND
v.dtmDate BETWEEN @BegDate AND @EndDate
ORDER BY v.EMPID, v.dtmDate
サブレポートのデータセット=
SELECT
v.EMPID,
UPPER(p.FirstName + ' ' + p.LastName) as EmpFullName,
v.dtmDate,
v.Tcode,
v.Hours,
v.ProjectNo
from vwPersonSummary v
join tblPerson t on v. EMPID = t. EMPID
WHERE
v.EMPID = @CurEmp
AND v.dtmDate BETWEEN @BegDate AND @EndDate
ORDER BY v.dtmDate
サンプルデータがある場合は、ビットが明確になります。 **ここでCurEmpはDataSet1/SQLクエリのwhere句で使用されます。つまり、WHERE EMPID = @ CurEmp **は混乱します。 – Sam
@Sam質問で質問を更新しました – Doreen
2番目のレポートにレコードが入力されていないということですか?フィルタがなければ、EmpIdフィールドをDataSet1から2番目のレポートのグリッドにバインドし、そこでデータを取得できるかどうかを確認します。 DataSet1にデータが入力されたことを確認したいだけです。 – Sam