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

📄 sys_accessctrl1_c.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Sys_AccessCtrl1_C;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Condition, Db, AdODB, StdCtrls, ExtEdit;

Type
  TFrm_Sys_AccessCtrl1_C = Class(TFrm_Base_Condition)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Extedt_DeptCode: TExtEdit;
    Extedt_EmployeeCode: TExtEdit;
    Lb_DeptName: TLabel;
    Lb_EmployeeName: TLabel;
    AdoQry_tmp1: TAdoQuery;
    procedure FormActivate(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure Extedt_DeptCodeExit(Sender: TObject);
    procedure Extedt_EmployeeCodeExit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure EmployeeCodeCheck(Sender: TObject);
  private
    { Private declarations }   
    procedure ShowDepTEmployeeSysmodule;  //在Listbox上写出相关标识
    function GetCount(EmployeeCode:string):Boolean; //用户是否是系统用户
    procedure AddRecord(EmployeeCode:string);           //增加是否有权限记录
  public
    SDeptCode,SEmployeeCode:string;
    procedure GetStation(DeptOrEmployee:string; ListBox:TListBox);// 代码定位
    { Public declarations }
  end;

var
  Frm_Sys_AccessCtrl1_C: TFrm_Sys_AccessCtrl1_C;

implementation
uses Sys_AccessCtrl1,Sys_Global;
{$R *.DFM}

procedure TFrm_Sys_AccessCtrl1_C.FormActivate(Sender: TObject);
begin
  inherited;
  AdoQry_Tmp.Connection:=Frm_Sys_AccessCtrl1.AdoQry_Main.Connection;
  AdoQry_Tmp1.Connection:=Frm_Sys_AccessCtrl1.AdoQry_Main.Connection;
  Extedt_DeptCode.Text:=SDeptCode;
  Extedt_EmployeeCode.Text:=SEmployeeCode;
end;

procedure TFrm_Sys_AccessCtrl1_C.btn_okClick(Sender: TObject);
var
 sOperator:string;
 sDept:string;
 sSQL:string;
begin
  SDeptCode:=Extedt_DeptCode.Text;
  SEmployeeCode:=Extedt_EmployeeCode.Text;

  with AdoQry_tmp do
  begin
    sSQL:=' ';
    sSQL:=sSQL+
          ' select top 1 operator.EmployeeCode,Employee.DeptCode'+
          ' from operator'+
          ' join Employee on operator.EmployeeCode=Employee.EmployeeCode'+
          ' join Dept on Employee.DeptCode=Dept.DeptCode';
    if  Extedt_DeptCode.Text<>'' then
      sSQL:=sSQL+
            ' where Dept.DeptCode='+Quotedstr(Extedt_DeptCode.Text)+
            ' and operator.OperatorUsable=1';
    Close;
    SQL.clear;
    SQL.Add(sSQL);
    open;
    if IsEmpty then
    begin
      DispInfo('此部门暂无系统用户!',1);
      Extedt_DeptCode.SetFocus;
      abort;
    end
    else
    begin
      sOperator:=fieldbyname('EmployeeCode').asstring;
      sDept:= fieldbyname('DeptCode').asstring;
    end;
  end;

  if Trim(Extedt_EmployeeCode.Text)='' then
  begin
    Frm_Sys_AccessCtrl1.ReformSysMenuAccessCtrl(sOperator);
    Frm_Sys_AccessCtrl1.GetTotalRecord(sOperator,'');
    Frm_Sys_AccessCtrl1.DeleteTmptable;
  end
  else
  begin
    Frm_Sys_AccessCtrl1.ReformSysMenuAccessCtrl(Extedt_EmployeeCode.Text);
    Frm_Sys_AccessCtrl1.GetTotalRecord(Extedt_EmployeeCode.text,'');
    Frm_Sys_AccessCtrl1.DeleteTmptable;
  end;

  ShowDepTEmployeeSysmodule;
  GetStation(Extedt_EmployeeCode.Text,Frm_Sys_AccessCtrl1.Lstbx_Employee);
  GetStation(sDept,Frm_Sys_AccessCtrl1.Lstbx_Dept);
  GetStation('全部',Frm_Sys_AccessCtrl1.Lstbx_Module);
end;

procedure TFrm_Sys_AccessCtrl1_C.GetStation(DeptOrEmployee:string; ListBox:TListBox);
var i:integer;
    S:string;
begin
  if ListBox.Items.Count<=1 then ListBox.ItemIndex:=0
  else
  begin
    for i:=0 to ListBox.Items.Count-1 do
    begin
      if Pos(DeptOrEmployee,GetCode(ListBox.Items[i]))=1 then
      begin
        S:=ListBox.Items[i];
        ListBox.ItemIndex:=i;
        break;
      end
      else
      begin
        ListBox.ItemIndex:=0;
      end;
    end;
  end;
end;

procedure TFrm_Sys_AccessCtrl1_C.ShowDepTEmployeeSysmodule;
var
 I:integer;
 S1,S2:string;
begin
  //首先取得人员名称
  with AdoQry_tmp do
  begin
    S1:=' ';
    S1:=S1+
        ' select operator.EmployeeCode,'+
               ' Employee.EmployeeName,'+
               ' operator.EmployeeCode+'' ''+Employee.EmployeeName as operatorB,'+
               ' Employee.DeptCode'+
        ' from operator'+
        ' join Employee on operator.EmployeeCode=Employee.EmployeeCode'+
        ' where 1=1 ';
    if Trim(Extedt_DeptCode.text)<>''then
      S1:=S1+' and Employee.DeptCode='+QuotedStr(Extedt_DeptCode.text);
    if Trim(Extedt_EmployeeCode.Text)<>'' then
      S1:=S1+' and operator.EmployeeCode='+QuotedStr(Extedt_EmployeeCode.Text);

    Close;
    sql.clear;
    sql.Add(S1);
    open;

    First;
    Frm_Sys_AccessCtrl1.Lstbx_Employee.Items.clear;
    while not eof do
    begin
      for i:=0 to AdoQry_tmp.RecordCount-1 do
      begin
       Frm_Sys_AccessCtrl1.Lstbx_Employee.Items.Strings[i]:=fieldbyname('operatorB').asstring;
       next;
      end;
    end;
  end;

  //再取得部门名称
  with AdoQry_tmp do
  begin
    S2:=' ';
    S2:=S2+'select DeptCode+'' ''+DeptName as DeptB from Dept ';
    if Trim(Extedt_DeptCode.text)<>''then
      S2:=S2+' where DeptCode='+Quotedstr(Extedt_DeptCode.Text);
    Close;
    sql.clear;
    sql.Add(S2);
    open;

    First;
    Frm_Sys_AccessCtrl1.Lstbx_Dept.clear;
    while not eof do
    begin
      for i:=0 to AdoQry_tmp.RecordCount-1 do
       begin
         Frm_Sys_AccessCtrl1.Lstbx_Dept.Items.Strings[i]:=fieldbyname('DeptB').asstring;
         next;
       end;
    end;
  end;

  //再取得模块名称
  with AdoQry_tmp do
  begin
    S1:='select SysModuleCode+'' ''+ SysMODULEName as SysMODULEB from Sysmodule';
    Close;
    sql.clear;
    sql.Add(S1);
    open;

    First;
    Frm_Sys_AccessCtrl1.Lstbx_Module.Items.clear;
    Frm_Sys_AccessCtrl1.Lstbx_Module.Items[0]:='全部';
    while not eof do
    begin
      for i:=1 to AdoQry_tmp.RecordCount do
       begin
         Frm_Sys_AccessCtrl1.Lstbx_Module.Items.Strings[i]:=fieldbyname('SysMODULEB').asstring;
         next;
       end;
    end;
  end;
end;

procedure TFrm_Sys_AccessCtrl1_C.Extedt_DeptCodeExit(Sender: TObject);
var
  S:string;
  sSQL:string;  
begin
  inherited;
  if  Extedt_DeptCode.text='' then exit;
  S:='select DeptCode,DeptName from Dept where DeptCode='+QuotedStr(Extedt_DeptCode.text);
  with AdoQry_Tmp do
  begin
    Close;
    SQL.clear;
    SQL.Add(S);
    Open;
    if  AdoQry_Tmp.RecordCount<=0 then
    begin
      DispInfo('代码错误!',1);
      Extedt_DeptCode.SetFocus;
      abort;
    end;
    Lb_DeptName.Caption:= fieldbyname('DeptName').asstring;;
  end;

  with AdoQry_tmp do
  begin
    sSQL:=' ';
    sSQL:=sSQL+
          ' select top 1 operator.EmployeeCode'+
          ' from operator'+
          ' join Employee on operator.EmployeeCode=Employee.EmployeeCode'+
          ' join Dept on Employee.DeptCode=Dept.DeptCode';
    if  Extedt_DeptCode.Text<>'' then
      sSQL:=sSQL+
            ' where Dept.DeptCode='+Quotedstr(Extedt_DeptCode.Text);
    Close;
    SQL.clear;
    SQL.Add(sSQL);
    open;
    if IsEmpty then
    begin
      DispInfo('此部门暂无系统用户!',1);
      Extedt_DeptCode.SetFocus;
      exit;
    end;
  end;  
end;

procedure TFrm_Sys_AccessCtrl1_C.Extedt_EmployeeCodeExit(Sender: TObject);
var
  S:string;
begin
  inherited;
  if  Trim(Extedt_EmployeeCode.text)<>'' then
  begin
    Extedt_DeptCode.ReadOnly:=True;
    S:=' select operator.EmployeeCode,'+
              ' Employee.EmployeeName,'+
              ' Employee.DeptCode,'+
              ' Dept.DeptName,'+
              ' operator.operatorUsable'+
      ' from operator'+
      ' left join Employee on operator.EmployeeCode=Employee.EmployeeCode'+
      ' left join Dept on Employee.DeptCode=Dept.DeptCode'+
      ' where operator.EmployeeCode='+Quotedstr(Trim(Extedt_EmployeeCode.text));
    with AdoQry_tmp do
    begin
      Close;
      SQL.clear;
      SQL.Add(S);
      Open;
      if eof then
      begin
        DispInfo('错误的用户代码',1);
        Extedt_EmployeeCode.SetFocus;
        Abort;
      end;
      if fieldbyname('operatorUsable').AsInteger=0 then
      begin
        DispInfo('此用户无效',1);
        Extedt_EmployeeCode.SetFocus;
        Abort;
      end;
      Lb_EmployeeName.Caption:=fieldbyname('EmployeeName').AsString;
      Extedt_DeptCode.Text:=fieldbyname('DeptCode').AsString;
      Lb_DeptName.Caption:=fieldbyname('DeptName').AsString;
    end;
  end
  else
  begin
      Lb_EmployeeName.Caption:='';
      Extedt_DeptCode.Text:='';
      Lb_DeptName.Caption:='';
  end;
  if (Trim(Extedt_EmployeeCode.Text)<>'') and (GetCount(Extedt_EmployeeCode.Text))
  then  AddRecord(Extedt_EmployeeCode.Text);
end;

function TFrm_Sys_AccessCtrl1_C.GetCount(EmployeeCode:string):Boolean;
var
  S:string;
begin
  S:= 'select * from SysMenuAccessCtrl where EmployeeCode='+QuoTedStr(EmployeeCode);
  with AdoQry_Tmp do
  begin
    Close;
    SQL.clear;
    SQL.Add(S);
    Open;

    if IsEmpty then Result:=True
    else Result:=False;
  end;
end;

procedure TFrm_Sys_AccessCtrl1_C.AddRecord(EmployeeCode:string);
var
  I:integer;
  S:string;
begin
  with AdoQry_Tmp1 do
  begin
    Close;
    SQL.clear;
    SQL.Add('select * from SysMenu Order by SysModuleCode,SysMenuCode');
    Open;

    First;
    while not eof do
    begin
      for i:=1 to AdoQry_tmp1.RecordCount do
      begin
        with AdoQry_tmp do
        begin
          S:='insert into SysMenuAccessCtrl(EmployeeCode,SysMenuID,CANAccess) ValueS('+Quotedstr(EmployeeCode)+','+AdoQry_tmp1.fieldbyname('SysMenuid').Asstring+',0)';
          Close;
          SQL.clear;
          SQL.Add(s);
          Prepared;
          ExecSQL;
        end;
        next;
      end;
    end;
  end;

end;

procedure TFrm_Sys_AccessCtrl1_C.FormCreate(Sender: TObject);
begin
  inherited;
  AdoQry_tmp1.Connection:=Frm_Sys_AccessCtrl1.AdoQry_Main.Connection;
end;

procedure TFrm_Sys_AccessCtrl1_C.EmployeeCodeCheck(Sender: TObject);
var
  S:string;
begin
  inherited;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -