📄 sys_accessctrl1_c.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 + -