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

📄 basepay_base.pas

📁 大型分布式销售管理系统,DELPHI编写,商业源代码,现在已经商用,下载者严禁出售该代码,只可以自己学习,包含数据库文件
💻 PAS
字号:
unit basepay_base;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Mask, DB, DBTables, ExtCtrls;

type
  Tfrm_basepay_base = class(TForm)
    dspaybase: TDataSource;
    qforuse: TQuery;
    tpay: TTable;
    qforuse2: TQuery;
    qforuse2BDEDesigner: TStringField;
    qforuse3: TQuery;
    Query1: TQuery;
    Panel2: TPanel;
    Label1: TLabel;
    Label3: TLabel;
    Label2: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label4: TLabel;
    DBEdit10: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit7: TDBEdit;
    DBComboBox3: TDBComboBox;
    Label8: TLabel;
    DBComboBox2: TDBComboBox;
    Label5: TLabel;
    DBEdit2: TDBEdit;
    DBEdit1: TDBEdit;
    DBComboBox1: TDBComboBox;
    Panel1: TPanel;
    btn_first: TButton;
    btn_prev: TButton;
    btn_next: TButton;
    btn_last: TButton;
    btn_addnew: TButton;
    btn_edit: TButton;
    btn_save: TButton;
    btn_cancel: TButton;
    btn_delete: TButton;
    Button1: TButton;
    tpaybase: TQuery;
    uptpaybase: TUpdateSQL;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure btn_firstClick(Sender: TObject);
    procedure btn_lastClick(Sender: TObject);
    procedure btn_addnewClick(Sender: TObject);
    procedure btn_saveClick(Sender: TObject);
    procedure btn_prevClick(Sender: TObject);
    procedure btn_nextClick(Sender: TObject);
    procedure btn_editClick(Sender: TObject);
    procedure btn_cancelClick(Sender: TObject);
    procedure btn_deleteClick(Sender: TObject);

    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormDestroy(Sender: TObject);

  private
    { Private declarations }
    procedure LockEdit;
    //定义函数,来改变各个输入框是否可以编辑,当用户再增加新记录
    //或者编辑记录以前,不可以修改
    procedure UnlockEdit;
    //定义函数,用来让输入文本框可以编辑
    procedure DisableBtn;
    //定义过程,用来使某些按钮失效
    procedure EnableBtn;
    //定义过程,用来使某些按钮有效
  public
    { Public declarations }
  end;

var
  frm_basepay_base: Tfrm_basepay_base;

implementation

uses data, basepay, u_basepay;

{$R *.dfm}
//***************释放空间********************
procedure TFrm_basepay_base.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
        Action:=cafree;
end;
procedure TFrm_basepay_base.FormCreate(Sender: TObject);
begin
  if not tpaybase.Active then tpaybase.open;
     lockedit;
     enablebtn;
     btn_delete.Enabled :=true;
     btn_save.Enabled :=false;
       //通过qforuse读出办事处名称列表
  DBComboBox1.Items.Clear ;
  with qforuse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select 办事处名称 from pub_z_office');
    prepare;
    open;
    while not eof do begin
      DBComboBox1.Items.Add(fieldbyname('办事处名称').AsString);
      next;
    end;
  end;
end;
//***************以下是自定义的按纽和编辑的可否应用部分*********************
//自定义过程,用来确定每个Edit空间是否可以编辑
procedure TFrm_basepay_base.LockEdit;
begin
{       DBEdit1.ReadOnly :=true;
       DBEdit2.ReadOnly :=true;
       DBEdit10.ReadOnly :=true;
       DBComboBox3.ReadOnly :=true;
       DBEdit7.ReadOnly :=true;
       DBEdit8.ReadOnly :=true;
       DBEdit9.ReadOnly :=true;
       DBComboBox2.ReadOnly :=true;
       DBComboBox1.ReadOnly :=true;}
       panel2.Enabled :=false;
end;

procedure TFrm_basepay_base.UnlockEdit ;
begin
 {      DBEdit2.ReadOnly :=false;
       DBEdit1.ReadOnly :=false;
       DBEdit10.ReadOnly :=true;
       DBComboBox3.ReadOnly :=false;
       DBEdit7.ReadOnly :=false;
       DBEdit8.ReadOnly :=false;
       DBEdit9.ReadOnly :=false;
       DBComboBox2.ReadOnly :=false;
       DBComboBox1.ReadOnly :=false;}
              panel2.Enabled :=true;

