我要用checktreeview 做个用户权限管理的
现在有checktreeview控件了,有ischecked,setallchecked,setchecked 方法,怎么实现代码的
每个功能模块,怎么存到权限字段中,像
用户 权限
小张 10101001
小李 00000001
在线等,先谢谢了啊
现在有checktreeview控件了,有ischecked,setallchecked,setchecked 方法,怎么实现代码的
每个功能模块,怎么存到权限字段中,像
用户 权限
小张 10101001
小李 00000001
在线等,先谢谢了啊
解决方案 »
- 求一SQL语句
- 一個沒入門的XML問題
- 怎样从数据库删除图片阿,为什么只为null再显示就报错啊
- 在stringgrid和dbgrid中,怎样对鼠标圈选的多行记录进行操作
- quickreport 的问题
- fastreport中如何使用SUM对数据表的一列进行统计?
- 怎么在查询数据时显示一个进度条?
- 如何设置一个字段的属性????快,一句代码就50分
- 如何访问blob字段,通过BDE,数据库SQL SERVER2000 急!!!!!!!!!
- 怎样屏蔽WINDOWS NT4.0系统键。
- 大家帮忙研究一下,如何将日志钩子记录下的动作全部保存到文件中,程序下次运行时打开此文件仍然可以重放上一次录制的东西?分不够再加
- DLL组件中函数的使用方法?再开贴!
procedure TPopeInfo_Form.Pope_SaveClick(Sender: TObject);
var
I :integer;
BegD,EndD,BegT,EndT :string;
begin
if Pope_PageGroup.ActivePage = TeTabSheet1 then
begin
if Length(Trim(Pope_UseID.Text))<>0 then
begin BegD := DateToStr(Pope_BeginDate.Date);
EndD := DateToStr(Pope_EndDate.Date);
BegT := FormatDateTime('HH:mm:ss',Pope_BeginDate.Time);
EndT := FormatDateTime('HH:mm:ss',Pope_BeginDate.Time);
DataForm.Read_Tables.Close;
DataForm.Read_Tables.Connection := DataForm.SrvClient;
DataForm.Read_Tables.SQL.Clear;
DataForm.Read_Tables.SQL.Add('Exec Mis_WritePope ''1'','+
''''+Pope_UseID.Text+''''+','+
''''+mLoginID+''''+','+''''+BegD+''''+','+
''''+EndD+''''+','+''''+BegT+''''+','+
''''+EndT+'''');
DataForm.Read_Tables.Open;
DataForm.Read_Tables.LockType := ltBatchOptimistic;
for I :=MenuGroup.Items.Count-1 downto 0 do
begin
if MenuGroup.ItemState[I] = csUnchecked then
begin
if DataForm.Read_Tables.Locate('cratename',MenuGroup.Items.Item[I].Text
,[loCaseInsensitive]) then
begin
DataForm.Read_Tables.Edit;
DataForm.Read_Tables.FieldByName('check').Value := '×';
DataForm.Read_Tables.UpdateBatch(arAll);
end;
end;
end;
DataForm.Write_Tables.Close;
DataForm.Write_Tables.Connection := DataForm.SrvClient;
DataForm.Write_Tables.SQL.Clear;
DataForm.Write_Tables.SQL.Add('Exec Mis_WritePope ''2'','+
''''+Pope_UseID.Text+''''+','+
''''+mLoginID+''''+','+''''+BegD+''''+','+
''''+EndD+''''+','+''''+BegT+''''+','+
''''+EndT+'''');
DataForm.Write_Tables.ExecSQL;
DataForm.Write_Tables.Close;
Application.MessageBox('用户权限保存成功!','提示',MB_ICONINFORMATION+MB_OK);
LoadPopeInfo;
end;
end;
end;
ALTER PROCEDURE Mis_CheckPope
@nID Char(6)
AS
If Exists(Select [name] from sysobjects where xtype='U' and [name]='mis_popetemp')
Begin
Drop Table mis_popetemp
End
If Exists(Select employeid from mis_popeinfo where employeid=@nID)
Begin
Select c.employeid,c.employee,a.menuid,a.menuname,b.crateid,b.cratename,b.hotkey,'×' as [check],c.groupflag,c.groupname
Into mis_popetemp
From mis_menuinfo as a,mis_cratinfo as b,(Select employeid,groupflag from mis_emplinfo where employeid=@nID) as d
Left join mis_emplinfo as c on c.groupflag=d.groupflag and c.employeid=d.employeid
where a.menuid=b.menuid and c.employeid=@nID
update mis_popetemp set [check]='√' where crateid in (select crateid from mis_popeinfo where employeid=@nID)
/*
Select c.employeid,c.employee,a.menuid,a.menuname,b.crateid,b.cratename,
Case c.groupid
when '02' then b.adminuser
when '03' then b.commuser
when '04' then b.limituser
End as [check]
Into mis_popetemp
From mis_menuinfo as a,mis_cratinfo as b
Left join mis_popeinfo as c on c.crateid=b.crateid
Where a.menuid=b.menuid and c.employeid=@nID
*/
End
Else
Begin
Select c.employeid,c.employee,a.menuid,a.menuname,b.crateid,b.cratename,b.hotkey,
Case c.groupflag
when '02' then b.adminuser
when '03' then b.commuser
when '04' then b.limituser
End as [check],c.groupflag,c.groupname
Into mis_popetemp
From mis_menuinfo as a,mis_cratinfo as b,(Select employeid,groupflag from mis_emplinfo where employeid=@nID) as d
Left join mis_emplinfo as c on c.groupflag=d.groupflag and c.employeid=d.employeid
where a.menuid=b.menuid and c.employeid=@nID
End
二、在选择相应的权限项目时判断当前项目是否的状态是否是ischecked,如果为True根据checktreeview中所选的项目名称在数据集中查找相对应的数据,然后修改mycheck字段
三、全部完成数据集保存到权限表中就可以了
var
yhm,cdbh,cdmc,sqlstr:string;
begin
Caption:=usergl_form.xx;
Query1.SessionName:=mainform.Database1.SessionName;
Query1.DatabaseName:=mainform.Database1.DatabaseName;
with tquery.Create(nil) do
begin
try
Close;
SessionName:=mainform.Database1.SessionName;
DatabaseName:=mainform.Database1.DatabaseName;
sqlstr:='select * from t_cdx order by 菜单项';
SQL.Clear;
SQL.Add(sqlstr);
Open;
First;
while not Eof do
begin
cdbh:=fieldbyname('菜单项').AsString;
cdmc:=fieldbyname('菜单名').AsString;
Checklistbox1.Items.Add(cdbh+'&'+cdmc);
if usergl_form.modi then
begin
yhm:=usergl_form.Query1.fieldbyname('用户名').AsString;
sqlstr:='select * from t_qxb where(用户名='''+yhm+''')and(菜单项='''+cdbh+''')';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(sqlstr);
Query1.Open;
if query1.RecordCount > 0 then
Checklistbox1.Checked[Checklistbox1.Count-1]:=true;
end;
Next;
end;
finally
Free;
end;
end;
end;procedure Tmodiuser_Form.SpeedButton1Click(Sender: TObject);
var
id,sqlstr1,sqlstr,cdbh,yhm,mm:string;
i:integer;
begin
if usergl_form.modi then
id:=usergl_form.Query1.fieldbyname('id').AsString;
yhm:=trim(yhm_ledit.Text);
if (length(yhm)<3) or (length(yhm)>20) then
begin
showmessage('用户名由3--20个字符组成!');
exit;
end;
mm:=trim(mm_ledit.Text);
if (length(mm)<3) or (length(mm)>20) then
begin
showmessage('密码由3--20个字符组成!');
exit;
end;
sqlstr1:='select * from t_user where (用户名='''+yhm+''') and (id<>'''+id+''')';
if usergl_form.modi then
sqlstr:='update t_user set 用户名='''+yhm+''',密码='''+mm+ ''' where (id='''+id+''')'
else
sqlstr:='insert into t_user(用户名,密码) values('''+yhm+''','''+mm+''')';
with tquery.Create(nil) do
begin
try
SessionName:=mainform.Database1.SessionName;
DatabaseName:=mainform.Database1.DatabaseName;
SQL.Clear;
SQL.Add(sqlstr1);
Open;
if recordcount > 0 then
begin
showmessage('该用户名已经存在,请改用其他用户名!!!');
exit;
end;
SQL.Clear;
SQL.Add(sqlstr);
ExecSQL;
for i:=0 to checklistbox1.Count-1 do
begin
if usergl_form.modi then
begin
cdbh:=copy(checklistbox1.Items.Strings[i],0,3);
if checklistbox1.Checked[i] then
begin
sqlstr:='select * from t_qxb where (用户名='''+yhm+''')and(菜单项='''+cdbh+''') order by 菜单项';
SQL.Clear;
SQL.Add(sqlstr);
Open;
if recordcount <= 0 then
begin
sqlstr1:='insert into t_qxb(用户名,菜单项)values('''+yhm+''','''+cdbh+''')';
SQL.Clear;
SQL.Add(sqlstr1);
ExecSQL;
end;
end
else
begin
sqlstr:='delete from t_qxb where (用户名='''+yhm+''')and (菜单项='''+cdbh+''')';
SQL.Clear;
SQL.Add(sqlstr);
ExecSQL;
end;
end
else
begin
cdbh:=copy(checklistbox1.Items.Strings[i],0,3);
if checklistbox1.Checked[i] then
begin
sqlstr1:='insert into t_qxb(用户名,菜单项)values('''+yhm+''','''+cdbh+''')';
SQL.Clear;
SQL.Add(sqlstr1);
ExecSQL;
end;
end;
end;
finally
Free;
end;
end;
Close;end;