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

📄 sys_accessctrl1.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  I:integer;
begin
  inherited;
  with AdoQry_tmp do
  begin
    S1:=' select Dept.DeptCode,operator.EmployeeCode+'' ''+Employee.EmployeeName as operatorB'+
        ' from operator'+
        ' join Employee on operator.EmployeeCode=Employee.EmployeeCode'+
        ' join Dept on Employee.DeptCode=Dept.DeptCode'+
        ' where operator.OperatorUsable=1 and Employee.DeptCode='+QuotedStr(GetCode(Lstbx_Dept.Items.Strings[Lstbx_Dept.ItemIndex]));

    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;
  if AdoQry_Main.Active then AdoQry_Main.Close;
end;

procedure TFrm_Sys_AccessCtrl1.ReformSysMenuAccessCtrl(operatorCode1:string);
var
  CreateStr,GetNoCtrl:string;
  sUpdate:string;
  I:integer;
begin
  with AdoQry_Tmp1 do
  begin
    CreateStr:=' select EmployeeCode='+QuotedStr(operatorCode1)+
               ' ,SysMenuID,CANAccess=0'+
               ' into #TMpSysMenuAccessCtrl'+
               ' from SysMenu';
    Close;
    SQL.clear;
    SQL.Add(CreateStr);
    Prepared;
    ExecSQL;

    GetNoCtrl:=' select #TMpSysMenuAccessCtrl.EmployeeCode,'+
               ' #TMpSysMenuAccessCtrl.SysMenuID,'+
               ' #TMpSysMenuAccessCtrl.CANAccess'+
        ' from #TMpSysMenuAccessCtrl'+
        ' where #TMpSysMenuAccessCtrl.SysMenuID not in'+
                ' (select SysMenuid from SysMenuAccessCtrl where EmployeeCode='+QuotedStr(operatorCode1)+')';
    Close;
    SQL.clear;
    SQL.Add(GetNoCtrl);
    Open;


    First;
    sUpdate:='';
    while not Eof do
    begin
      for i:=0 to RecordCount-1 do
      begin
        sUpdate:=sUpdate+
           ' insert into SysMenuAccessCtrl(EmployeeCode,SysMenuID,CANAccess) '+
           ' Values('+QuotedStr(operatorCode1)+','+
           fieldbyname('SysMenuID').asstring+',0)  ';
        next;
      end;
    end;
  end;

  with AdoQry_tmp do
  begin
    Close;
    SQL.clear;
    SQL.Add(sUpdate);
    Prepared;
    ExecSQL
  end;
end;

procedure TFrm_Sys_AccessCtrl1.GetTotalRecord(operatorCode1,SysModuleCode1:string);
var
  sSQL:string;
begin
  sSQL:='';
  sSQL:=sSQL+  'select SysMenuAccessCtrl.EmployeeCode,'+
       ' Employee.EmployeeName,'+
       ' SysMenuAccessCtrl.SysMenuID,'+
       ' SysMenu.SysMenuCode,'+
       ' SysMenu.SysMenuName,'+
       ' SysMenu.SysMenuCode+'' ''+SysMenu.SysMenuName as SysMenuB,'+
       ' SysMenu.SysModuleCode,'+
       ' Sysmodule.SysmoduleName,'+
       ' SysMenu.SysModuleCode+'' ''+Sysmodule.SysmoduleName as SysmoduleB,'+
       ' SysMenuAccessCtrl.CANAccess'+
    ' from SysMenuAccessCtrl'+
    ' join  Employee on SysMenuAccessCtrl.EmployeeCode=Employee.EmployeeCode'+
    ' join SysMenu on SysMenuAccessCtrl.SysMenuID=SysMenu.SysMenuid'+
    ' join Sysmodule on SysMenu.SysModuleCode=Sysmodule.SysModuleCode'+
    ' where  SysMenuAccessCtrl.EmployeeCode='+QuotedStr(operatorCode1);
  if SysModuleCode1<>''then
    sSQL:=sSQL+ 'and SysMenu.SysModuleCode='+QuotedStr(SysModuleCode1);
  if Condition<>'' then
    sSQL:=sSQL+ ' and ' + Condition;
  sSQL:=sSQL+' Order by SysMenu.SysModuleCode,SysMenu.SysMenuCode';
  with AdoQry_Main do
  begin
    Close;
    SQL.clear;
    SQL.Add(sSQL);
    Open;
  end;
end;

procedure TFrm_Sys_AccessCtrl1.DeleteTmptable;
begin
  with AdoQry_tmp do
  begin
    Close;
    SQL.clear;
    SQL.Add('drop table #tMpSysMenuAccessCtrl ');
    Prepared;
    ExecSQL;
  end;
end;

procedure TFrm_Sys_AccessCtrl1.DBGridEhTitleClick(Column: TColumnEh);
var
  UpdateSQL:string;