end;


procedure TFrm_basepay_base.DisableBtn ;
begin
    btn_first.Enabled :=false;
    btn_prev.Enabled :=false;
    btn_next.Enabled :=false;
    btn_last.Enabled :=false;

    btn_addnew.Enabled :=false;
    btn_edit.Enabled :=false;
end;

procedure TFrm_basepay_base.EnableBtn ;
begin
    btn_first.Enabled :=true;
    btn_prev.Enabled :=true;
    btn_next.Enabled :=true;
    btn_last.Enabled :=true;

    btn_addnew.Enabled :=true;
    btn_edit.Enabled :=true;
end;

//***************以上是自定义的按纽和编辑的可否应用部分*********************

//***************以下是按纽操作。*********************

procedure TFrm_basepay_base.btn_firstClick(Sender: TObject);
begin
        if not tpaybase.Bof then tpaybase.First;
end;

procedure TFrm_basepay_base.btn_lastClick(Sender: TObject);
begin
        if not tpaybase.eof then tpaybase.Last;
end;
 procedure TFrm_basepay_base.btn_prevClick(Sender: TObject);
begin
        if not tpaybase.Bof then tpaybase.Prior;
end;

procedure TFrm_basepay_base.btn_nextClick(Sender: TObject);
begin
        if not tpaybase.Eof then tpaybase.Next;
end;
procedure TFrm_basepay_base.btn_addnewClick(Sender: TObject);
var
  Present: TDateTime;
begin
        UnlockEdit;
        tpaybase.append;
        dbcombobox1.SetFocus ;

        DisableBtn;
        btn_save.Enabled :=true;
        btn_cancel.Enabled :=true;
//给下面审核栏默认值:
//日期:
    Present:= Now;
    DBEdit10.Text :=datetimetostr(present);
//人名:
  with qforuse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select 主管,审核,录入 from pub_z_payinbase');
    prepare;
    open;
    last;
    tpaybase.fieldbyname('主管').AsString:=fieldbyname('主管').AsString;
    tpaybase.fieldbyname('审核').AsString:=fieldbyname('审核').AsString;
    tpaybase.fieldbyname('录入').AsString:=fieldbyname('录入').AsString;
  end;
end;

procedure TFrm_basepay_base.btn_saveClick(Sender: TObject);
begin
      with data.zxjxdata do begin
      if not DatabaseJxw.intransaction then DatabaseJxw.starttransaction;
      try
      tpaybase.ApplyUpdates;
      tpaybase.CommitUpdates ;
      DatabaseJxw.commit;
        //使编辑框和按钮有反应:
        LockEdit;
        EnableBtn ;
        btn_save.Enabled :=false;
        btn_cancel.Enabled :=false;
      except
        DatabaseJxw.Rollback;
        raise;
      end;
    end;
{    tpaybase.Close ;
    tpaybase.Open;
 }
end;



procedure TFrm_basepay_base.btn_editClick(Sender: TObject);
begin
//        tpaybase.CommitUpdates ;
        tpaybase.Edit ;
        //让文本框可以编辑
        UnlockEdit;
        //使一些按钮失效
        DisableBtn;
        btn_save.Enabled :=true;
        btn_cancel.Enabled :=true;

end;


procedure TFrm_basepay_base.btn_cancelClick(Sender: TObject);
begin
        tpaybase.Cancel ;

        lockedit;

        enablebtn;
        btn_cancel.Enabled :=false;
        btn_save.Enabled :=false;

end;


procedure TFrm_basepay_base.btn_deleteClick(Sender: TObject);
begin
     tpaybase.Delete;
     tpaybase.ApplyUpdates ;
     lockedit;
     enablebtn;
     btn_delete.Enabled :=false;
     btn_save.Enabled :=false;

end;
//***************以上是按纽操作。*********************


procedure Tfrm_basepay_base.Button1Click(Sender: TObject);
var
   varcount:integer;
begin

   office:=DBComboBox1.Text;
   year:=DBComboBox3.Text;
   month:=DBComboBox2.Text;

   //判断该办事处名称和年月及该办事处人员的组合是否存在,存在,则提出相关人员数据
                                      //   否则,插入相关的人员数据
       with qforuse do begin
          if active then close;
          unprepare;
          sql.Clear;
          sql.Add('select a.* from pub_z_payin a,pub_z_stuff b where a.年=:year and a.月=:month and a.工号=b.工号 and b.办事处名称=:office');
          parambyname('year').AsString:=tpaybase.fieldbyname('年').Asstring;
          parambyname('month').asstring:=tpaybase.fieldbyname('月').Asstring;
          parambyname('office').asstring:=tpaybase.fieldbyname('办事处名称').Asstring;
          open;
          //如果没有办事处名称和年月的组合,就插入到pub_z_payin。
          if not findfirst then
             //提出相关工号:
            with qforuse2 do begin
            if active then close;
            unprepare;
            sql.Clear;
            sql.Add('select 工号 from pub_z_stuff where 办事处名称=:office');
            parambyname('office').asstring:=tpaybase.fieldbyname('办事处名称').Asstring;
            Open;
            //循环赋值:
           if findfirst then
            while not qforuse2.Eof do
               with qforuse3 do begin
               Close;
               UnPrepare ;
               SQL.Clear ;
               SQL.Add('insert into pub_z_payin values(:gh,:qqday,:qqj,:ybz,:yf,:shf,:yk,:year,:month,:otherjl,:otherkch)');
               parambyname('gh').AsString:=qforuse2.fieldbyname('工号').Asstring;
               parambyname('year').AsString:=tpaybase.fieldbyname('年').Asstring;
               parambyname('month').asstring:=tpaybase.fieldbyname('月').Asstring;
               parambyname('qqday').asstring:='0';
               parambyname('yf').ascurrency:=0;
               parambyname('yk').ascurrency:=0;               
               parambyname('shf').ascurrency:=0;
               parambyname('qqj').ascurrency:=0;
               parambyname('ybz').ascurrency:=0;
               parambyname('otherjl').ascurrency:=0;
               parambyname('otherkch').ascurrency:=0;
               ExecSQL;

           qforuse2.next;
           end;
          end
          //如果有办事处名称和年月的组合,检查是否每个人都有记录,没有记录的人插入记录
          else begin
            with query1 do begin
            if active then close;
            unprepare;
            sql.Clear;
            sql.Add('select count(*) count1 from pub_z_stuff where 办事处名称=:office');
            parambyname('office').asstring:=tpaybase.fieldbyname('办事处名称').Asstring;
            Open;
            varcount:=fieldbyname('count1').AsInteger ;
            if active then close;
            unprepare;
            sql.Clear;
            sql.Add('select count(*) count2 from pub_z_payin a,pub_z_stuff b where a.年=:year and a.月=:month and a.工号=b.工号 and b.办事处名称=:office');
            parambyname('office').asstring:=tpaybase.fieldbyname('办事处名称').Asstring;
            parambyname('year').AsString:=tpaybase.fieldbyname('年').Asstring;
            parambyname('month').asstring:=tpaybase.fieldbyname('月').Asstring;
            Open;
           //如果有人没有该年月记录,则插入该人记录。
           if varcount>fieldbyname('count2').AsInteger then begin
            if active then close;
            unprepare;
            sql.Clear;
            sql.Add('insert into pub_z_payin select pub_z_stuff.工号,''0'',0,0,0,0,0,:year,:month,0,0 from pub_z_stuff where (pub_z_stuff.工号 not in (select pub_z_payin.工号 from pub_z_payin,pub_z_stuff where pub_z_payin.工号=pub_z_stuff.工号 '
            +'and pub_z_stuff.办事处名称=:office and pub_z_payin.年=:year and pub_z_payin.月=:month)) and pub_z_stuff.办事处名称=:office');
            parambyname('office').asstring:=tpaybase.fieldbyname('办事处名称').Asstring;
            parambyname('year').AsString:=tpaybase.fieldbyname('年').Asstring;
            parambyname('month').asstring:=tpaybase.fieldbyname('月').Asstring;
            Open;
            end;
            end;

        end;
     end;
   close;
   if not assigned(Frm_basepay) then
    application.createform(TFrm_basepay,Frm_basepay);
    Frm_basepay.show
  end;




procedure Tfrm_basepay_base.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if Key = #13 then
    begin
      Key := #0;
      Perform(WM_NEXTDLGCTL, 0, 0);
    end;
end;

procedure Tfrm_basepay_base.FormDestroy(Sender: TObject);
begin
Frm_basepay_base:=nil;
end;

end.

⌨️ 快捷键说明

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