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

📄 userlist.pas

📁 省级集邮品管理ERP
💻 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 + -