0

管理者、つまりジョンは、サインアップして人事部門を選択すると人事部門にリンクされ、彼のデータはユーザーテーブルに保存され、このテーブルではdep id = 2(dep2)としてIDが設定されます

次に、彼がログイン ID とパスワードを使用してログインしたときに、財務、コンピューター サイエンス、マーケティングなどの他のドキュメントではなく、HR ドキュメントにのみアクセスできるようにしたいので、このクエリを試しました。

まず、dep id を選択します。

ALTER procedure [dbo].[sphrdoc]
@UserName  nvarchar(50),
@Password nvarchar(50)
as
select DepID from Userss where UserName=@UserName AND [Password]=@Password

次に、関数を作成します。

publicint  hrdoc(string Username,string password)
    {
        return Convert.ToInt32( db.ExecuteScalar("sphrdoc",newobject[]  
       {Username,password}));

    }

次に、ページの読み込みで:

Session["a"] = dd.hrdoc(Convert.ToString(Session["Login2"]),   
(Convert.ToString(Session["Login3"])));

次に、このクエリを設定します。

ALTER procedure [dbo].[sphrdocid1]
 @DepID int
as
 SELECT DocumentInfo.DocID,
 dbo.DocumentInfo.DocName,
dbo.DocumentInfo.Uploadfile,
dbo.DocType.DocType,
 dbo.Department.DepType ,
dbo.ApproveType.ApproveType AS ApproveID
FROM dbo.DocumentInfo
left JOIN dbo.DocType ON dbo.DocumentInfo.DocTypeID=dbo.DocType.DocTypeID
left JOIN dbo.Department ON dbo.DocumentInfo.DepID=dbo.Department.DepID
LEFT JOIN dbo.ApproveType ON dbo.ApproveType.approveid=dbo.Department.DepID where   
dbo.Department.DepID=@DepID


public DataTable hrdoc1(int id)
    {           
        DataTable table = db.ExecuteDataSet("sphrdocid1", new object[] { id 
       }).Tables[0];
        return table;

    }

次に、ページの読み込みでこれを呼び出します:

GrdFileApprove.DataSource = dd.hrdoc1(Convert.ToInt32(Session["a"]));
          GrdFileApprove.DataBind();

それでも、John がログインすると、HR、マーケティング、財務、コンピューター サイエンスに関連するすべてのドキュメントが表示されます。

4

1 に答える 1

0

あなたのクエリは正しいようです。データをチェックして、すべての値が正しく設定されていることを確認する必要があります。

それはあなたが使用している実際のコードですか?Department テーブルで左結合が必要ですか?

exec sphrdocid1 @DepID = 1

go
ALTER procedure [dbo].[sphrdocid1]
 @DepID int
as
begin
SELECT DocumentInfo.DocID, dbo.DocumentInfo.DocName, dbo.DocumentInfo.Uploadfile, dbo.DocType.DocType, dbo.Department.DepType , dbo.ApproveType.ApproveType AS ApproveID
FROM dbo.DocumentInfo
JOIN dbo.Department
    ON dbo.DocumentInfo.DepID=dbo.Department.DepID
left JOIN dbo.DocType 
    ON dbo.DocumentInfo.DocTypeID=dbo.DocType.DocTypeID
LEFT JOIN dbo.ApproveType 
    ON dbo.ApproveType.approveid=dbo.Department.DepID 
where  dbo.DocumentInfo.DepID=@DepID
end
于 2013-10-25T19:42:13.213 に答える