📄 unit10.pas
字号:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, StdCtrls, Db, DBTables, Buttons, Spin;
type
Tfrm_wage = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
btn_new: TBitBtn;
btn_total: TBitBtn;
btn_clear: TBitBtn;
btn_print: TBitBtn;
btn_exit: TBitBtn;
Label26: TLabel;
Label25: TLabel;
Query1: TQuery;
se_year: TSpinEdit;
se_month: TSpinEdit;
lbl_wage: TLabel;
Label1: TLabel;
lbl_total: TLabel;
Label4: TLabel;
Label2: TLabel;
Label3: TLabel;
lbl_rec: TLabel;
procedure btn_exitClick(Sender: TObject);
procedure btn_newClick(Sender: TObject);
procedure btn_totalClick(Sender: TObject);
procedure btn_clearClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure se_yearChange(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure btn_printClick(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure DBGrid1CellClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_wage: Tfrm_wage;
implementation
uses Unit16;
{$R *.DFM}
procedure Tfrm_wage.btn_exitClick(Sender: TObject);
begin
self.close;
end;
procedure Tfrm_wage.btn_newClick(Sender: TObject);
var
asql:string;
i:integer;
date1,date2:Tdatetime;
begin
table1.Filter:='工资年度='+se_year.text+' and 工资月份='+se_month.text;
table1.Filtered:=true;
if table1.RecordCount=0 then
begin
asql:='insert into 工资表(编号,姓名,日工资,出勤天数,奖金,安装费,工资年度,工资月份) '+
'select distinct 序号,姓名,日工资,25,0,0,'+se_year.text+','+se_month.text+
' from 人员信息表.db;';
query1.sql.Text:=asql;
query1.ExecSQL;
table1.Refresh;
table1.first;
date1:=encodedate(se_year.Value,se_month.value,1);
date2:=encodedate(se_year.Value,se_month.value+1,1);
for i:=0 to table1.recordcount-1 do
begin
query1.close;
query1.sql.text:=('select sum(安装费) from 安装记录表.db where 主安装人="'+table1.fields[1].asstring+'"');
query1.sql.add(' and 安装日期>=:d1 and 安装日期<:d2;');
query1.ParamByName('d1').asdatetime:=date1;
query1.ParamByName('d2').asdatetime:=date2;
query1.open;
table1.edit;
table1.FieldByName('安装费').asfloat:=query1.fields[0].asfloat;
table1.Post;
table1.next;
end;
end;
end;
procedure Tfrm_wage.btn_totalClick(Sender: TObject);
var
s:string;
begin
table1.filter:='工资年度='+se_year.text+'and 工资月份='+se_month.text;
table1.filtered:=true;
if table1.recordcount<>0 then
begin
s:='update 工资表.db set 出勤工资=日工资*出勤天数,合计=出勤工资+奖金+安装费 '+
'where 工资年度='+se_year.text+' and 工资月份 ='+se_month.text;
query1.sql.text:=s;
query1.execsql;
table1.refresh;
s:='select sum(出勤工资),sum(合计),sum(安装费) from 工资表.db where 工资年度='+se_year.text+' and 工资月份='+se_month.text;
query1.sql.text:=s;
query1.open;
lbl_wage.caption:=query1.fields[0].asstring;
lbl_total.caption:=query1.fields[1].asstring;
query1.close;
end;
end;
procedure Tfrm_wage.btn_clearClick(Sender: TObject);
var
s:string;
begin
s:='delete from 工资表.db where 工资年度='+se_year.text+'and 工资月份='+se_month.text;
query1.sql.text:=s;
query1.execsql;
table1.refresh;
end;
procedure Tfrm_wage.FormCreate(Sender: TObject);
var
ayear,amonth,aday:word;
begin
lbl_rec.Caption:=inttostr(table1.recordcount);
decodedate(date(),ayear,amonth,aday);
se_year.value:=ayear;
se_month.value:=amonth;
table1.filter:='工资年度='+se_year.text+' and 工资月份='+se_month.text;
table1.filtered:=true;
end;
procedure Tfrm_wage.se_yearChange(Sender: TObject);
begin
table1.filter:='工资年度='+se_year.text+' and 工资月份='+se_month.text;
table1.filtered:=true;
end;
procedure Tfrm_wage.DataSource1DataChange(Sender: TObject; Field: TField);
begin
lbl_rec.Caption:=inttostr(table1.recordcount);
end;
procedure Tfrm_wage.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (table1.recno=table1.recordcount) and (key=vk_down) then key:=0;
end;
procedure Tfrm_wage.btn_printClick(Sender: TObject);
begin
table1.First;
rpt_wage.table1.Filter:='工资年度='+se_year.text+' and 工资月份='+se_month.text;
rpt_wage.table1.Filtered:=true;
rpt_wage.Preview;
end;
procedure Tfrm_wage.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
With dbgrid1 do begin
If Odd(table1.FieldByName('编号').asinteger) then begin
Canvas.Brush.Color:=$02E0E8F0;
Canvas.Font.Color:=$02003300;
end
else begin
Canvas.Brush.Color:=$02E8F8F8;
Canvas.Font.Color:=$02330000;
end;
If State=[gdSelected] then begin
Canvas.Brush.Color:=$02445511;
Canvas.Font.Color:=clWhite;
end;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
procedure Tfrm_wage.DBGrid1CellClick(Column: TColumn);
begin
{ with table1 do
begin
if RecordCount<1 then Exit;
if State<>dsEdit then Edit;
if FieldByName('选择').AsBoolean
then FieldByName('选择').AsBoolean := False
else FieldByName('选择').AsBoolean := True;
Post;
end; }
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -