📄 basepay_base.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 + -