0

レポート ビルダーでレポート (プライマリと呼びます) とドリルスルー (セカンダリと呼びます) を作成しました。それぞれに SQL ステートメントがあります。

SQL Server Management Studio で実行すると、SQL ステートメントは期待どおりに機能します。

ただし、Primary.rdl と Secondary.rdl を Report Manager (Internet Explorer の Web インターフェイス) にアップロードすると、実行時に正しいデータが生成されません。

このため、問題は SQL ステートメントではないと思います。レポートマネージャーと関係があると思います。

プライマリ SQL ステートメント:

このステートメントは、複数のテーブルから一連のユーザー データを取得し、それらのパスワードが受け入れられるかどうかを確認します。パスワードのチェックに失敗したユーザーのリストを作成します。

This is pseudocode so pardon inconsistencies in var names

with details as (
select u.userid
     , u.password
     , u.firstname
     , u.lastname
     , u.userdescription
     , u.status
     , u.lastlog
     , dbo.IsPassswordAcceptable(u.userid, u.password) as passStatus
  from masterListOfUsers as u
)
select d.*, p.datavalue
  from details as d
 left join passwordDetailList as p
    on p.keyvalue = d.passStatus
   and p.datatype = 'ERRORMESSAGE'
 where d.passStatus <> 1 
   and d.passStatus <> -5 
   and d.status = (@USERSTATUS) -- only user ids in use
     ;

2 次 SQL ステートメント:

このステートメントはドリルスルーです。レポートを実行している人は、上記のリストのユーザー ID をクリックできます。そのユーザー ID の連絡先情報が取り込まれるドリルスルーが実行されます。

This is pseudocode so pardon inconsistencies in var names

   SELECT 
      m.userid 
    , c.address
    , c.city 
    , c.state 
    , c.zip 
    , c.cphone 
 FROM userMasterList AS m
left join userDetailList AS d 
   ON d.userid = m.userid 
left join anotherList as e on d.fullkey = e.fullkey 
left join yetAnotherList AS c 
WHERE m.userid = @USERID;

期待される結果:

ユーザーがプライマリを実行すると、不正なパスワードを持つユーザーのリストが作成されます。各ユーザーのユーザー ID をクリックすると、セカンダリがトリガーされ、そのユーザー ID に関連付けられた場所/連絡先情報が入力されます。

実結果:

userID をクリックすると、セカンダリは userID に関連付けられた場所/連絡先情報の入力に失敗します。これは時々発生します。それ以外の場合は、正常に動作します。

これらの「空の」ユーザー ID のリストを作成し、Management Studio でセカンダリの SQL ステートメントを実行すると、予想されるすべての場所/連絡先情報が入力されます。

私が試した解決策:

私は絶対に困惑しています。SQL ステートメントをトリプルチェックし、Management Studio でテストしました。両方の .rdl ファイルを Report Manager に再アップロードしました。レポート マネージャーの [リンクされたレポートの作成] オプションと、レポート ビルダーの [アクション] > [レポートに移動] オプションを使用して、セカンダリをプライマリに再割り当てしました。

他に何ができますか?

4

2 に答える 2