📄 unit10.~pas
字号:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, DBTables;
type
TForm10 = class(TForm)
Table1: TTable;
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
DataSource1: TDataSource;
Button3: TButton;
CheckBox1: TCheckBox;
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form10: TForm10;
implementation
uses Unit11;
{$R *.dfm}
procedure TForm10.Button3Click(Sender: TObject);
begin
checkbox1.Checked:=true;
form11.show;
end;
procedure TForm10.FormCreate(Sender: TObject);
begin
checkbox1.Checked:=false;
end;
procedure TForm10.Button1Click(Sender: TObject);
var
fa,fb,fc:integer;
aa1:double;
begin
if checkbox1.Checked=true then
begin
fa:=strtoint(form11.edit1.text);
fb:=strtoint(form11.Edit2.Text);
fc:=strtoint(form11.Edit3.Text);
table1.Filter:='部门'+'='+''''+'驾驶员'+'''' + ' or ' + '部门'+'='+''''+'实习驾驶员'+''''+
' or ' + '部门'+'='+''''+'乘务员'+''''+' or ' + '部门'+'='+''''+'公差人员'+''''
+' or ' + '部门'+'='+''''+'零修'+''''+' or ' + '部门'+'='+''''+'站点修理'+''''+
' or ' + '部门'+'='+''''+'洗车人员'+''''+' or ' + '部门'+'='+''''+'修理工'+'''';
table1.filtered:=true;
WITH TABLE1 DO
BEGIN
DISABLECONTROLS;
FIRST;
WHILE NOT EOF DO
BEGIN
EDIT;
if (FieldByName('出勤天数').AsInteger+FieldByName('平待天数').AsInteger)=0 then
begin
FieldByName('技能工资').AsFloat:=0;
//FieldByName('效益工资').AsFloat:=0;
//FieldByName('工龄工资').AsFloat:=0;
end;
if (FieldByName('出勤天数').AsInteger+FieldByName('病天数').AsInteger+FieldByName('平待天数').AsInteger)=0 then
begin
FieldByName('技能工资').AsFloat:=0;
FieldByName('效益工资').AsFloat:=0;
FieldByName('工龄工资').AsFloat:=0;
end;
if (FieldByName('工龄').AsInteger>=0) and (FieldByName('工龄').AsInteger<=10) then
begin
aa1:=0.3;
end;
if (FieldByName('工龄').AsInteger>10) and (FieldByName('工龄').AsInteger<=20) then
begin
aa1:=0.4;
end;
if (FieldByName('工龄').AsInteger>20) and (FieldByName('工龄').AsInteger<=30) then
begin
aa1:=0.5;
end;
if FieldByName('工龄').AsInteger>30 then
begin
aa1:=0.6;
end;
if (FieldByName('部门').AsString='驾驶员') or
(FieldByName('部门').AsString='乘务员')
or (FieldByName('部门').AsString='修理工')
or (FieldByName('部门').AsString='零修') or
(FieldByName('部门').AsString='站点修理') or (FieldByName('部门').AsString='实习驾驶员') and (FieldByName('族别').AsString='汉族') then
begin
if (FieldByName('出勤天数').AsInteger>0) and (FieldByName('出勤天数').AsInteger<fb) then
begin
FieldByName('事扣').AsFloat:=(FieldByName('效益工资').AsFloat +FieldByName('工龄工资').AsFloat)/20.92*(fb-FieldByName('出勤天数').AsInteger);
end;
if FieldByName('病天数').AsInteger>0 then
begin
FieldByName('病工资').AsFloat:=(FieldByName('效益工资').AsFloat +FieldByName('工龄工资').AsFloat)/20.92*(FieldByName('病天数').AsInteger)*aa1;
end;
end;
if (FieldByName('部门').AsString='驾驶员') or (FieldByName('部门').AsString='实习驾驶员') or
(FieldByName('部门').AsString='乘务员') or
(FieldByName('部门').AsString='修理工') or (FieldByName('部门').AsString='零修') or
(FieldByName('部门').AsString='站点修理') and (FieldByName('族别').AsString='少数民族') then
begin
if (FieldByName('出勤天数').AsInteger>0) and (FieldByName('出勤天数').AsInteger<fc) then
begin
FieldByName('事扣').AsFloat:=(FieldByName('效益工资').AsFloat +FieldByName('工龄工资').AsFloat)/20.92*(fc-FieldByName('出勤天数').AsInteger);
end;
if FieldByName('病天数').AsInteger>0 then
begin
FieldByName('病工资').AsFloat:=(FieldByName('效益工资').AsFloat +FieldByName('工龄工资').AsFloat)/20.92*(FieldByName('病天数').AsInteger)*aa1;
end;
//FieldByName('病工资').AsFloat:=(FieldByName('效益工资').AsFloat +FieldByName('工龄工资').AsFloat)/20.92*(FieldByName('病天数').AsInteger)*aa1;
end;
if (FieldByName('部门').AsString='公差人员') or (FieldByName('部门').AsString='洗车人员') then
begin
if (FieldByName('出勤天数').AsInteger>0) and (FieldByName('出勤天数').AsInteger<fa) then
begin
FieldByName('事扣').AsFloat:=(FieldByName('效益工资').AsFloat +FieldByName('工龄工资').AsFloat)/fa*(fa-FieldByName('出勤天数').AsInteger);
end;
if FieldByName('病天数').AsInteger>0 then
begin
FieldByName('病工资').AsFloat:=(FieldByName('效益工资').AsFloat +FieldByName('工龄工资').AsFloat)/20.92*(FieldByName('病天数').AsInteger)*aa1;
end;
//FieldByName('病工资').AsFloat:=(FieldByName('效益工资').AsFloat +FieldByName('工龄工资').AsFloat)/20.92*(FieldByName('病天数').AsInteger)*aa1;
end;
if FieldByName('部门').AsString='驾驶员' then
begin
FieldByName('加班').AsFloat:=FieldByName('平加天数').AsInteger*30+FieldByName('日加天数').AsInteger*40+FieldByName('节加天数').AsInteger*60;
if (FieldByName('成本百分点').AsInteger>=0) and (FieldByName('成本百分点').AsInteger<100) then
begin
FieldByName('加班').AsFloat:= FieldByName('加班').AsFloat* FieldByName('成本百分点').AsInteger/100;
end;
if ((FieldByName('平加天数').AsInteger
+ FieldByName('日加天数').AsInteger + FieldByName('节加天数').AsInteger
+ FieldByName('出勤天数').AsInteger + FieldByName('平待天数').AsInteger
+ FieldByName('日待天数').AsInteger
+ FieldByName('节待天数').AsInteger
+ FieldByName('其它出勤').AsInteger)>=fa)
and (FieldByName('成本百分点').AsInteger<100)
and (FieldByName('加班').AsFloat <100) then
begin
FieldByName('加班').AsFloat:= 100;
end;
FieldByName('待休工资').AsFloat:=FieldByName('平待天数').AsInteger*15+FieldByName('日待天数').AsInteger*30+
FieldByName('节待天数').AsInteger*45+
FieldByName('工龄工资').AsFloat/20.92*
FieldByName('平待天数').AsInteger;
if (FieldByName('趟次百分点').AsInteger>0) and (FieldByName('趟次百分点').AsInteger<98) then
begin
FieldByName('趟次扣').AsFloat:= (98- FieldByName('趟次百分点').AsFloat)*10;
end;
end;
if FieldByName('部门').AsString='乘务员' then
begin
FieldByName('加班').AsFloat:=FieldByName('平加天数').AsInteger*21+FieldByName('日加天数').AsInteger*28+FieldByName('节加天数').AsInteger*42;
if (FieldByName('成本百分点').AsInteger>=0) and (FieldByName('成本百分点').AsInteger<100) then
begin
FieldByName('加班').AsFloat:= FieldByName('加班').AsFloat* FieldByName('成本百分点').AsInteger/100;
end;
if ((FieldByName('平加天数').AsInteger+ FieldByName('日加天数').AsInteger
+FieldByName('节加天数').AsInteger
+fieldbyname('出勤天数').AsInteger
+fieldbyname('平待天数').AsInteger
+FieldByName('日待天数').AsInteger
+FieldByName('节待天数').AsInteger + FieldByName('其它出勤').AsInteger)>=fa)
and (FieldByName('成本百分点').AsInteger<100) and (FieldByName('加班').AsFloat<100)
then
begin
FieldByName('加班').AsFloat:= 100;
end;
FieldByName('待休工资').AsFloat:=FieldByName('平待天数').AsInteger*10+FieldByName('日待天数').AsInteger*20+
FieldByName('节待天数').AsInteger*30+FieldByName('工龄工资').AsFloat/20.92*FieldByName('平待天数').AsInteger;
if (FieldByName('趟次百分点').AsInteger>0) and (FieldByName('趟次百分点').AsInteger<98) then
begin
FieldByName('趟次扣').AsFloat:= (98- FieldByName('趟次百分点').AsFloat)*5;
end;
end;
post;
NEXT
END;
EnableControls;
END;
WITH TABLE1 DO
BEGIN
DISABLECONTROLS;
FIRST;
WHILE NOT EOF DO
BEGIN
EDIT;
if (FieldByName('病天数').AsInteger>0) and (FieldByName('出勤天数').AsInteger=0) then
begin
FieldByName('效益工资').AsFloat:=0;
FieldByName('工龄工资').AsFloat:=0;
end;
post;
NEXT
END;
EnableControls;
END;
table1.Filter:='部门'+'<>'+''''+'驾驶员'+'''' + ' and ' + '部门'+'<>'+''''+'乘务员'+''''+
' and ' + '部门'+'<>'+''''+'修理工'+''''+' and ' + '部门'+'<>'+''''+'零修'+''''
+' and ' + '部门'+'<>'+''''+'站点修理'+''''+' and ' + '部门'+'<>'+''''+'乘务员'+'''';
table1.filtered:=true;
WITH TABLE1 DO
BEGIN
DISABLECONTROLS;
FIRST;
WHILE NOT EOF DO
BEGIN
EDIT;
FieldByName('技能工资').AsFloat:=0;
post;
NEXT
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -