📄 userlist.pas
字号:
{*******************************************************}
{ }
{ 人员权限管理 }
{ }
{ 中软金马公司版权所有。2002.12前 }
{ }
{ 编制:中软金马邮资票品项目开发组 }
{ }
{ }
{*******************************************************}
(*
本模块在省级系统管理模块里面调用。
*)
{
有关表:组别表、人员表
数据来源:
用户:人员表
组:组别表
功能:
用户:双JI进入用户描述模块
组:双JI进入组描述模块
算法:
更新有关表:
备注:
}
unit UserList;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FormBase, StdCtrls, Buttons, Grids, DBGrids, DBTables, Db, CheckLst,
ExtCtrls, RXCtrls, Menus;
type
TfrmUserList = class(TFFormBase)
BitBtn2: TBitBtn;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
qryUser: TQuery;
dtsUser: TDataSource;
qryGroup: TQuery;
dtsGroup: TDataSource;
UpdateSQL1: TUpdateSQL;
UpdateSQL2: TUpdateSQL;
Panel1: TPanel;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
BitBtn4: TBitBtn;
Panel11: TPanel;
RxLabel1: TRxLabel;
DWMC: TLabel;
Panel2: TPanel;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
{}
procedure qryUserUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qryGroupUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qryGroupAfterScroll(DataSet: TDataSet);
procedure qryUserAfterScroll(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
VG_OLD_UID, VG_OLD_ZBID: string;
function SaveUser(qx: TStrings): Boolean;
function SaveGroup(Users: TStrings; Modals: TCheckListBox): Boolean;
function SaveKFRYDZB(kfdm: string; kf: TStrings): Boolean;
end;
function ShowUserList: Boolean;
var
frmUserList: TfrmUserList;
implementation
uses datas, Pub,User, Group, PRoom;
{$R *.DFM}
function ShowUserList: Boolean;
begin
Result := false;
Application.CreateForm(TfrmUserList, frmUserList);
with frmUserList do
try
if CheckRight(frmUserList, [BitBtn1, BitBtn3, BitBtn4]) then
begin
DWMC.Caption := '使用单位:' + VG_UnitName;
Caption := CYZPPTIT;
result := ShowModal = MB_OK;
end;
finally
Release;
end;
end;
{ TfrmUserList }
function TfrmUserList.SaveUser(qx: TStrings): Boolean;
const
CHKKFSQL = 'select KFDM from TGS_KFRYDZB where YGDM = ''%s''';
CHKZBSQL = 'select ZBDM from TGS_RYZBDZB where YGDM = ''%s''';
DELETESQL = 'Delete From TGS_RYZBDZB Where YGDM = ''%s''';
INSTSQL = 'Insert Into TGS_RYZBDZB (YGDM, ZBDM) Values (''%s'',''%s'')';
var
i: integer;
begin
Result := false;
if VG_OLD_UID <> '' then //update,有库房权限则不能修改
if qryUser.FieldByName('YGDM').AsString <> VG_OLD_UID then
begin
GetData(format(CHKZBSQL, [VG_OLD_UID]));
if not data.qrytmp.IsEmpty then
exit;
GetData(format(CHKKFSQL, [VG_OLD_UID]));
if not data.qrytmp.IsEmpty then
exit;
end;
data.dm.StartTransaction;
try
qryUser.ApplyUpdates;
if VG_OLD_UID = '' then //add
for i := 0 to qx.Count - 1 do
begin
SetData(Format(INSTSQL, [qryUser.FieldByName('YGDM').Asstring,
Copy(qx.Strings[i], 1, pos(' ', qx.Strings[i]) - 1)]));
end
else if qryUser.FieldByName('YGDM').AsString = VG_OLD_UID then //update,而且未修改员工代码
begin
SetData(Format(DELETESQL, [qryUser.FieldByName('YGDM').Asstring]));
for i := 0 to qx.Count - 1 do
begin
SetData(Format(INSTSQL, [qryUser.FieldByName('YGDM').Asstring,
Copy(qx.Strings[i], 1, pos(' ', qx.Strings[i]) - 1)]));
end;
end;
except
data.dm.Rollback;
if errMsg = '' then
raise
else
raise exception.Create(errMsg);
end;
qryUser.CommitUpdates;
data.dm.Commit;
result := True;
end;
function TfrmUserList.SaveGroup(Users: TStrings; Modals: TCheckListBox): Boolean;
const
CHKRYSQL = 'select YGDM from TGS_RYZBDZB where ZBDM = ''%s''';
CHKMKSQL = 'select MKDM from TGS_MKZBGXB where ZBDM = ''%s''';
D1SQL = 'Delete From TGS_RYZBDZB Where ZBDM = ''%s''';
INST1SQL = 'Insert Into TGS_RYZBDZB (YGDM, ZBDM) Values (''%s'', ''%s'')';
D2SQL = 'Delete From TGS_MKZBGXB Where ZBDM = ''%s''';
INST2SQL = 'Insert Into TGS_MKZBGXB (MKDM, ZBDM, QX) Values (''%s'',''%s'',''%s'')';
var
i: integer;
begin
Result := false;
if VG_OLD_ZBID <> '' then //update,有库房权限则不能修改
if qryGroup.FieldByName('ZBDM').AsString <> VG_OLD_ZBID then
begin
GetData(format(CHKRYSQL, [VG_OLD_ZBID]));
if not data.qrytmp.IsEmpty then
exit;
GetData(format(CHKMKSQL, [VG_OLD_ZBID]));
if not data.qrytmp.IsEmpty then
exit;
end;
data.dm.StartTransaction;
try
qryGroup.ApplyUpdates;
if VG_OLD_ZBID = '' then //add
begin
for i := 0 to Users.Count - 1 do
SetData(Format(INST1SQL, [Copy(Users.Strings[i], 1, Pos(' ', Users.Strings[i]) - 1),
qryGroup.FieldByName('ZBDM').Asstring]));
for i := 0 to Modals.Items.Count - 1 do
SetData(Format(INST2SQL, [Copy(Modals.Items.Strings[i], 1, Pos(' ', Modals.Items.Strings[i]) - 1),
qryGroup.FieldByName('ZBDM').Asstring,
iif(Modals.Checked[i], '1', '0')]));
end
else if qryGroup.FieldByName('ZBDM').AsString = VG_OLD_ZBID then //update ,而且未修改组别代码
begin
SetData(Format(D1SQL, [qryGroup.FieldByName('ZBDM').Asstring]));
for i := 0 to Users.Count - 1 do
SetData(Format(INST1SQL, [Copy(Users.Strings[i], 1, Pos(' ', Users.Strings[i]) - 1),
qryGroup.FieldByName('ZBDM').Asstring]));
SetData(Format(D2SQL, [qryGroup.FieldByName('ZBDM').Asstring]));
for i := 0 to Modals.Items.Count - 1 do
SetData(Format(INST2SQL, [Copy(Modals.Items.Strings[i], 1, Pos(' ', Modals.Items.Strings[i]) - 1),
qryGroup.FieldByName('ZBDM').Asstring,
iif(Modals.Checked[i], '1', '0')]));
end;
except
data.dm.Rollback;
if errMsg = '' then
raise
else
raise exception.Create(errMsg)
end;
qryGroup.CommitUpdates;
data.dm.Commit;
result := True;
qryGroupAfterScroll(nil);
end;
procedure TfrmUserList.BitBtn1Click(Sender: TObject);
begin
ShowUser;
end;
procedure TfrmUserList.FormCreate(Sender: TObject);
begin
inherited;
qryUser.Open;
qryGroup.Open;
end;
procedure TfrmUserList.BitBtn3Click(Sender: TObject);
begin
ShowGroup;
end;
function TfrmUserList.SaveKFRYDZB(kfdm: string; kf: TStrings): Boolean;
const
DELETESQL = 'Delete From TGS_KFRYDZB Where KFDM = ''%s''';
INSTSQL = 'Insert Into TGS_KFRYDZB (KFDM, YGDM) Values (''%s'',''%s'')';
var
i: integer;
begin
data.dm.StartTransaction;
try
SetData(Format(DELETESQL, [kfdm]));
for i := 0 to kf.Count - 1 do
SetData(Format(INSTSQL, [kfdm,
Copy(kf.Strings[i], 1, pos(' ', kf.Strings[i]) - 1)]));
except
data.dm.Rollback;
if errMsg = '' then
raise
else
raise exception.Create(errMsg)
end;
data.dm.Commit;
result := True;
end;
procedure TfrmUserList.BitBtn4Click(Sender: TObject);
begin
ShowPRoom;
end;
procedure TfrmUserList.qryUserUpdateError(DataSet: TDataSet;
E: EDatabaseError; UpdateKind: TUpdateKind;
var UpdateAction: TUpdateAction);
begin
case GetErrCode(DataSet, E, ErrMsg) of {取得错误代码, errmsg返回错误消息}
Err_NoMasterRec: errMsg := errMsg + '&_&' + Format(MST_NOREC, ['', '', '']);
Err_HasDetailRec: errMsg := errMsg + '&_&' + '人员已经被引用,不能删除。';
Err_RecDouble: errMsg := errMsg + '&_&' + '人员已经存在,不能保存。';
Err_NotNull: errMsg := errMsg + '&_&' + '人员代码、姓名不能为空';
else
errMsg := errMsg + '&_&' + OTHERERROR;
end;
end;
procedure TfrmUserList.qryGroupUpdateError(DataSet: TDataSet;
E: EDatabaseError; UpdateKind: TUpdateKind;
var UpdateAction: TUpdateAction);
begin
inherited;
case GetErrCode(DataSet, E, ErrMsg) of
Err_NoMasterRec: errMsg := errMsg + '&_&' + Format(MST_NOREC, ['', '', '']);
Err_HasDetailRec: errMsg := errMsg + '&_&' + '被删除的组已经被引用,不能删除。';
Err_RecDouble: errMsg := errMsg + '&_&' + '新增加的组已经存在,不能保存。';
Err_NotNull: errMsg := errMsg + '&_&' + '组别代码、组别名称不能为空。';
else
errMsg := errMsg + '&_&' + OTHERERROR;
end;
end;
procedure TfrmUserList.qryGroupAfterScroll(DataSet: TDataSet);
var
v_b_zb: boolean; //当前显示组是否为登陆用户所在组
begin
inherited;
VG_OLD_ZBID := qryGroup.FieldByName('ZBDM').asstring;
if frmGroup = nil then
exit;
if not frmGroup.Visible then
exit;
with frmGroup do
begin
v_b_zb := v_ZBDM.IndexOf(frmUserList.qryGroup.FieldByName('ZBDM').asstring) <> -1;
BitBtn6.Enabled := not ((frmUserList.qryGroup.FieldByName('ZBDM').asstring = 'SYS') or v_b_zb);
BitBtn7.Enabled := BitBtn6.Enabled;
BitBtn8.Enabled := BitBtn6.Enabled;
BitBtn9.Enabled := BitBtn6.Enabled;
BitBtn10.Enabled := BitBtn6.Enabled;
BitBtn11.Enabled := BitBtn6.Enabled;
BitBtn12.Enabled := BitBtn6.Enabled;
BitBtn13.Enabled := BitBtn6.Enabled;
BitBtn14.Enabled := BitBtn6.Enabled;
BitBtn15.Enabled := BitBtn6.Enabled;
BitBtn16.Enabled := BitBtn6.Enabled;
BitBtn17.Enabled := BitBtn6.Enabled;
BitBtn18.Enabled := BitBtn6.Enabled;
BitBtn19.Enabled := BitBtn6.Enabled;
BitBtn20.Enabled := BitBtn6.Enabled;
DBEdit1.Enabled := BitBtn6.Enabled;
DBEdit2.Enabled := BitBtn6.Enabled;
DBEdit3.Enabled := BitBtn6.Enabled;
if not BitBtn6.Enabled then
begin
d_csh.OnDBlClick := nil;
s_csh.OnDBlClick := nil;
d_jyp.OnDBlClick := nil;
s_jyp.OnDBlClick := nil;
d_txp.OnDBlClick := nil;
s_txp.OnDBlClick := nil;
d_yp.OnDBlClick := nil;
s_yp.OnDBlClick := nil;
d_grp.OnDBlClick := nil;
s_grp.OnDBlClick := nil;
d_kc.OnDBlClick := nil;
s_kc.OnDBlClick := nil;
d_zhcx.OnDBlClick := nil;
s_zhcx.OnDBlClick := nil;
end
else
begin
d_csh.OnDBlClick := BitBtn8Click;
s_csh.OnDBlClick := BitBtn7Click;
d_jyp.OnDBlClick := BitBtn10Click;
s_jyp.OnDBlClick := BitBtn9Click;
d_txp.OnDBlClick := BitBtn12Click;
s_txp.OnDBlClick := BitBtn11Click;
d_yp.OnDBlClick := BitBtn14Click;
s_yp.OnDBlClick := BitBtn13Click;
d_grp.OnDBlClick := BitBtn16Click;
s_grp.OnDBlClick := BitBtn15Click;
d_kc.OnDBlClick := BitBtn18Click;
s_kc.OnDBlClick := BitBtn17Click;
d_zhcx.OnDBlClick := nil;
s_zhcx.OnDBlClick := nil;
end;
end;
end;
procedure TfrmUserList.qryUserAfterScroll(DataSet: TDataSet);
begin
inherited;
VG_OLD_UID := qryUser.FieldByName('YGDM').asstring;
DBGrid1CellClick(nil);
if frmUser = nil then
exit;
if not frmUser.Visible then
exit;
with frmUser do
begin
BitBtn1.Enabled := not ((frmUserList.qryUser.FieldByName('YGDM').asstring = '1') or
(frmUserList.qryUser.FieldByName('YGDM').asstring = VG_UserID));
BitBtn2.Enabled := BitBtn1.Enabled;
DBEdit1.Enabled := BitBtn1.Enabled;
BtnDelete.Enabled := BitBtn1.Enabled;
DBEdit2.Enabled := frmUserList.qryUser.FieldByName('YGDM').asstring <> VG_UserID;
DBComboBox1.Enabled := DBEdit2.Enabled;
if not BitBtn1.Enabled then
begin
ListBox1.OnDBlClick := nil;
ListBox2.OnDBlClick := nil;
end;
end;
end;
procedure TfrmUserList.FormShow(Sender: TObject);
begin
inherited;
if not BitBtn1.Enabled then
begin
DBGrid1.OnDBlClick := nil;
DBGrid2.OnDBlClick := nil;
end;
end;
procedure TfrmUserList.DBGrid1CellClick(Column: TColumn);
begin
inherited;
BitBtn4.Enabled := qryUser.FieldByName('YGDM').asString <> '1';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -