📄 unit_modesalary.~pas
字号:
unit Unit_modesalary;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Buttons, Grids, DBGrids, ExtCtrls, Db, DBTables;
type
TForm_modesalary = class(TForm)
Panel2: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DBGrid2: TDBGrid;
GroupBox1: TGroupBox;
Panel3: TPanel;
BBSerch: TBitBtn;
BBClose: TBitBtn;
BBPrint: TBitBtn;
BBPic: TBitBtn;
BBPrit: TBitBtn;
BBNext: TBitBtn;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Panel4: TPanel;
TabSheet2: TTabSheet;
GroupBox2: TGroupBox;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
Panel6: TPanel;
Panel7: TPanel;
bbdayserch: TBitBtn;
BitBtn2: TBitBtn;
bbdaychart: TBitBtn;
bbdayprior: TBitBtn;
bbdaynext: TBitBtn;
Panel8: TPanel;
Panel5: TPanel;
ename: TEdit;
Panel9: TPanel;
CheckBoxdicname: TCheckBox;
DBGrid1: TDBGrid;
Queryall: TQuery;
query1all: TQuery;
Tableall: TTable;
Querydaysalary: TQuery;
Tabledaysalary: TTable;
DataSource1: TDataSource;
DataSource2: TDataSource;
TabledaysalaryTdate: TDateField;
TabledaysalaryName: TStringField;
TabledaysalaryQcNum: TIntegerField;
TabledaysalaryWasternum: TIntegerField;
TabledaysalarySubSalary: TFloatField;
TabledaysalaryDisSalary: TFloatField;
TabledaysalaryUnitSalary: TFloatField;
TabledaysalaryDaySalary: TFloatField;
TabledaysalaryJsrgz: TFloatField;
Queryallname: TStringField;
QueryallSUMOFqcnum: TFloatField;
QueryallSUMOFwasternum: TFloatField;
QueryallSUMOFsubsalary: TFloatField;
QueryallSUMOFdissalary: TFloatField;
QueryallSUMOFmonthsalary: TFloatField;
QueryallSUMOFyuejishi: TFloatField;
QueryallSUMOFzongji: TFloatField;
BitBtn1: TBitBtn;
TabledaysalaryHeji: TFloatField;
Query1: TQuery;
procedure BBSerchClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BBPrintClick(Sender: TObject);
procedure BBPicClick(Sender: TObject);
procedure BBCloseClick(Sender: TObject);
procedure BBNextClick(Sender: TObject);
procedure BBPritClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure bbdayserchClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure enameEnter(Sender: TObject);
procedure bbdaychartClick(Sender: TObject);
procedure bbdayprintClick(Sender: TObject);
procedure bbdaynextClick(Sender: TObject);
procedure bbdaypriorClick(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure TabSheet1Show(Sender: TObject);
procedure TabSheet2Exit(Sender: TObject);
procedure TabSheet1Exit(Sender: TObject);
procedure DateTimePicker1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_modesalary: TForm_modesalary;
i,j,al: integer;
implementation
uses
UnitQueryID, UnitSulfSalaryPrint, UnitSulfSalaryChart,
UnitSulfSalaryDaychart, UnitSulfSalaryDayPrint, Unit_mdoedaysalaryprt,
Unit_modedaysalarychart, Unit_modeallsalaryprt, Unit_modeallsalarychart;
{$R *.DFM}
////====以下是查询按钮事件=============================================
procedure TForm_modesalary.BBSerchClick(Sender: TObject);
var int0,int1,int2,int3,int4,int5,int6:integer;
f1,f2,f3,f4:real;
begin
al:=1;
///======首先清除table1记录,为查询做准备=============
with query1all do
begin
close;
sql.Clear;
sql.Add('delete from modeallSalary');
execsql;
end;
//======以下是第一次对query1分组查询过滤============
with query1all do begin
close;
sql.Clear;
Unprepare;
sql.Add('Select name,prodid,sum(hao)as SumQcNum,sum(xioufei)as SumLackNum,');
sql.Add('sum(SubSalary)as sumsubsalary,');
sql.Add('sum(DisSalary)as sumdissalary,avg(xioujia)as avgUS from zhenxiou,ProdDictionary');
sql.Add (' where riqi between :fromdate and :todate and zhenxiou.prodid=ProdDictionary.prodid');
sql.Add ('group by name,prodid');
parambyname('fromdate').asdate:=DateTimePicker1.date;
parambyname('todate').asdate:=DateTimePicker2.date;
Prepare;
open;
if query1all.FieldByName('name').asstring='' then begin
showmessage('无记录!');
exit;
end;
end;//with
//=========以上第一次查询结束=======================
//=========以下是向table1中誊写记录=================
tableall.open;
query1all.First;
while not query1all.eof do
begin
//table1.DisableControls;
tableall.append;
tableall.FieldByName('name').asstring:=query1all.fieldbyname('name').asstring;
tableall.FieldByName('qcnum').asinteger:=query1all.fieldbyname('sumqcnum').asinteger;
tableall.FieldByName('subsalary').asfloat:=query1all.fieldbyname('sumsubsalary').asfloat;
tableall.FieldByName('dissalary').asfloat:=query1all.fieldbyname('sumdissalary').asfloat;
tableall.FieldByName('unitsalary').asfloat:=query1all.fieldbyname('avgUS').asfloat;
int0:=query1all.fieldbyname('sumqcnum').asinteger;
int1:=query1all.fieldbyname('sumlacknum').asinteger;
// int2:=query1all.fieldbyname('sumimpunum').asinteger;
//int3:=query1all.fieldbyname('sumripnum').asinteger;
//int4:=query1all.fieldbyname('sumpolenum').asinteger;
// int5:=query1all.fieldbyname('sumelsenum').asinteger;
int6:=int1;
tableall.FieldByName('wasternum').asinteger:=int6;//计算总废品数
f1:=query1all.fieldbyname('sumsubsalary').asfloat;
f2:=query1all.fieldbyname('sumdissalary').asfloat;
f3:=query1all.fieldbyname('avgUS').asfloat;
f4:=f3*int0; //计件工资
f4:=strtofloat(formatfloat('0.00',f4));
tableall.FieldByName('monthsalary').asfloat:=f4;//计件月工资
tableall.post;
query1all.next;
//table1.EnableConstraints;
end;//while
//========以上抄写记录完成========================
//========以下是对Table1进行SQl在分组查询,得到用户界面==========
with query1all do begin
close;
sql.Clear;
Unprepare;
sql.Add('Select ximi, sum(jishizi)as jishizi,sum(rizi)as jsgz ,sum(butie)as butie,sum(kou)as kou from zhengjishigozi');
sql.Add (' where jsrq between :fromdate and :todate ');
sql.Add ('group by ximi');
parambyname('fromdate').asdate:=DateTimePicker1.date;
parambyname('todate').asdate:=DateTimePicker2.date;
Prepare;
open;
//showmessage(inttostr(recordcount));
//if query1all.FieldByName('name').asstring='' then begin
//showmessage('无记录!');
// exit;
//end;
end;//with
query1all.First;
while not query1all.eof do
begin
with query1 do
begin
close;
sql.Clear;
Unprepare;
sql.Add('Select * from modeallSalary.DB');
sql.Add (' where name=:na');
parambyname('na').asstring:=query1all.fieldbyname('ximi').asstring;
Prepare;
open;
if recordcount=0 then
begin
tableall.append;
tableall.FieldByName('name').asstring:=query1all.fieldbyname('ximi').asstring;
tableall.FieldByName('subsalary').asfloat:=query1all.fieldbyname('butie').asfloat;
tableall.FieldByName('dissalary').asfloat:=query1all.fieldbyname('kou').asfloat;
tableall.FieldByName('yuejishi').asfloat:=query1all.fieldbyname('jishizi').asfloat;//计算计时工资
tableall.FieldByName('zongji').asfloat:=query1all.fieldbyname('jsgz').asfloat;
tableall.post;
query1all.next;
end
else
begin
tableall.First;
while not tableall.eof do
begin
if query1all.fieldbyname('ximi').asstring=tableall.FieldByName('name').asstring then
begin
tableall.edit;
f3:=tableall.FieldByName('Monthsalary').asfloat;
f1:=tableall.FieldByName('subsalary').asfloat; //计件补贴
f2:=tableall.FieldByName('dissalary').asfloat; //计件扣款
tableall.FieldByName('subsalary').asfloat:=f1+query1all.fieldbyname('butie').asfloat;
tableall.FieldByName('dissalary').asfloat:=f2+query1all.fieldbyname('kou').asfloat;
f4:=query1all.fieldbyname('jishizi').asfloat;
tableall.FieldByName('yuejishi').asfloat:=f4;//计算计时工资
tableall.FieldByName('zongji').asfloat:=query1all.fieldbyname('butie').asfloat+f3+f1-f2+f4-query1all.fieldbyname('kou').asfloat;
tableall.post;
query1all.next;
end;
tableall.next;
end;
end;
end;
end;
//table1.EnableConstraints;
//=======无计时工资的在合计中加数据
tableall.First;
while not tableall.eof do
begin
f3:=tableall.FieldByName('Monthsalary').asfloat;
f1:=tableall.FieldByName('subsalary').asfloat;
f2:=tableall.FieldByName('dissalary').asfloat;
if tableall.FieldByName('zongji').asfloat=0 then
begin
tableall.edit;
tableall.FieldByName('zongji').asfloat:=f3+f1-f2;
tableall.post;
end;
tableall.Next;
end;
with queryall do begin
close;
sql.clear;
sql.add('select name,sum(qcnum),sum(wasternum),sum(subsalary),sum(dissalary),');
sql.add('sum(monthsalary),sum(yuejishi),sum(zongji) from modeallSalary group by name');
open;
end;
//=======以上是对Table1进行SQl在分组查询=========================
end;
//========================总查询结束==================================
procedure TForm_modesalary.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
//=========清除记录,为查询做准备===========
with query1all do
begin
close;
sql.Clear;
sql.Add('delete from modeallSalary ');
execsql;
end;
with query1all do
begin
close;
sql.Clear;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -