📄 sys_giveaccess.pas
字号:
//
unit Sys_GiveAccess;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Condition, StdCtrls, Db, AdODB, CheckLst, ExtEdit, Mask;
Type
TFrm_Sys_GiveAccess = Class(TFrm_Base_Condition)
ChLstBx_WhSelect: TCheckListBox;
Label1: TLabel;
ChBx_SelectAll: TCheckBox;
procedure btn_okClick(Sender: TObject);
procedure ChLstBx_WhSelectClickCheck(Sender: TObject);
procedure ChBx_SelectAllClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
modulestr:string;
userName:string;
{ Private declarations }
public
{ Public declarations }
procedure InitForm(AdOConnection:TAdOConnection;UserCode:String);
end;
var
Frm_Sys_GiveAccess: TFrm_Sys_GiveAccess;
implementation
uses Sys_Global,Sys_AccessCtrl;
{$R *.DFM}
procedure TFrm_Sys_GiveAccess.InitForm(AdOConnection:TAdOConnection;UserCode:String);
begin
inherited;
SetDBConnect(AdOConnection);
with AdoQry_tmp do
begin
Close;
sql.Text:='select * from Employee where EmployeeCode='''+userCode+'''';
open;
userName:=fieldbyname('EmployeeName').asstring;
end;
with AdoQry_Tmp do
begin
Close;
SQL.Text:='Select SysModuleCode,SysmoduleName '+
'From Sysmodule Order by Sysmoduleid';
Open;
ChLstBx_WhSelect.clear;
First;
while not Eof do
begin
ChLstBx_WhSelect.Items.Add(fieldbyname('SysModuleCode').AsString+' '+fieldbyname('SysmoduleName').AsString);
AdoQry_Tmp.Next;
end;
end;
end;
procedure TFrm_Sys_GiveAccess.btn_okClick(Sender: TObject);
var
i:integer;
ss:string;
begin
inherited;
modulestr:='';
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.Add('select * from SysmoduleAccessCtrl where EmployeeCode='''+getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+'''');
open;
while not eof do
begin
modulestr:=modulestr+fieldbyname('SysModuleCode').asstring+',';
next;
end;
end;
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.Add('delete from SysmoduleAccessCtrl where EmployeeCode='''+getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+'''');
execsql;
Close;
sql.clear;
sql.Add('insert SysMenuAccesslog (EmployeeCode,action,Ctrl_EmployeeCode'+
',acttime) Values (:EmployeeCode,:action,:Ctrl_EmployeeCode'+
',getdate())');
Parameters.ParambyName('EmployeeCode').Value:=getCode(Frm_Sys_AccessCtrl.cmbbx_user.text);
Parameters.ParambyName('action').Value:='删除'+getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+'用户的'+modulestr+
'模块权限';
Parameters.ParambyName('Ctrl_EmployeeCode').Value:=userCode+' '+userName;
execsql;
Close;
sql.clear;
sql.Add('delete from SysMenuAccessCtrl where EmployeeCode='''+getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+'''');
execsql;
for i:=0 to ChLstBx_WhSelect.Items.Count-1 do
begin
if ChLstBx_WhSelect.Checked[i] then
begin
Close;
ss:='insert SysmoduleAccessCtrl (EmployeeCode,SysModuleCode) Values '+
'('''+getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+''','''+getCode(ChLstBx_WhSelect.Items.Strings[i])+''')';
sql.clear;
sql.Add(ss);
execsql;
end;
end;
modulestr:='';
Close;
sql.clear;
sql.Add('select * from SysmoduleAccessCtrl where EmployeeCode='''+getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+'''');
open;
while not eof do
begin
modulestr:=modulestr+fieldbyname('SysModuleCode').asstring+',';
next;
end;
Close;
sql.clear;
sql.Add('insert SysMenuAccesslog (EmployeeCode,action,Ctrl_EmployeeCode'+
',acttime) Values (:EmployeeCode,:action,:Ctrl_EmployeeCode'+
',getdate())');
Parameters.ParambyName('EmployeeCode').Value:=getCode(Frm_Sys_AccessCtrl.cmbbx_user.text);
Parameters.ParambyName('action').Value:='增加'+getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+'用户的'+modulestr+
'模块权限';
Parameters.ParambyName('Ctrl_EmployeeCode').Value:=userCode+' '+userName;
execsql;
Close;
sql.clear;
ss:='insert SysMenuAccessCtrl (EmployeeCode,SysMenuID,CANAccess) select '''+
getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+''',a.SysMenuID,'''+'1'+
''' from SysMenu a,SysmoduleAccessCtrl b where '+
'a.SysModuleCode=b.SysModuleCode and b.EmployeeCode='''+getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+'''';
sql.Add(ss);
execsql;
end;
ModalResult:=mrOk;
end;
procedure TFrm_Sys_GiveAccess.ChLstBx_WhSelectClickCheck(
Sender: TObject);
var
i:Integer;
begin
inherited;
btn_ok.Enabled:=False;
for i:=0 to ChLstBx_WhSelect.Items.Count-1 do
begin
if ChLstBx_WhSelect.Checked[i] then
btn_ok.Enabled:=True;
end;
end;
procedure TFrm_Sys_GiveAccess.ChBx_SelectAllClick(Sender: TObject);
var
i:integer;
begin
inherited;
if ChBx_SelectAll.Checked then
begin
for i:=0 to ChLstBx_WhSelect.Items.Count-1 do
begin
ChLstBx_WhSelect.Checked[i]:=True;
end;
btn_ok.Enabled:=True;
end
else
begin
for i:=0 to ChLstBx_WhSelect.Items.Count-1 do
begin
ChLstBx_WhSelect.Checked[i]:=False;
end;
btn_ok.Enabled:=False;
end;
end;
procedure TFrm_Sys_GiveAccess.FormActivate(Sender: TObject);
var
i:integer;
aa,bb:string;
begin
inherited;
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.Add('select * from SysmoduleAccessCtrl where EmployeeCode='''+
getCode(Frm_Sys_AccessCtrl.cmbbx_user.Text)+'''');
open;
while not eof do
begin
for i:=0 to ChLstBx_WhSelect.Items.Count-1 do
begin
aa:=getCode(ChLstBx_WhSelect.Items.Strings[i]);
bb:=fieldbyname('SysModuleCode').asstring;
if getCode(ChLstBx_WhSelect.Items.Strings[i])=fieldbyname('SysModuleCode').asstring then
ChLstBx_WhSelect.Checked[i]:=True;
end;
next;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -