本文實現的是一個帳務管理系統中分級權限的控制
程序使用ASP和JavaScript編寫
在裝有IIS
的win NT服務器上運行
速度快
易維護
權限級別劃分如下
①
院長和財務科長
不能輸入
可以無限制查詢
統計
②
副院長
不能輸入
可以查詢
統計其分管部門的帳務
③
部門領導
不能輸入
可以查詢
統計本部門的帳務
④
會計
能輸入各部門的帳務(一個會計有時要做幾個部門的帳)
只能查詢
統計自己輸入的帳務
涉及的數據庫和字段如下
①
JK_USER數據庫及字段
id(序列號)
bmid(部門號)
username(用戶名)
pwd(口令)
right(權限值)
②
BM數據庫及字段:id(序列號)
bmid(部門號)
③
JZPZ數據庫及字段
id(序列號)
bm(部門)
zgs(子公司)
xmz(項目組)
xm(項目)
sr(收入)
zc(支出)
szfx(收支方向)
szxs(收支形式)
rq(日期)
jbr(經辦人)
lrr(錄入人)
szsm(收支說明)
④
ZGS數據庫及字段
id(序列號)
zgs(子公司)name(公司名)
bmid(部門編號)
.首先進行用戶身份合法性驗證
將用戶提交的用戶名和口令與數據庫JK_USER中的字段對照對照
以確定其合法性
只有合法的用戶(系統管理員為其開過戶)才可以進入
合法用戶有四種權限級別
分別賦予
四種權限值
(程序略)
.憑證記帳(分級權限控制)
憑證記帳功能是專為會計人員服務的
其他人不可以使用
如以非會計人員身份進入憑證錄入界面時
只有
查詢記帳憑證
功能按鈕可見
其它功能按鈕不可見
錄入的憑證先存放在一個臨時表裡
稱為
未記帳憑證庫
只有運行
憑證記帳
功能後才進入
憑證庫
在
未記帳憑證庫
中的憑證可以修改
部分程序如下
非會計人員進入
不顯示
憑證記帳
和
保存未記帳憑證
功能按鈕
if (thisPage
firstEntered) then
if session(
tright
)<>
then
button
hide
button
hide
end if
…………
自動填寫時間和操作人
Textbox
value=year(date) &
& month(date) &
& day(date)
Textbox
value =session(
username
)
set cnn
=server
CreateObject(
nnection
)
set rst
=server
CreateObject(
adodb
recordset
)
cnn
CursorLocation=
cnn
ConnectionTimeout =
cnn
Open
DSN=jky
rst
Open
select * from bm
cnn
adcmdtext
if rst
RecordCount >
then
RST
MoveFirst
Id=rst
Fields(
id
)
do while not rst
EOF
Listbox
addItem rst
Fields(
bmName
)
cint(rst
Fields(
id
))
Response
Write rst
Fields(
bmname
) & rst
Fields(
id
)
rst
MoveNext
loop
end if
rst
Close
rst
Open
select zgsname from zgs where bmid=
& id
cnn
adcmdtext
if rst
RecordCount >
then
rst
MoveFirst
do while not rst
EOF
Listbox
addItem cstr(rst
Fields(
zgsname
))
rst
MoveNext
loop
end if
rst
Close
cnn
close
call writerst
end if
end function
………………
憑證記帳
sub button
_onclick
dim s
s=Listbox
selectedIndex
Response
Write s
end sub
sub listbox
_onchange
dim id
i
i=Listbox
getCount()
do while i>
call Listbox
removeItem(i)
i=i
loop
id=listbox
getValue (listbox
selectedIndex)
set cnn
=server
CreateObject(
nnection
)
set rst
=server
CreateObject(
adodb
recordset
)
cnn
CursorLocation=
cnn
ConnectionTimeout =
cnn
Open
DSN=jky
rst
Open
select zgsName from zgs where bmid=
& id
cnn
adcmdtext
if rst
RecordCount >
then
RST
MoveFirst
do while not rst
EOF
Listbox
addItem cstr(rst
Fields(
zgsName
))
rst
MoveNext
loop
end if
rst
Close
cnn
Close
end sub
sub button
_onclick
set cnn
=server
CreateObject(
nnection
)
cnn
CursorLocation=
cnn
ConnectionTimeout =
cnn
Open
DSN=jky
cnn
Execute
insert into jzpz(bm
zgs
xmz
xm
sr
zc
szfx
szxs
rq
jbr
lrr
szsm) select bm
zgs
xmz
xm
sr
zc
szfx
szxs
rq
jbr
lrr
szsm from wjzpz where lrr=
& session(
username
) &
cnn
Execute
delete from wjzpz where lrr=
& session(
username
) &
end sub
數據查詢(分級權限控制)
以憑證的字段為條件進行查詢
在供選條件前有一方框供打
√
其中
部門
條件必選(程序自動加上)
部門內容由程序根據用戶的權限自動從數據庫中調用相應值
分公司內容根據所屬部門自動調整
部分程序如下
……………
根據權限值進入相應的查詢界面
……………
function thisPage_onenter()
set cnn
=server
CreateObject(
nnection
)
set rst
=server
CreateObject(
adodb
recordset
)
cnn
CursorLocation=
cnn
ConnectionTimeout =
cnn
Open
dsn=jky
select case session(
Tright
)
case
副院長
rst
Open
select bm
bmName from jk_user
bm where JK_user
bmid=bm
id and jk_user
username =
& session(
username
) &
cnn
adcmdtext
if rst
RecordCount >
then
RST
MoveFirst
do while not rst
EOF
Listbox
addItem cstr(rst
Fields(
bmName
))
rst
MoveNext
loop
end if
rst
Close
rst
Open
select zgsname from zgs
cnn
From:http://tw.wingwit.com/Article/program/net/201311/12280.html