begin
  EmployeeCondition:=Lstbx_Employee.Items[Lstbx_Employee.ItemIndex];
  EmployeeCondition:=getCode(EmployeeCondition);

  if  Lstbx_Module.Itemindex=0   then ModuleCondition:=''
  else
  begin
    ModuleCondition:=Lstbx_Module.Items[Lstbx_Module.Itemindex];
    if ModuleCondition<>'' then ModuleCondition:=getCode(ModuleCondition);
  end;

  If Trim(Column.Title.Caption)<>'权限' Then
    Abort;
  If AdoQry_Main.RecordCount=0 Then
    Abort;

  UpdateSQL:=' ';

  If Not Flag Then
  begin
    UpdateSQL:=' update SysMenuAccessCtrl set CANAccess=1'+
               ' where EmployeeCode='+QuotedStr(EmployeeCondition);
    if Trim(ModuleCondition)<>'' then
      UpdateSQL:=UpdateSQL+' and  SysMenuid in'+
                 ' (select SysMenuid from SysMenu where SysModuleCode='+
                       Quotedstr(ModuleCondition)+')';
  end
  Else
  begin
    UpdateSQL:=' update SysMenuAccessCtrl set CANAccess=0'+
               ' where EmployeeCode='+QuotedStr(EmployeeCondition);
    if Trim(ModuleCondition)<>'' then
      UpdateSQL:=UpdateSQL+' and  SysMenuid in'+
                 ' (select SysMenuid from SysMenu where SysModuleCode='+
                       Quotedstr(ModuleCondition)+')';
  end;

  if Trim(UpdateSQL)<>'' then
  begin
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      SQL.Add(UpdateSQL);
      Prepared;
      ExecSQL;
    end;
  end;

  Flag:=Not Flag;
  GetTotalRecord(EmployeeCondition,ModuleCondition);
end;

procedure TFrm_Sys_AccessCtrl1.FormActivate(Sender: TObject);
begin
  inherited;
  Flag:=False;
end;

procedure TFrm_Sys_AccessCtrl1.GetSysModuleAccessCtrl(EmployCode:String);
var
  sSQL:string;
  UpdateSQL:string;
begin
  with AdoQry_tmp do
  begin
    sSQL:=' select SysModuleCode from Sysmodule'+
          ' where SysModuleCode not in'+
          ' (select SysModuleCode from SysModuleAccessCtrl where EmployeeCode='+
            Quotedstr(EmployCode)+')';
    Close;
    SQL.clear;
    SQL.Add(sSQL);
    Open;
  end;

  AdoQry_tmp.First;
  UpdateSQL:=' ';
  with  AdoQry_tmp1 do
  begin
    While Not AdoQry_tmp.Eof Do
    begin
      UpdateSQL:=UpdateSQL+'insert into SysModuleAccessCtrl (EmployeeCode,SysModuleCode) Values('+
               Quotedstr(EmployCode)+','+Quotedstr(AdoQry_tmp.fieldbyname('SysModuleCode').AsString)+') ';
      AdoQry_tmp.Next;
    end;
    Close;
    SQL.clear;
    SQL.Add(UpdateSQL);
    Prepared;
    ExecSQL;
  end;
end;

procedure TFrm_Sys_AccessCtrl1.Act_FilterExecute(Sender: TObject);
var
  sModule:string;
begin
  selectfromsql:='select SysMenuAccessCtrl.EmployeeCode,'+
       ' Employee.EmployeeName,'+
       ' SysMenuAccessCtrl.SysMenuID,'+
       ' SysMenu.SysMenuCode,'+
       ' SysMenu.SysMenuName,'+
       ' SysMenu.SysMenuCode+'' ''+SysMenu.SysMenuName as SysMenuB,'+
       ' SysMenu.SysModuleCode,'+
       ' Sysmodule.SysmoduleName,'+
       ' SysMenu.SysModuleCode+'' ''+Sysmodule.SysmoduleName as SysmoduleB,'+
       ' SysMenuAccessCtrl.CANAccess'+
    ' from SysMenuAccessCtrl'+
    ' join  Employee on SysMenuAccessCtrl.EmployeeCode=Employee.EmployeeCode'+
    ' join SysMenu on SysMenuAccessCtrl.SysMenuID=SysMenu.SysMenuid'+
    ' join Sysmodule on SysMenu.SysModuleCode=Sysmodule.SysModuleCode';
  if Lstbx_Employee.ItemIndex>-1 then
    ConditionUserDefine:= ' SysMenuAccessCtrl.EmployeeCode='+
               QuotedStr(GetCode(Lstbx_Employee.Items.Strings[Lstbx_Employee.ItemIndex]));
  if (Lstbx_Module.ItemIndex<>0)and(Lstbx_Module.ItemIndex>-1) then
     ConditionUserDefine:=ConditionUserDefine+' and SysMenu.SysModuleCode='+
                QuotedStr(GetCode(Lstbx_Module.Items.Strings[Lstbx_Module.ItemIndex]));
  inherited;

  sModule:=AdoQry_Main.fieldbyname('SysModuleCode').asstring;
  Frm_Sys_AccessCtrl1_C.GetStation(sModule,Lstbx_Module);
end;

procedure TFrm_Sys_AccessCtrl1.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Sys_AccessCtrl1:=nil;
end;

end.

⌨️ 快捷键说明

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