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

📄 sys_operator_d.pas

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

Interface

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

Type
  TFrm_Sys_Operator_D = Class(TFrm_Base_Detail)
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    CmBx_Usable: TComboBox;
    Edt_EmployeeCode: TExtEdit;
    Lbl_EmployeeName: TLabel;
    Lbl_NewPassWord: TLabel;
    Edt_NewPassWord: TEdit;
    Lbl_ReEnterPassWord: TLabel;
    Edt_ReEnterPassWord: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure EmployeeCodeCheck(Sender: TObject);
    procedure Edt_ReEnterPassWordExit(Sender: TObject);
  private
    { Private declarations }
    OldUsable:integer;
    CreateDate,DisableDate:string;
  public
    { Public declarations }
  protected
    procedure InitControls; Override;
    procedure SaveData; Override;
  end;

var
  Frm_Sys_Operator_D: TFrm_Sys_Operator_D;

implementation
uses Sys_Global;
{$R *.DFM}

procedure TFrm_Sys_Operator_D.FormCreate(Sender: TObject);
begin
  inherited;
  SetFocus_Control:=Edt_EmployeeCode;
end;

procedure TFrm_Sys_Operator_D.InitControls;
begin
  inherited;
  with AdoQry_Maintain do
  begin
    Edt_EmployeeCode.Text:=fieldbyname('EmployeeCode').AsString;
    CmBx_Usable.ItemIndex:=fieldbyname('OperatorUsable').asinteger;
    OldUsable:=CmBx_Usable.ItemIndex;
    DisableDate:=fieldbyname('OperatorDisableDate').asstring;
    CreateDate:=fieldbyname('OperatorCreateDate').asstring;
    Lbl_EmployeeName.Caption:=fieldbyname('EmployeeName').asstring;
    Edt_NewPassWord.Text:=fieldbyname('Password').asstring;
    Edt_ReEnterPassWord.Text:=fieldbyname('Password').asstring;
  end;
  //如果是新增用户,一定是可用的
  if Add then
  begin
    Cmbx_Usable.Itemindex:=1;
    Cmbx_Usable.enabled:=False;
  end
  else
    Cmbx_Usable.enabled:=True;
end;

procedure TFrm_Sys_Operator_D.SaveData;
begin
  inherited;

  if Add then
  begin
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      //新增时一定是可用的
      SQL.Add('Insert into Operator(EmployeeCode,OperatorUsable,PassWord,OperatorCreateDate)'+
        '  Values (:Code,:Usable,:Password,:createdate)');
      Parameters.ParambyName('createdate').Value:=Date();
      Parameters.ParambyName('Code').Value:=Edt_EmployeeCode.text;
      Parameters.ParambyName('Usable').Value:=inttostr(CmBx_Usable.Itemindex);
      Parameters.ParambyName('Password').Value:=Edt_NewPassWord.text;
      CreateDate:=DateToStr(Date());
      DisableDate:='';
      ExecSql;
    end;
  end
  Else
  begin
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      //先不修改是否可用的状态
      SQL.Add(' Update Operator set '+
                  ' EmployeeCode=:Code,'+
                  ' Password=:Password '+
                ' where EmployeeCode=:OldCode ');
      //再修改可用状态
      //从可用变成不可用
      If (CmBx_Usable.ItemIndex=0) and (OldUsable<>0) then
      begin
        SQL.Add(' Update Operator set '+
                    ' OperatorDisableDate=:DisableDate, '+
                    ' OperatorUsable=0 '+
                  ' where EmployeeCode=:OldCode2 ');
        Parameters.ParambyName('DisableDate').Value:=Date();
        DisableDate:=DateToStr(Date());
      end
      //只要是可用的,不管原来状态如何都清空DisableDate
      else If CmBx_Usable.ItemIndex=1 then
      begin
        SQL.Add(' Update Operator set '+
                    ' OperatorDisableDate=null, '+
                    ' OperatorUsable=1 '+
                  ' where EmployeeCode=:OldCode2 ');
        DisableDate:='';
      end;
      Parameters.ParambyName('Code').Value:=Edt_EmployeeCode.text;
      Parameters.ParambyName('Password').Value:=Edt_NewPassWord.text;
      Parameters.ParambyName('OldCode').Value:=AdoQry_Maintain.fieldbyname('EmployeeCode').asstring;
      Parameters.ParambyName('OldCode2').Value:=Edt_EmployeeCode.text;
      ExecSQL;
    end;
  end;
  with AdoQry_Maintain do
  begin
    fieldbyname('EmployeeCode').AsString:= Edt_EmployeeCode.Text;
    fieldbyname('OperatorUsable').AsInteger:=CmBx_Usable.ItemIndex;
    fieldbyname('EmployeeName').asstring:=Lbl_EmployeeName.Caption;
    fieldbyname('OperatorCreateDate').asstring:=CreateDate;
    fieldbyname('OperatorDisableDate').asstring:=DisableDate;
    Post;
  end;
end;

procedure TFrm_Sys_Operator_D.EmployeeCodeCheck(Sender: TObject);
begin
  inherited;
  if ActiveControl.Name='btn_Cancel' then
    exit;

  if (not BlankInStrCheck(Edt_EmployeeCode.Text,'人员代码')) or
   (not BlankCheck(Edt_EmployeeCode.text,'人员代码')) then
  begin
    TWinControl(Sender).SetFocus;
    abort;
  end;

  if(Add)or((not Add)and
    (TEdit(Sender).Text<>AdoQry_Maintain.fieldbyname('EmployeeCode').AsString))then
  begin
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      SQL.Add('Select EmployeeCode From Operator Where EmployeeCode='''+TEdit(Sender).Text+'''');
      Open;
      if fieldbyname('EmployeeCode').AsString<>'' then
      begin
        DispInfo('人员代码已经存在,不允许增加或修改',1);
        TWinControl(Sender).SetFocus;
        Abort;
      end;
    end;
  end;
end;

procedure TFrm_Sys_Operator_D.Edt_ReEnterPassWordExit(Sender: TObject);
begin
  inherited;
  if edt_ReEnterPassword.text<>edt_NewPassword.text then
  begin;
    DispInfo('两次输入的口令不一致,请再次输入!',1);
    edt_NewPassword.SetFocus;
  end;
end;

end.

⌨️ 快捷键说明

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