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

📄 emp_pay.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
字号:
unit Emp_Pay;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls,
  ComCtrls, DBCtrls, Mask;

type
  TForm_Emp_Pay = class(TForm)
    DBGrid: TDBGrid;
    Panel2: TPanel;
    Label3: TLabel;
    Bevel1: TBevel;
    Panel3: TPanel;
    AddBtn: TBitBtn;
    DelBtn: TBitBtn;
    SaveBtn: TBitBtn;
    CancelBtn: TBitBtn;
    ExtBtn: TBitBtn;
    DBNavigator1: TDBNavigator;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label19: TLabel;
    ComboBox_ID: TComboBox;
    edtname: TEdit;
    edtsex: TEdit;
    ADOQtmp: TADOQuery;
    Label5: TLabel;
    Edtduty: TEdit;
    DataSource1: TDataSource;
    ADOQ_Emp_Pay: TADOQuery;
    ADOQuery1: TADOQuery;
    ADOQ_Emp_Payempid: TIntegerField;
    ADOQ_Emp_Paypay: TBCDField;
    ADOQ_Emp_Payempname: TStringField;
    ADOQ_Emp_Paysex: TStringField;
    ADOQ_Emp_Paydutyname: TStringField;
    ADOQ_Emp_Paydepname: TStringField;
    ADOQuery1empid: TIntegerField;
    ADOQuery1pay: TBCDField;
    ADOQuery1empname: TStringField;
    ADOQuery1sex: TStringField;
    ADOQuery1depname: TStringField;
    DBE_Pay: TDBEdit;
    ADOQuery1dutyname: TStringField;
    ADOQ_Emp_Paystate: TBooleanField;
    ADOQuery1state: TBooleanField;
    procedure AddBtnClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure DelBtnClick(Sender: TObject);
    procedure ComboBox_IDChange(Sender: TObject);
    procedure ComboBox_IDKeyPress(Sender: TObject; var Key: Char);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure ADOQuery1AfterInsert(DataSet: TDataSet);
    procedure ADOQuery1BeforePost(DataSet: TDataSet);
    procedure DBE_PayKeyPress(Sender: TObject; var Key: Char);
    procedure ADOQuery1AfterPost(DataSet: TDataSet);
    procedure DataSource1StateChange(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
  private
    { Private declarations }
//    procedure refreshdb;
  public
    { Public declarations }
  end;

var
  Form_Emp_Pay: TForm_Emp_Pay;

implementation
uses data, sharefun, sharevar;
{$R *.dfm}

procedure TForm_Emp_Pay.FormShow(Sender: TObject);
begin
  //添加人员编码
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select a.empid,a.empname,a.sex,b.dutyname from employee a, duty b');
    sql.Add('where a.dutyid=b.dutyid and a.state=1 and a.grade<>''计件制''');
    open;
    if recordcount =0 then
    begin
        MsgErr(handle,'无人员信息!');
        exit;
    end;
//    if ComboBox_ID.Items.Count>1 then 
    ComboBox_ID.Items.Clear;
    first;
    while not eof do
    begin
        ComboBox_ID.Items.Add(fieldvalues['empid']);
        next;
    end;
  end;
  ComboBox_ID.SetFocus;
end;

procedure TForm_Emp_Pay.AddBtnClick(Sender: TObject);
begin
  if not ADOQuery1.Active then exit;
  if edtname.Text='' then
  begin
    MsgOk(handle,'员工姓名不能为空,请在员工编号文本框内输入员工编号,再按回车键!');
    exit;
  end;
  if ADOQuery1.Locate('empid',trim(combobox_id.Text),[]) then
  begin
      Msgok(handle, '编号 ['+trim(combobox_id.Text)+'] 的人员已有月薪收入档案,请重新选择员工!');
      exit;
  end;
  ADOQuery1.Append;
  DBE_Pay.SetFocus;
end;

procedure TForm_Emp_Pay.CancelBtnClick(Sender: TObject);
begin
     if not ADOQuery1.Active then exit;
     ADOQuery1.cancel;
end;

procedure TForm_Emp_Pay.SaveBtnClick(Sender: TObject);
begin
  if not ADOQuery1.Active then exit;
  ADOQuery1.Post;
end;

procedure TForm_Emp_Pay.DelBtnClick(Sender: TObject);
var empid:string;
begin
   if not ADOQuery1.Active then exit;
   if ADOQuery1.RecordCount = 0 then exit;
   empid:=inttostr(adoquery1.FieldValues['empid']);
   if ADOQuery1.FieldValues['state']=0 then
   begin
      MsgErr(handle,'该员工已离职致月薪收入不能更改!');
      abort; exit;
   end;
   if MsgQst(handle,'确定删除编号为 ['+empid+'] 的员工  ['+adoquery1.FieldValues['empname']+']  的月薪档案码?') =IDNO then  exit;
   try
      ADOQuery1.Delete;
   except
      abort;
      MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
   end;
end;

procedure TForm_Emp_Pay.ComboBox_IDChange(Sender: TObject);
begin
  ComboBox_ID.Text:=trim(ComboBox_ID.Text);
  edtname.Clear;
end;

procedure TForm_Emp_Pay.ComboBox_IDKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not ( key in ['0'..'9',chr(8),chr(13)]) then abort;
  if trim(ComboBox_ID.Text)='' then exit;
  if key = chr(13) then
  if not adoqtmp.Locate('empid',trim(ComboBox_ID.Text),[loCaseInsensitive]) then
  begin
      MsgErr(handle,'人员编码  ['+trim(ComboBox_ID.Text)+']  不存在或者该人员为计件制!');
      exit;
  end
  else
  begin
      edtname.Text:=adoqtmp.FieldValues['empname'];
      edtsex.Text:=adoqtmp.FieldValues['sex'];
      Edtduty.Text:=adoqtmp.FieldValues['dutyname'];
      ADOQuery1.Locate('empid',trim(combobox_id.Text),[]);
  end;
end;

procedure TForm_Emp_Pay.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  action:=cafree;
end;

procedure TForm_Emp_Pay.FormCreate(Sender: TObject);
begin
  if not ADOQ_Emp_Pay.Active then ADOQ_Emp_Pay.Open;
  if not ADOQuery1.Active then ADOQuery1.Open;
end;

procedure TForm_Emp_Pay.ADOQuery1AfterInsert(DataSet: TDataSet);
begin
  ADOQuery1.FieldValues['empid']:=trim(ComboBox_ID.Text);
  ADOQuery1.FieldValues['pay']:=0.00;
end;

procedure TForm_Emp_Pay.ADOQuery1BeforePost(DataSet: TDataSet);
var info:string;
begin
      if not (Dataset.State in[dsedit,dsinsert]) then begin abort; exit; end;
      if trim(edtname.text)='' then begin abort; exit; end;
      if (Dataset.State in [dsedit]) then
      begin
        if Dataset.FieldValues['empid']<>trim(ComboBox_ID.Text) then
        begin
          MsgErr(handle,'待编辑的员工编号与员工编号文本框内的号码不一致'+#13+#13'     请按[取消]键后再重新操作!');
          abort; exit;
        end;
        if Dataset.FieldValues['state']=0 then
        begin
          MsgErr(handle,'该员工已离职致月薪收入不能更改!');
          abort; exit;
        end;
      end;
      if not ToMoney(floattostr(Dataset.FieldValues['pay']),info) then
      begin
        MsgErr(handle,'月薪金额格式不对[0.00]!');
        DBE_Pay.SetFocus; abort; exit;
      end;
      
      if Dataset.FieldValues['pay']<=0 then
      begin
        MsgErr(handle,'员工月薪收入不能为0!');
        DBE_Pay.SetFocus; abort; exit;
      end;
      if (Dataset.State in [dsedit]) then
      begin
        if MsgQst(handle,'确认保存员工编号为  ['+inttostr(ADOQuery1.FieldValues['empid'])+']  的员工  ['+ADOQuery1.FieldValues['empname']+']  月薪收入的修改吗?')=idno
        then begin abort; exit; end;
      end;
      if (Dataset.State in [dsinsert]) then
      begin
        if MsgQst(handle,'确认保存员工编号为  ['+inttostr(ADOQuery1.FieldValues['empid'])+']  的员工  ['+edtname.Text+']  月薪收入的增加吗?')=idno
        then begin abort; exit; end;
      end;
end;

procedure TForm_Emp_Pay.DBE_PayKeyPress(Sender: TObject; var Key: Char);
begin
  if not ( key in ['0'..'9','.',chr(8),chr(13)]) then abort;
end;

procedure TForm_Emp_Pay.ADOQuery1AfterPost(DataSet: TDataSet);
var empid:integer;
begin
  with ADOQ_Emp_Pay do
  begin
    close; sql.Clear;
    sql.Add('select a.*,b.empname,b.sex,b.state,c.dutyname,d.depname');
    sql.Add('from emp_pay a, employee b,duty c,department d');
    sql.Add('where a.empid=b.empid and b.dutyid=c.dutyid and b.depid=d.depid');
    sql.Add('order by d.depname, c.dutyname, b.sex');
    execsql; open;
  end;
  empid:=adoquery1.FieldValues['empid'];
  adoquery1.close; adoquery1.Open;
  adoquery1.Locate('empid',empid,[]);
end;

procedure TForm_Emp_Pay.DataSource1StateChange(Sender: TObject);
begin
  if (Sender as TDataSource).DataSet.State in [dsedit,dsinsert] then
  Begin
        AddBtn.Enabled :=False;
        DelBtn.Enabled :=False;
        CancelBtn.Enabled :=True;
        SaveBtn.Enabled :=True;
        ExtBtn.Enabled :=False;
  end;

  if (Sender as TDataSource).DataSet.State in [dsBrowse] then
  Begin
        AddBtn.Enabled :=True;
        DelBtn.Enabled :=True;
        CancelBtn.Enabled :=False;
        SaveBtn.Enabled :=False;
        ExtBtn.Enabled :=True;
  end;
end;

procedure TForm_Emp_Pay.DataSource1DataChange(Sender: TObject;
  Field: TField);
begin
  with adoquery1 do
  begin
    if not (adoquery1.State in [dsbrowse]) then exit;
    if adoquery1.RecordCount=0 then exit;
    ComboBox_ID.Text:=FieldValues['empid'];
    if FieldValues['empname']<>null then edtname.Text:=FieldValues['empname'];
    if FieldValues['sex']<>null then edtsex.Text:=FieldValues['sex'];
    if FieldValues['dutyname']<>null then Edtduty.Text:=FieldValues['dutyname'];
  end;
end;

end.

⌨️ 快捷键说明

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