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

📄 earn.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls,
  ComCtrls, RpDefine, RpCon, RpConDS, Menus, Mask, DBCtrls, RpRave, RpBase,
  RpSystem;

type
  TFrmFJEarn = class(TForm)
    DataSource: TDataSource;
    DBGrid: TDBGrid;
    AddBtn: TBitBtn;
    PrtBtn: TBitBtn;
    DelBtn: TBitBtn;
    SaveBtn: TBitBtn;
    CancelBtn: TBitBtn;
    ExtBtn: TBitBtn;
    ADOQuery1: TADOQuery;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    Label6: TLabel;
    DBEdit6: TDBEdit;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Label10: TLabel;
    ADOQuery1log_id: TAutoIncField;
    ADOQuery1empid: TIntegerField;
    ADOQuery1rec_date: TDateTimeField;
    Label1: TLabel;
    Label2: TLabel;
    ADOQtmp: TADOQuery;
    DataSource1: TDataSource;
    edtname: TEdit;
    edtsex: TEdit;
    DBComboBox2: TComboBox;
    Rv_FJSLMX: TRvDataSetConnection;
    RvSystem1: TRvSystem;
    RvProject1: TRvProject;
    Label19: TLabel;
    Label5: TLabel;
    ADOQuery1money: TBCDField;
    CheckBox2: TCheckBox;
    ADOQuery1tjflag: TBooleanField;
    ADOQuery1tmp_id: TIntegerField;
    ADOQoper: TADOQuery;
    ADOQopertmp_id: TAutoIncField;
    ADOQoperoperid: TStringField;
    ADOQoperopername: TStringField;
    ADOQoperpassword: TStringField;
    ADOQoperteam_id: TIntegerField;
    ADOQuery1opername: TStringField;
    ADOQuery1event: TStringField;
    procedure FormShow(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure AddBtnClick(Sender: TObject);
    procedure DelBtnClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DataSourceStateChange(Sender: TObject);
    procedure ADOQuery1BeforePost(DataSet: TDataSet);
    procedure DBComboBox2KeyPress(Sender: TObject; var Key: Char);
    procedure DBComboBox2Change(Sender: TObject);
    procedure ADOQuery1AfterInsert(DataSet: TDataSet);
    procedure PrtBtnClick(Sender: TObject);
    procedure DBEdit3KeyPress(Sender: TObject; var Key: Char);
    procedure CheckBox2Click(Sender: TObject);
    procedure DataSourceDataChange(Sender: TObject; Field: TField);
    procedure ADOQuery1AfterEdit(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmFJEarn: TFrmFJEarn;

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

procedure TFrmFJEarn.FormShow(Sender: TObject);
begin
  ADOQoper.Open;
  //添加在职人员编码
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select empid from employee where state=1');
    try
      execsql; open;
    except
      MsgErr(handle,'添加人员编码失败!'); exit;
    end;
    if recordcount =0 then
    begin
        MsgErr(handle,'无人员信息!');
        exit;
    end;
    DBComboBox2.Items.Clear;
    first;
    while not eof do
    begin
        DBComboBox2.Items.Add(fieldvalues['empid']);
        next;
    end;
  end;
  
  //添加所有人员信息,包括非在职人员
  with ADOQtmp do
  begin
    close;sql.clear;
    sql.add('select empid,empname,sex,state from employee');
    try
      execsql; open;
    except
      MsgErr(handle,'得到人员信息失败!'); exit;
    end;
  end;
  DBComboBox2.SetFocus;
end;

procedure TFrmFJEarn.SaveBtnClick(Sender: TObject);
begin
     if not ADOQuery1.Active then exit;
     if not (ADOQuery1.State in [dsinsert, dsedit]) then exit;
     ADOQuery1.Post;
end;

procedure TFrmFJEarn.CancelBtnClick(Sender: TObject);
begin
     if not ADOQuery1.Active then exit;
     if not (ADOQuery1.State in [dsinsert, dsedit]) then exit;
     ADOQuery1.cancel;
end;

procedure TFrmFJEarn.AddBtnClick(Sender: TObject);
begin
  if not ADOQuery1.Active then exit;
  if ADOQuery1.State in [dsinsert, dsedit] then exit;
  if edtname.Text='' then
  begin
    MsgOk(handle,'员工姓名不能为空,请在员工编号文本框内输入员工编号,再按回车键!');
    DBComboBox2.SetFocus; exit;
  end;
  if trim(DBComboBox2.Text)<>adoqtmp.FieldValues['empid'] then
  adoqtmp.Locate('empid',trim(DBComboBox2.Text),[]);
  if adoqtmp.FieldValues['state']=0 then
  begin
    MsgErr(handle,'该员工已离职,请选择其它人员!');
    DBComboBox2.SetFocus; exit;
  end;
  ADOQuery1.Append;
  DBEdit6.SetFocus;
end;

procedure TFrmFJEarn.DelBtnClick(Sender: TObject);
begin    
   if not ADOQuery1.Active then exit;
   if ADOQuery1.State in [dsinsert, dsedit] then exit;
   if ADOQuery1.RecordCount = 0 then exit;
   //判断当前物品类别在物品表中是否用到
   if ADOQuery1.FieldValues['tjflag'] then
   begin
      MsgErr(handle,'该条记录已统计入总账表,致不可进行编辑!(以确保数据的安全性)');
      exit;
   end;
   if MsgQst(handle,'确定删除当前记录码?') =IDNO then  exit;
   try
      ADOQuery1.Delete;
   except
      abort;
      MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
   end;
end;

procedure TFrmFJEarn.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=Cafree;
end;

procedure TFrmFJEarn.DataSourceStateChange(Sender: TObject);
begin
  if (Sender as TDataSource).DataSet.State in [dsedit,dsinsert] then
  Begin
        AddBtn.Enabled :=False;
        PrtBtn.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;
        if CheckBox2.Checked then PrtBtn.Enabled :=false
        else PrtBtn.Enabled :=true;
        DelBtn.Enabled :=True;
        CancelBtn.Enabled :=False;
        SaveBtn.Enabled :=False;
        ExtBtn.Enabled :=True;
  end;
end;

procedure TFrmFJEarn.ADOQuery1BeforePost(DataSet: TDataSet);
var info: string;
begin
      if not (Dataset.State in [dsedit,dsinsert]) then exit;
      if trim(edtname.Text)='' then
      begin
        MsgOk(handle,'员工姓名不能为空,请在员工编号文本框内输入员工编号,再按回车键!');
        DBComboBox2.SetFocus; abort; exit;
      end;
      if Dataset.FieldValues['empid']<>adoqtmp.FieldValues['empid'] then
      adoqtmp.Locate('empid',Dataset.FieldValues['empid'],[]);
      if (Dataset.State in [dsedit]) then
      begin
        if adoqtmp.FieldValues['state']=0 then
        begin
          MsgErr(handle,'该员工已离职,致附加收入信息不能修改!');
          abort; exit;
        end;
        if Dataset.FieldValues['tjflag'] then
        begin
          MsgErr(handle,'该条记录已统计入总账表,致不可进行编辑!(以确保数据的安全性)');
          abort; exit;
        end;
      end;
      if Dataset.FieldValues['event']='' then
      begin
                MsgErr(handle,'收入事由不能为空!');
                DBEdit6.SetFocus; abort; exit;
      end;
      if not ToMoney(floattostr(Dataset.FieldValues['money']),info) then
      begin
        MsgErr(handle,'金额格式不对[0.00]!');
        DBEdit3.SetFocus; abort; exit;
      end;
      if Dataset.FieldValues['money']<=0 then
      begin
                MsgErr(handle,'收入金额不能为0!');
                DBEdit3.SetFocus; abort; exit;
      end;
      if MsgQst(handle,'确认保存当前员工 ['+edtname.Text+'] 数据的增加或修改吗?')=idno then abort;
end;

procedure TFrmFJEarn.DBComboBox2KeyPress(Sender: TObject; var Key: Char);
begin
  if trim(DBComboBox2.Text)='' then exit;
  if key<>chr(13) then exit;
  if CheckBox2.Checked then CheckBox2.Checked:=false;
  edtname.Clear;
  if not ADOQoper.Active then ADOQoper.Open
  else begin ADOQoper.Close; ADOQoper.Open; end;
  if not adoqtmp.Locate('empid',trim(DBComboBox2.Text),[loCaseInsensitive]) then
  begin
      MsgErr(handle,'人员编码['+trim(DBComboBox2.Text)+']不存在!');
      DBComboBox2.SetFocus; exit;
  end
  else
  begin
      edtname.Text:=adoqtmp.FieldValues['empname'];
      edtsex.Text:=adoqtmp.FieldValues['sex'];
      with adoquery1 do
      begin
        close;sql.clear;
        sql.add('select * from earn_abs where empid=:v_empid order by rec_date desc');
        parameters.ParamValues['v_empid']:=dbcombobox2.Text;
        execsql; open;
        PrtBtn.Enabled:=recordcount>0;
      end;
  end;
end;

procedure TFrmFJEarn.DBComboBox2Change(Sender: TObject);
begin
  dbcombobox2.Text:=trim(dbcombobox2.Text);
  edtname.Clear;
end;

procedure TFrmFJEarn.ADOQuery1AfterInsert(DataSet: TDataSet);
var tmpdatetime:Tdatetime;
tmp_id:integer;
begin
    ADOQuery1.FieldValues['empid']:=dbcombobox2.Text;
    ADOQuery1.FieldValues['event']:='';
    GetHostDateTime(datamod.ADOCon,tmpdatetime);
    ADOQuery1.FieldValues['rec_date']:=tmpdatetime;
    ADOQuery1.FieldValues['money']:=0.00;
    if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
    begin
      MsgOk(handle,'操作失败,请重试!');
      exit;
    end;
    DataSet.FieldValues['tmp_id']:=tmp_id;
end;

procedure TFrmFJEarn.PrtBtnClick(Sender: TObject);
begin
  InitPage(RvProject1,RvSystem1,apppath+'\'+ReportName,apppath+'\'+ReportNdrName,0);
  SelectPage(RvProject1,'Report1',0);
  //传递参数
  AddParameter(RvProject1,'UserName',curAdmin.user_name);
  AddParameter(RvProject1,'empid',dbcombobox2.Text);
  AddParameter(RvProject1,'empname',edtname.text);
  AddParameter(RvProject1,'companyname',sysconfig.COMPANYANME);
  //显示页
  PageShow(RvProject1);
end;

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

procedure TFrmFJEarn.CheckBox2Click(Sender: TObject);
begin
  if ADOQuery1.State in [dsinsert, dsedit] then exit;
  if CheckBox2.Checked then
  begin
    edtname.Clear; edtsex.Clear;
    PrtBtn.Enabled:=false;
    with adoquery1 do
    begin
      close;sql.clear;
      sql.add('select * from earn_abs order by empid, rec_date desc');
      execsql; open;
    end;
  end
  else
  with adoquery1 do
  begin
    close; sql.Clear;
  end;
end;

procedure TFrmFJEarn.DataSourceDataChange(Sender: TObject; Field: TField);
begin
  if not CheckBox2.Checked then exit;
  with adoquery1 do
  begin
    if state in [dsinsert, dsedit] then exit;
    if recordcount=0 then exit;
    DBComboBox2.Text:=fieldvalues['empid'];
    if adoqtmp.FieldValues['empid']<>DBComboBox2.Text then
    adoqtmp.Locate('empid',trim(DBComboBox2.Text),[loCaseInsensitive]);
    edtname.Text:=adoqtmp.FieldValues['empname'];
    edtsex.Text:=adoqtmp.FieldValues['sex'];
  end;
end;

procedure TFrmFJEarn.ADOQuery1AfterEdit(DataSet: TDataSet);
var tmp_id:integer;
begin
  if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
  begin
    MsgOk(handle,'操作失败,请重试!');
    exit;
  end;
  DataSet.FieldValues['tmp_id']:=tmp_id;
end;

end.

⌨️ 快捷键说明

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