截止2004年12月16日 |
本站源码总量RAR压缩为 4,206,733 KB。其中免费源码为 1,124,495 KB,商业源码为 3,082,238 KB!
C/C++ |
129,555 KB |
Delphi |
1,258,381 KB |
Java |
120,937 KB |
.Net |
36,886 KB |
PowerBuilder |
954,525 KB |
Visual Basic |
923,454 KB |
ASP |
259,795 KB |
JSP |
4,987 KB |
其他 |
94,723 KB |
|
|
如何实现系统权限的设置 |
|
在许多数据库方面的书籍都曾提到过数据系统操作权限设置,但仅仅是单纯地介绍原理,没有真正地给出一个示例;或者只是简单地给出一个系统权限的例子:口令+用户名。然而在实际的数据库系统开发中是不可能这么简单;它要求系统的权限管理能够对系统中每一项操作进行控制;如数据的增加,删除,修改等等。
为了大家能够进行技术交流,现把我在一个MIS中所做的权限管理功能的实现写出来,请大家斧正。
原理如下:
在一个表中包涵系统中所有的菜单项及功能按钮,并增加相关字段用来设定有关的操作权限是“True”还“False”;在进入系统后除了要用户名和密码正确外还要通过在该表中找到相关的权限看是否能操作。
根据以上原理我们可以如下操作:
1.表的结构设置为:
CD Alphi 20 * 操作项,为用户名加菜单项)
ZJ Logical 增加功能,“能”为True,“不能”为False,默认为False)
其它字段类似。
2.在Form中放入一个Ttreeview,一个TTabel,二个Tbutton(Button1,Button2),一个TQuery,一个TDatasource和TDBGrid。
3.DBGrid的Dataset为Query,DBGrid的Datasource为Datasource1。
4.TQuery1的RequertLive设为True,可以修改值。
原程序如下:
procedure TForm1.Button1Click Sender: TObject);//把菜单中所有项加入到Treeview1中
var
i,j:integer;
mynode:ttreenode;
begin
with treeview1 do
for I:= 0 to mainmenu1.Items.Count-1 do
begin
mynode:=items.Add nil,mainmenu1.items[i].Caption);
for j:=0 to mainmenu1.items[i].count-1 do
begin
Items.AddChild mynode,mainmenu1.Items[i].Items[j].Caption);
end;
end;
end;
procedure TForm1.Button2Click Sender: TObject);//把Treeview1中的Items转成表 // 的’CD’字字段唯一标识。
var
i,j,a1:integer;
begin
table1.First;
table1.Active:=true;
a1:= treeview1.Items.count-1;//Treeview1中的总结点数
for i:=0 to a1 do
begin
if i=0 then //如果是第一个结点
begin
table1.Insert;
table1.FieldByName ’cd’).asstring:=edit2.text+treeview1.Items[i].Text;
end
else
if treeview1.Items[i].Index =0 then //如果是某个结点中的第一个子结点
begin
j:=i-1;
table1.insert;
table1.FieldByName ’cd’).asstring:=edit2.text+treeview1.Items[j].Text+’-’+treeview1.Items[i].Text;
end
else
if copy treeview1.Items[i].Text,1,1)<>’&’ then //如果不是父结点
begin
j:=i-treeview1.Items[i].Index-1;
table1.insert;
table1.FieldByName ’cd’).asstring:=edit2.text+treeview1.Items[j].Text+’-’+treeview1.Items[i].Text;
end
else
if copy treeview1.Items[i].Text,1,1)=’&’ then //如果是父结点
begin
table1.insert;
table1.FieldByName ’cd’).asstring:=edit2.text+treeview1.Items[i].Text;
end;
end;
end;
procedure TForm1.TreeView1Click Sender: TObject); //查找或修改某人在某项的//操作权限
var
s1:string;
begin
s1:=treeview1.Selected.Text; //选中结点
with query1 do
begin
close;
sql.clear;
sql.Add ’select * from qx where cd like:v_cd’);
parambyname ’v_cd’).asstring:=edit2.text+’%’+s1;
prepare;
open;
end;
end;
end.
本段代码在windows2000及Delphi5中运行通过。
|
|
文章出处: |
|
发表时间:2004-12-24 17:01:15 |
共1条数据记录,分1页显示 上一页 < [1] > 下一页 |
|