📄 unitsulfdate.~pas
字号:
unit UnitSulfDate;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Mask, DBCtrls, Buttons, Db, DBTables, Grids, DBGrids,
ComCtrls;
type
TFrmSulfDate = class(TForm)
Panel1: TPanel;
DataSource2: TDataSource;
Queryall: TQuery;
Tableall: TTable;
DataSource1: TDataSource;
Panel5: TPanel;
TableallQcNum: TIntegerField;
TableallWasternum: TIntegerField;
TableallQcper: TFloatField;
TableallWasterPer: TFloatField;
TableallProfitPer: TFloatField;
TableallProdname: TStringField;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Panel2: TPanel;
bbSerch: TBitBtn;
bbcancal: TBitBtn;
bbprior: TBitBtn;
bbnext: TBitBtn;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
bbpint: TBitBtn;
BitBtn1: TBitBtn;
Panel6: TPanel;
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
Panel4: TPanel;
Panel7: TPanel;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
Panel8: TPanel;
RBDate: TRadioButton;
RBMonth: TRadioButton;
bbserchone: TBitBtn;
BitBtn3: TBitBtn;
bbchartone: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
Tableone: TTable;
DataSourcetableone: TDataSource;
DBGrid2: TDBGrid;
DataSourcequeryone: TDataSource;
Queryone: TQuery;
TableoneTDate: TDateField;
TableoneFigID: TStringField;
TableoneProdname: TStringField;
TableoneQcnum: TIntegerField;
TableoneWasternum: TIntegerField;
TableoneQcper: TFloatField;
TableoneWasterPer: TFloatField;
TableoneProfitPer: TFloatField;
TableoneRubbMixID: TStringField;
TableoneTMonth: TStringField;
DataSourcedate: TDataSource;
sulfQueryperdate: TQuery;
sulfQueryperdatetdate: TDateField;
sulfQueryperdateSUMOFqcnum: TFloatField;
sulfQueryperdateSUMOFwasternum: TFloatField;
sulfQueryperdateAVERAGEOFqcper: TFloatField;
sulfQueryperdateAVERAGEOFProfitPer: TFloatField;
sulfQueryperdateSUMOFWasterPer: TFloatField;
DataSource3: TDataSource;
SulfQuerypermonth: TQuery;
SulfQuerypermonthtmonth: TStringField;
SulfQuerypermonthSUMOFqcnum: TFloatField;
SulfQuerypermonthSUMOFwasternum: TFloatField;
SulfQuerypermonthAVERAGEOFqcper: TFloatField;
SulfQuerypermonthAVERAGEOFProfitPer: TFloatField;
SulfQuerypermonthSUMOFWasterPer: TFloatField;
TableoneWastermoney: TFloatField;
sulfQueryperdateSUMOFWastermoney: TFloatField;
SulfQuerypermonthSUMOFWastermoney: TFloatField;
TableallWastermoney: TFloatField;
Panel9: TPanel;
Panel3: TPanel;
Panel10: TPanel;
CheckBoxdic: TCheckBox;
sulfQueryperdateprodname: TStringField;
SulfQuerypermonthprodname: TStringField;
sulfQueryperdatefigid: TStringField;
SulfQuerypermonthfigid: TStringField;
BBPrinttwe: TBitBtn;
TableoneLacknum: TSmallintField;
TableoneImpunum: TSmallintField;
TableonePolenum: TSmallintField;
TableoneRipnum: TSmallintField;
TableoneElsenum: TSmallintField;
TableallLacknum: TSmallintField;
TableallImpunum: TSmallintField;
TableallPolenum: TSmallintField;
TableallRipnum: TSmallintField;
TableallElsenum: TSmallintField;
TableoneRubbCardID: TStringField;
TableoneSourceID: TStringField;
TableallFigID: TStringField;
Query1: TQuery;
Edit1: TEdit;
ename: TEdit;
TableallShl: TFloatField;
TableoneShl: TFloatField;
sulfQueryperdateAVERAGEOFshl: TFloatField;
procedure bbSerchClick(Sender: TObject);
procedure bbpriorClick(Sender: TObject);
procedure bbnextClick(Sender: TObject);
procedure bbcancalClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbpintClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure bbserchoneClick(Sender: TObject);
procedure bbchartoneClick(Sender: TObject);
procedure RBDateClick(Sender: TObject);
procedure enameEnter(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BBPrinttweClick(Sender: TObject);
procedure TabSheet1Show(Sender: TObject);
procedure DateTimePicker1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmSulfDate: TFrmSulfDate;
i,j: integer;
flt11:real;
implementation
uses UnitSulfDatePrint, UnitSulfDateChart, UnitQueryID, UnitSulfPerChart,
UnitSulfPerChartMonth, UnitSulfPerPrintTwo, UnitSulfPerPrintTwoM, UnitDM;
{$R *.DFM}
//=================以下是查询按钮事件==============================
procedure TFrmSulfDate.bbSerchClick(Sender: TObject);
var int0,int1,int2,int3,int4,int5,int6,int7:integer;
flt1,flt2,flt3,flt4,flt5,flt6,flt7,flt8,flt9,flt10:real;
clmodhu:real;
str1,str2,str3:string;
begin
flt8:=0;
flt1:=0;
//===========初始化table1,清空记录==========
i:=1;
// with tableall do begin
// first;
//while not eof do
//delete;
// next;
// end;//with
with query1 do
begin
close;
sql.Clear;
sql.Add('delete from SulfCardDate ');
execsql;
end;
//===========以下第一次Query2的分组SQL查询过滤============
with queryall do
begin
close;
SQL.Clear ;
sql.Add (' select prodnameId,figid,prodname,sum(qcnum)as SumQcNum,sum(DrawWeight)as sumDW,avg(MaterWeight)as SumMW,');
sql.Add ('sum(lacknum)as SumLackNum,sum(impunum)as SumImpuNum,sum(polenum)as SumPoleNum,');
sql.Add ('sum(ripnum)as SumRipNum,sum(elsenum)as SumElseNum from SulfCard');//avg(Weight)as avgPW,avg(SellPrice)as avgPP,');
//sql.Add (' from SulfCard');
sql.Add (' where tdate between :fromdate and :todate ');//and SulfCard.prodnameid=ProdDictionary.prodid ');
//sql.Add ('and SulfCard.生产批号 = 炼胶工艺卡.生产批号');
sql.Add ('group by prodnameId,figid,prodname');
parambyname('fromdate').asdate:=DateTimePicker1.date;
parambyname('todate').asdate:=DateTimePicker2.date;
open;
if queryall.FieldByName('prodnameId').asstring='' then begin
showmessage('无记录!');
exit;
end;
///==========以上第一次SQL查询结束====================
end;
//=========以下把Query2中查询过滤结果向抄写到table1中====================
tableall.open;
queryall.First;
while not queryall.eof do
begin
tableall.append;
tableall.FieldByName('figid').asstring:=queryall.fieldbyname('figid').asstring;
tableall.FieldByName('prodname').asstring:=queryall.fieldbyname('prodname').asstring;
tableall.FieldByName('qcnum').asinteger:=queryall.fieldbyname('sumqcnum').asinteger;
int0:=tableall.FieldByName('qcnum').asinteger; //总合格品数
int1:=queryall.fieldbyname('sumlacknum').asinteger;
int2:=queryall.fieldbyname('sumimpunum').asinteger;
int3:=queryall.fieldbyname('sumripnum').asinteger;
int4:=queryall.fieldbyname('sumpolenum').asinteger;
int5:=queryall.fieldbyname('sumelsenum').asinteger;
flt2:=queryall.fieldbyname('sumDW').asfloat;//总领料
flt7:=queryall.fieldbyname('SumMW').asfloat;//平均料重
with Query1 do
begin
close;
SQL.Clear ;
sql.Add (' select * from ProdDictionary');
sql.Add (' where ProdID =:index');
parambyname('index').asstring:=queryall.fieldbyname('prodnameId').asstring;
open;
int6:=fieldbyname('gujia').asinteger; //骨架数量
flt3:=Query1.fieldbyname('Weight').asfloat; //单净重
flt4:=query1.fieldbyname('sellprice').asfloat; //出厂价
flt5:=query1.fieldbyname('makeprice').asfloat; //加工费
str1:=query1.fieldbyname('rubbname').asstring;
str2:=query1.fieldbyname('gjxh').asstring;
flt11:=strtofloat(formatfloat('0.00',((flt2-flt3*int0)/(int0*flt3))*100));
end;
tableall.FieldByName('shl').asfloat:=flt11;
tableall.FieldByName('lacknum').asinteger:=int1;
tableall.FieldByName('impunum').asinteger:=int2;
tableall.FieldByName('ripnum').asinteger:=int3;
tableall.FieldByName('polenum').asinteger:=int4;
tableall.FieldByName('elsenum').asinteger:=int5;
with Query1 do
begin
close;
SQL.Clear ;
sql.Add (' select * from 炼胶工艺卡');
sql.Add (' where 制成品名称=:index');
parambyname('index').asstring:=str1;
open;
flt6:=fieldbyname('单价').asfloat; //胶料价
end;
with Query1 do
begin
close;
SQL.Clear ;
sql.Add (' select * from 原材料台帐');
sql.Add (' where 材料名称=:index');
parambyname('index').asstring:=str2;
open;
flt9:=fieldbyname('单价').asfloat; //骨架单价
end;
//=========以下求废品之和/胶料损耗/金额损耗/合格率/利润率============
flt9:=flt9*int6;//骨架成本
tableall.FieldByName('wasternum').asinteger:=int1+int2+int3+int4+int5; //总废品
tableall.FieldByName('WasterPer').asfloat:=strtofloat(formatfloat('0.0',flt2-flt3*int0));//flt2-flt3*int0;//胶料损耗
// 修改小数点
clmodhu:=strtofloat(formatfloat('0.00',(flt2-flt3*int0)*flt6/1000+flt9*(int1+int2+int3+int4+int5)));
tableall.FieldByName('Wastermoney').asfloat:=clmodhu;//金额损耗
if int0+int1+int2+int3+int4+int5=0 then
tableall.FieldByName('qcper').asfloat:=0
else
begin
flt1:=int0/(int0+int1+int2+int3+int4+int5);
flt1:=strtofloat(formatfloat('0.00',flt1*100));
tableall.FieldByName('qcper').asfloat:=flt1;//合格率
end;
if flt7*flt6+flt5=0 then //加工费加胶成本
tableall.FieldByName('ProfitPer').asfloat:=0
else
begin
int1:=int1+int2+int3+int4+int5;
//flt9:=flt9;//骨架价
flt8:=(flt4-(flt7+flt7*int1/int0)*flt6/1000-flt5-flt9-flt9*int1/int0)/(flt7*(1+int1/int0)*flt6/1000+flt5+flt9+flt9*(int1)/int0);
// showmessage(FLOATTOSTR(flt4)+' '+FLOATTOSTR(flt7*flt6/1000)+' '+FLOATTOSTR(flt5));
flt8:=flt8*100;
tableall.FieldByName('ProfitPer').asfloat:=strtofloat(formatfloat('0.00',flt8));//利润率
end;
tableall.post;
queryall.next;
end;//while
//========以上向用户界面Table1中抄写记录完===================
//==================结束========================================
end;
procedure TFrmSulfDate.bbpriorClick(Sender: TObject);
begin
dbgrid1.SetFocus;
tableall.Prior ;
end;
procedure TFrmSulfDate.bbnextClick(Sender: TObject);
begin
dbgrid1.SetFocus;
tableall.Next;
end;
procedure TFrmSulfDate.bbcancalClick(Sender: TObject);
begin
tableone.close;
close;
end;
procedure TFrmSulfDate.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
//========初始化,清空记录===========
with query1 do
begin
close;
sql.Clear;
sql.Add('delete from SulfCardDate ');
execsql;
end;
with query1 do
begin
close;
sql.Clear;
sql.Add('delete from SulfCardPer ');
execsql;
end;
tableall.close;
tableone.close;
ename.text:='';
//=================================
end;
procedure TFrmSulfDate.bbpintClick(Sender: TObject);
begin
if i=1 then
begin
FrmSulfDatePrint.QRLabel1.Caption :='从'+datetostr(DateTimePicker1.date)+'到 '+datetostr(DateTimePicker2.date)+' 全部产品质量统计表';
FrmSulfDatePrint.qrlabeldate.Caption:=datetostr(date);
FrmSulfDatePrint.QuickRep1.Preview ;
exit
end;
showmessage('请先按“查询”按键!');
end;
procedure TFrmSulfDate.BitBtn1Click(Sender: TObject);
begin
if i=1 then
begin
frmSulfDateChart.show;
frmSulfDateChart.DBChart1.Title.Text.Text:='从'+datetostr(DateTimePicker1.date)+'到 '+datetostr(DateTimePicker2.date)+' 全部产品质量统计图表';
exit;
end;
showmessage('请先按“查询”按键!');
end;
procedure TFrmSulfDate.FormShow(Sender: TObject);
begin
j:=0;
i:=0;
tableall.open;
tableone.open;
DateTimePicker1.date:=date-30;
DateTimePicker2.date:=date;
DateTimePicker3.date:=date-30;
DateTimePicker4.date:=date;
PageControl1.ActivePageIndex:=0;
end;
procedure TFrmSulfDate.bbserchoneClick(Sender: TObject);
var int0,int1,int2,int3,int4,int5,int6,int7:integer;
flt1,flt2,flt3,flt4,flt5,flt6,flt7,flt8,flt9,flt10:real;
str1,str2,str3,str4,str5:string;
clmodhu:real;
begin
{
with query1 do
begin
close;
//unprepare;
SQL.Clear ;
sql.Add (' select * from sulfcard');
sql.Add (' where prodnameid=:index and tdate between :fromdate and :todate ');
parambyname('fromdate').asdate:=DateTimePicker3.date;
parambyname('todate').asdate:=DateTimePicker4.date;
parambyname('index').asstring:=edit1.text;
prepare;
open;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -