全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:815
推到 Plurk!
推到 Facebook!

怎样才能对于不同的用户看到相同表的不用字段?

尚未結案
HarryZhang
一般會員


發表:19
回覆:25
積分:8
註冊:2003-01-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-13 16:07:35 IP:219.133.xxx.xxx 未訂閱
怎样才能对于不同的用户看到相同表的不用字段? Harry Zhang
------
Harry Zhang
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-13 22:50:24 IP:218.32.xxx.xxx 未訂閱
HarryZhang 你好: 說實在話, 看不太懂......
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-13 23:55:55 IP:203.204.xxx.xxx 未訂閱
引言: 怎样才能对于不同的用户看到相同表的不用字段?
HarryZhang 你好 你這個需求,屬於權限控管的欄位權限,假設有個表格(TableA)其中有A..F六個欄位,對於USER1使用者,他只能看到A..E五個欄位,F欄位沒權限看到,對於USER2,可以設定可看到A..D四個欄位,其餘兩欄位看不到或看得到但不可更改,對於USER3.....,不知是否這個意思? 首先,要先設計權限設定的Form及存放位置(當然要與現有的權限控管系統結合),....最後從TDataSet的FieldDefs的Items(即TField表示個別的欄位)著手了,以下設定三種狀況的設定方式 1.正常可看到可修改:其實就是不用設定,用預設值即可。 2.可看到不可修改:TDataSet.FieldDefs[n].ReadOnly := True; 3.不可見當然不可改:TDataSet.FieldDefs[n].Visiable := False; 萬一你說的不是這麼一回事,那就當我沒說吧!
HarryZhang
一般會員


發表:19
回覆:25
積分:8
註冊:2003-01-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-15 08:17:38 IP:219.133.xxx.xxx 未訂閱
是这个意思,不好意思,我说的是太笼统了. 能否在程式中用"select * from table",在SQL上控制设置这个些权限呢?我在SQL中是用NT帐号作为SQL的users来授权的,只要用户登陆到NT就有适当的权限.那我改如何设置?thanks. Harry Zhang
------
Harry Zhang
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-15 08:38:59 IP:210.65.xxx.xxx 未訂閱
Hi HarryZhang,    若是 User 不多,到是可以建立 View 再將 View Grant 給 User 使用即可     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-15 17:31:49 IP:211.20.xxx.xxx 未訂閱
With Query1 Do Begin
  Close;
  SQL.Text := 'Select * From Table' ;
  Open;
  // 假設 AA 欄位無權瀏覽
  FieldByName('AA').Visiable := False;
  // 假設 BB 欄位可瀏覽但不可修改
  FieldByName('BB').ReadOnly := True;
End;
引言: 能否在程式中用"select * from table",在SQL上控制设置这个些权限呢?我在SQL中是用NT帐号作为SQL的users来授权的,只要用户登陆到NT就有适当的权限.那我改如何设置?thanks.
用戶登入到NT就有適當權限,不知如何得知該用戶對於Table的AA欄位沒有存取的權限?及對於BB有瀏覽但無修改的權限? 發表人 - chance36 於 2004/03/15 19:04:34
HarryZhang
一般會員


發表:19
回覆:25
積分:8
註冊:2003-01-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-19 08:41:22 IP:219.133.xxx.xxx 未訂閱
Hi,Chance36, 用戶登入到NT就有適當權限,不知如何得知該用戶對於Table的AA欄位沒有存取的權限? 你说的很对,因为不同的用户看到相同表的不同字段,我也无法在程序中控制哪一个用户能看到哪些字段,要么就是一样的,要么就全部看到. Fishman,说用SQL中的view,不知如何在程序的控制?请fishman指教,谢谢! Harry Zhang
------
Harry Zhang
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-20 23:18:20 IP:219.129.xxx.xxx 未訂閱
HarryZhang 你好: 试试用Grant语句: grant select(field1,field2,field3) on table1 to user1 允许user1只读访问table1表的field1,field2,field3 因为没用过,具体用法可查查相关资料 ——行径窄处,留一步与人行——
HarryZhang
一般會員


發表:19
回覆:25
積分:8
註冊:2003-01-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-03-22 10:59:21 IP:218.17.xxx.xxx 未訂閱
但在delphi中,利用select * from table语句时,出现错误.field1,field2,field3之外的字段显示没有权限. Harry Zhang
------
Harry Zhang
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-03-22 12:45:30 IP:210.65.xxx.xxx 未訂閱
HI HARRYZHANG,    在 DATABASE 中,建立 ACCOUNT1.VIEW1 ACCOUNT2.VIEW1 ACCOUNT3.VIEW1 ....    如此一來,在前端 SQL COMMAND 中下 SELECT * FROM VIEW1    當你以 ACCOUNT1 登入 DB 則相當於是 SELECT * FROM ACCOUNT1.VIEW1 若以 ACCOUNT2 登入 DB 則相當於是 SELECT * FROM ACCOUNT2.VIEW1    而在 ACCOUNT1.VIEW1、ACCOUNT2.VIEW1、ACCOUNT3.VIEW1 中,則可以獨自 SELECT 各自的 FIELD 即可    PS: 若使用者眾多,這不會是一個好辦法 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
HarryZhang
一般會員


發表:19
回覆:25
積分:8
註冊:2003-01-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-03-24 10:13:21 IP:61.144.xxx.xxx 未訂閱
hi,fishman 謝謝! 還有更好的辦法嗎? Harry Zhang
------
Harry Zhang
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-03-24 12:32:27 IP:210.65.xxx.xxx 未訂閱
Hi HarryZhang,    除了 VIEW 外,看來如果須達到你要的功能,建議你如 Chance36 大大所言,建立一個權限控管的 Table 再於前端動態改變各欄位屬性
引言: 1.正常可看到可修改:其實就是不用設定,用預設值即可。 2.可看到不可修改:TDataSet.FieldDefs[n].ReadOnly := True; 3.不可見當然不可改:TDataSet.FieldDefs[n].Visiable := False;
至於權限控管 TABLE 結構大致如下 USER_ID TABLE_NAME FIELD_NAME QUERY_FLAG EDIT_FLAG .... 供你參考 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-03-24 13:14:46 IP:210.65.xxx.xxx 未訂閱
Hi HarryZhang,
剛剛又想了一個新方法,是將上述兩種用法加以組合應用    1.在 DataBase 中,建立使用者帳號
Group1
Group2
Group3
.....    2.在 DataBase 中,建立 View
Group1.View1
Group2.View1
Group3.View1
....    而在 Group1.View1、Group2.View1、Group3.View1 中,則可以獨自 SELECT 各自的 FIELD 即可    3.在 DataBase 中,建立一個權限控管的 Table
Account    Group
========== ==========
Account1   Group1
Account2   Group1
Account3   Group2
Account4   Group3
.....    當以 Account1 登入系統,會讀出 Account1 登入 DB 帳號為 Group1,意即用 Group1 帳號去登入 DB,
如此一來,在前端 SQL COMMAND 中下
Select * from View1 則相當於是 SELECT * FROM Group1.View1
同理,若是 Account2 則相當於是 SELECT * FROM Group1.View1
      若是 Account3 則相當於是 SELECT * FROM Group2.View1
      若是 Account4 則相當於是 SELECT * FROM Group3.View1    如此可減少 View 的建立,但是必須額外建立 Group1、Group2、Group3... 等帳號
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
HarryZhang
一般會員


發表:19
回覆:25
積分:8
註冊:2003-01-03

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-03-25 10:03:54 IP:218.18.xxx.xxx 未訂閱
********************************************** kingset是一个NT account. Harry Zhang
------
Harry Zhang
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-03-30 09:26:36 IP:210.65.xxx.xxx 未訂閱
Hi HarryZhang,    SQL Server 上必須有一個 Role 或是 User 名為 kingset,而且並須先行建立 DataBase 物件 kingset.View1    很麻煩的 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
HarryZhang
一般會員


發表:19
回覆:25
積分:8
註冊:2003-01-03

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-03-30 10:33:43 IP:61.144.xxx.xxx 未訂閱
hI Fishman, 小弟不知如何建立database物件kingset.veiw1.?请指教.谢谢! Harry Zhang
------
Harry Zhang
HarryZhang
一般會員


發表:19
回覆:25
積分:8
註冊:2003-01-03

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-03-30 10:50:21 IP:61.144.xxx.xxx 未訂閱
我有这个user,kingset. Harry Zhang
------
Harry Zhang
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-03-30 12:46:53 IP:210.65.xxx.xxx 未訂閱
Hi HarryZhang,    於設計檢視表(View)時,按下屬性 Button 並於擁有人上,指定 User 即可 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-06-24 20:05:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!