⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sys_giveaccess.pas

📁 一个MRPII系统源代码版本
💻 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 + -