📄 unitsulfname.~pas
字号:
unit UnitSulfName;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Mask, DBCtrls, Buttons, Db, DBTables, Grids, DBGrids,
ComCtrls;
type
TFrmSulfName = class(TForm)
Panel1: TPanel;
DataSource2: TDataSource;
Query2: TQuery;
Table1: TTable;
DataSource1: TDataSource;
Panel5: TPanel;
Table1Name: TStringField;
Table1TDate: TDateField;
Table1QcNum: TIntegerField;
Table1LackNum: TSmallintField;
Table1ImpuNum: TSmallintField;
Table1PoleNum: TSmallintField;
Table1RipNum: TSmallintField;
Table1ElseNum: TSmallintField;
Table1TMonth: TStringField;
Table1Qcper: TFloatField;
Table1WasterPer: TFloatField;
Table1Wasternum: TIntegerField;
Table1Wastermoney: TFloatField;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Panel6: TPanel;
RBdate: TRadioButton;
RBMonth: TRadioButton;
bbSerch: TBitBtn;
bbcancal: TBitBtn;
Panel3: TPanel;
Panel4: TPanel;
bbprior: TBitBtn;
bbnext: TBitBtn;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
BBprint: TBitBtn;
BBpic: TBitBtn;
Panel7: TPanel;
Panel2: TPanel;
ename: TEdit;
Panel8: TPanel;
CheckBoxname: TCheckBox;
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
Panel9: TPanel;
Panel10: TPanel;
bbSerchAllName: TBitBtn;
bballprint: TBitBtn;
bballchart: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
DBGrid2: TDBGrid;
DataSource3: TDataSource;
QueryAllName: TQuery;
TableAllName: TTable;
DataSource4: TDataSource;
Queryindexqcper: TQuery;
DataSource5: TDataSource;
Table1Prodname: TStringField;
Table1Figid: TStringField;
Queryindexqcpername: TStringField;
QueryindexqcperSumQcNum: TFloatField;
Queryindexqcpersumwasternum: TFloatField;
Queryindexqcpersumper: TFloatField;
Queryindexqcpersumwmoney: TFloatField;
Queryindexqcperavgqcper: TFloatField;
QueryindexqcperSumLackNum: TFloatField;
QueryindexqcperSumImpuNum: TFloatField;
QueryindexqcperSumPoleNum: TFloatField;
QueryindexqcperSumRipNum: TFloatField;
QueryindexqcperSumElseNum: TFloatField;
Query1: TQuery;
Query3: TQuery;
Queryindexqcpersumshl: TFloatField;
Table1Shl: TFloatField;
Table1Hgj: 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 BBprintClick(Sender: TObject);
procedure BBpicClick(Sender: TObject);
procedure RBdateClick(Sender: TObject);
procedure RBMonthClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure enameenter(Sender: TObject);
procedure bbSerchAllNameClick(Sender: TObject);
procedure bballprintClick(Sender: TObject);
procedure bballchartClick(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure TabSheet1Show(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmSulfName: TFrmSulfName;
i,j: integer;
implementation
uses UnitSulfNamePrint, UnitSulfNamePrintM, UnitSulfNameChart,
UnitSulfNameChartM, UnitQueryID, UnitSulfNameAllPrint,
UnitSulfNameAllChart, UnitDM;
{$R *.DFM}
//=====================以下是查询按钮事件==============================
procedure TFrmSulfName.bbSerchClick(Sender: TObject);
var int0,int1,int2,int3,int4,int5,int6:integer;
flt1,flt2,flt3,flt4,flt5,flt6:real;
clmodhu:real;
ru,str1:string;
begin
flt4:=0;
if (i=1) and (ename.text<>'') then
begin
j:=1;
//=============初始化,清空记录===================
with query3 do
begin
close;
sql.Clear;
sql.Add('delete from SulfCardName ');
execsql;
end;
//============SQL分组查询开始===========================
if rbdate.Checked=true then //==判断显示日=========
begin
with query2 do
begin
close;
SQL.Clear ;
sql.Add (' select tdate,name,Figid,prodname,prodnameid,qcnum as SumQcNum,DrawWeight as sumDW,');
sql.Add ('lacknum as SumLackNum,impunum as SumImpuNum,polenum as SumPoleNum,');
sql.Add ('ripnum as SumRipNum,elsenum as SumElseNum from SulfCard');
sql.Add (' where name=:index and tdate between :fromdate and :todate ');//and SulfCard.prodnameid=ProdDictionary.prodid');
parambyname('fromdate').asdate:=DateTimePicker1.date;
parambyname('todate').asdate:=DateTimePicker2.date;
parambyname('index').asstring:=eName.text;
open;
if query2.FieldByName('name').asstring='' then begin
showmessage('无记录!');
exit;
end;
end;
//===========以下是向Table1中抄写记录================
//Table1TMonth.Visible:=false;
//Table1TDate.Visible:=true;
table1.open;
query2.First;
while not query2.eof do
begin
table1.append;
table1.FieldByName('tdate').asdatetime:=query2.fieldbyname('tdate').asdatetime;
table1.FieldByName('name').asstring:=query2.fieldbyname('name').asstring;
table1.FieldByName('figid').asstring:=query2.fieldbyname('figid').asstring;
table1.FieldByName('prodname').asstring:=query2.fieldbyname('prodname').asstring;
table1.FieldByName('qcnum').asinteger:=query2.fieldbyname('sumqcnum').asinteger;
table1.FieldByName('lacknum').asinteger:=query2.fieldbyname('sumlacknum').asinteger;
table1.FieldByName('impunum').asinteger:=query2.fieldbyname('sumimpunum').asinteger;
table1.FieldByName('ripnum').asinteger:=query2.fieldbyname('sumripnum').asinteger;
table1.FieldByName('polenum').asinteger:=query2.fieldbyname('sumpolenum').asinteger;
table1.FieldByName('elsenum').asinteger:=query2.fieldbyname('sumelsenum').asinteger;
//==============计算废品数和合格率/胶料损耗/金额损耗=====================
int0:=table1.FieldByName('qcnum').asinteger;
int1:=table1.FieldByName('lacknum').asinteger;
int2:=table1.FieldByName('impunum').asinteger;
int3:=table1.FieldByName('polenum').asinteger;
int4:=table1.FieldByName('ripnum').asinteger;
int5:=table1.FieldByName('elsenum').asinteger;
table1.FieldByName('wasternum').asinteger:=int1+int2+int3+int4+int5;//废品数
if int0+int1+int2+int3+int4+int5=0 then
table1.FieldByName('qcper').asfloat:=0
else
begin
flt4:=int0/(int0+int1+int2+int3+int4+int5);
flt4:=strtofloat(formatfloat('0.00',flt4*100));
table1.FieldByName('qcper').asfloat:=flt4; //合格率
end;
flt1:=query2.fieldbyname('sumDW').asfloat; //领料重
with query1 do
begin
close;
SQL.Clear ;
sql.Add (' select * from ProdDictionary');
sql.Add (' where prodid=:index ');
parambyname('index').asstring:=query2.fieldbyname('prodnameid').asstring;
open;
ru:=fieldbyname('RubbName').asstring;
str1:=fieldbyname('gjxh').asstring;
flt2:=fieldbyname('Weight').asfloat; //净重
int6:=fieldbyname('gujia').asinteger;
flt3:=flt1-flt2*int0;
flt3:=strtofloat(formatfloat('0.0',flt3));
table1.FieldByName('Wasterper').asfloat:=flt3;//胶料损耗
close;
SQL.Clear ;
sql.Add (' select 单价,制成品名称 from 炼胶工艺卡');
sql.Add (' where 制成品名称=:index ');
parambyname('index').asstring:=ru;
open;
flt5:=fieldbyname('单价').asfloat; //胶料单价
close;
SQL.Clear ;
sql.Add (' select 单价,材料名称 from 原材料台帐');
sql.Add (' where 材料名称=:index ');
parambyname('index').asstring:=str1;
open;
flt6:=fieldbyname('单价').asfloat;//骨架单价
flt6:=flt6*int6*(int1+int2+int3+int4+int5);
//修改小数点
clmodhu:=strtofloat(formatfloat('0.00',(flt3*flt5/1000+flt6)));
table1.FieldByName('wastermoney').asfloat:=clmodhu;//金额损耗
flt4:=flt3/(flt2*int0);
flt4:=strtofloat(formatfloat('0.00',flt4*100));
table1.FieldByName('shl').asfloat:=flt4;
table1.post;
end;
query2.next;
end;//while
DBGrid1.Columns[2].Visible:=false;
DBGrid1.Columns[1].Visible:=true;
DBGrid1.Columns[3].Visible:=true;
DBGrid1.Columns[4].Visible:=true;
//table1.First;
end;//======显示日结束===============
if rbmonth.Checked=true then //==判断显示月=========
begin
with query2 do
begin
close;
SQL.Clear ;
sql.Add (' select tdate,tmonth,name,Figid,prodname,prodnameid,qcnum as SumQcNum,DrawWeight as sumDW,');
sql.Add ('lacknum as SumLackNum,impunum as SumImpuNum,polenum as SumPoleNum,');
sql.Add ('ripnum as SumRipNum,elsenum as SumElseNum from SulfCard');
sql.Add (' where name=:index and tdate between :fromdate and :todate ');//and SulfCard.prodnameid=ProdDictionary.prodid');
//sql.Add ('group by tdate,name,figid,prodname' );
//sql.Add ('order by tdate' );
parambyname('fromdate').asdate:=DateTimePicker1.date;
parambyname('todate').asdate:=DateTimePicker2.date;
parambyname('index').asstring:=eName.text;
open;
if query2.FieldByName('name').asstring='' then begin
showmessage('无记录!');
exit;
end;
end;
//===========以下是向Table1中抄写记录================
//Table1TMonth.Visible:=false;
//Table1TDate.Visible:=true;
table1.open;
query2.First;
while not query2.eof do
begin
table1.append;
//showmessage(copy(datetostr(query2.fieldbyname('tmonth').asdatetime),3,5));
table1.FieldByName('tmonth').asstring:=query2.fieldbyname('tmonth').asstring;//query2.fieldbyname('tmonth').asdatetime;
table1.FieldByName('name').asstring:=query2.fieldbyname('name').asstring;
table1.FieldByName('figid').asstring:=query2.fieldbyname('figid').asstring;
table1.FieldByName('prodname').asstring:=query2.fieldbyname('prodname').asstring;
table1.FieldByName('qcnum').asinteger:=query2.fieldbyname('sumqcnum').asinteger;
table1.FieldByName('lacknum').asinteger:=query2.fieldbyname('sumlacknum').asinteger;
table1.FieldByName('impunum').asinteger:=query2.fieldbyname('sumimpunum').asinteger;
table1.FieldByName('ripnum').asinteger:=query2.fieldbyname('sumripnum').asinteger;
table1.FieldByName('polenum').asinteger:=query2.fieldbyname('sumpolenum').asinteger;
table1.FieldByName('elsenum').asinteger:=query2.fieldbyname('sumelsenum').asinteger;
//==============计算废品数和合格率/胶料损耗/金额损耗=====================
int0:=table1.FieldByName('qcnum').asinteger;
int1:=table1.FieldByName('lacknum').asinteger;
int2:=table1.FieldByName('impunum').asinteger;
int3:=table1.FieldByName('polenum').asinteger;
int4:=table1.FieldByName('ripnum').asinteger;
int5:=table1.FieldByName('elsenum').asinteger;
table1.FieldByName('wasternum').asinteger:=int1+int2+int3+int4+int5;//废品数
if int0+int1+int2+int3+int4+int5=0 then
table1.FieldByName('qcper').asfloat:=0
else
begin
flt4:=int0/(int0+int1+int2+int3+int4+int5);
flt4:=strtofloat(formatfloat('0.00',flt4*100));
table1.FieldByName('qcper').asfloat:=flt4; //合格率
end;
flt1:=query2.fieldbyname('sumDW').asfloat; //领料重
with query1 do
begin
close;
SQL.Clear ;
sql.Add (' select * from ProdDictionary');
sql.Add (' where prodid=:index ');
parambyname('index').asstring:=query2.fieldbyname('prodnameid').asstring;
open;
ru:=fieldbyname('RubbName').asstring;
str1:=fieldbyname('gjxh').asstring;
flt2:=fieldbyname('Weight').asfloat; //净重
int6:=fieldbyname('gujia').asinteger;
flt3:=flt1-flt2*int0;
flt3:=strtofloat(formatfloat('0.0',flt3));
table1.FieldByName('Wasterper').asfloat:=flt3;//胶料损耗
table1.FieldByName('hgj').asfloat:=flt2*int0;
close;
SQL.Clear ;
sql.Add (' select 单价,制成品名称 from 炼胶工艺卡');
sql.Add (' where 制成品名称=:index ');
parambyname('index').asstring:=ru;
open;
flt5:=fieldbyname('单价').asfloat; //胶料单价
close;
SQL.Clear ;
sql.Add (' select 单价,材料名称 from 原材料台帐');
sql.Add (' where 材料名称=:index ');
parambyname('index').asstring:=str1;
open;
flt6:=fieldbyname('单价').asfloat; //骨架单价
flt6:=flt6*int6*(int1+int2+int3+int4+int5);
//修改小数点
clmodhu:=strtofloat(formatfloat('0.00',(flt3*flt5/1000+flt6)));
table1.FieldByName('wastermoney').asfloat:=clmodhu;//金额损耗
table1.post;
end;
query2.next;
//showmessage('无记!');
//Table1.open;
end;//while
with query1 do
begin
close;
SQL.Clear ;
sql.Add (' select tmonth, sum(qcnum) as QcNum,sum(wasternum) as wasternum,sum(hgj) as hgj,');
sql.Add ('sum(Wasterper) as Wasterper,sum(lacknum) as lackNum,sum(impunum) as ImpuNum,avg(qcper) as qcper,');
sql.Add ('sum(Wastermoney) as Wastermoney,sum(polenum) as PoleNum,sum(ripnum) as RipNum,sum(elsenum) as ElseNum from SulfCardName');
sql.Add ('group by tmonth' );
open;
// showmessage(inttostr(recordcount));
end;
//===========以下是向Table1中抄写记录================
with query3 do
begin
close;
sql.Clear;
sql.Add('delete from SulfCardName ');
execsql;
end;
//Table1TMonth.Visible:=true;
//Table1TDate.Visible:=false;
query1.First;
while not query1.eof do
begin
table1.append;
table1.FieldByName('tmonth').asstring:=query1.fieldbyname('tmonth').asstring;
table1.FieldByName('name').asstring:=eName.text;
//table1.FieldByName('figid').asstring:=query1.fieldbyname('figid').asstring;
table1.FieldByName('qcnum').asinteger:=query1.fieldbyname('qcnum').asinteger;
table1.FieldByName('lacknum').asinteger:=query1.fieldbyname('lacknum').asinteger;
table1.FieldByName('impunum').asinteger:=query1.fieldbyname('impunum').asinteger;
table1.FieldByName('ripnum').asinteger:=query1.fieldbyname('ripnum').asinteger;
table1.FieldByName('polenum').asinteger:=query1.fieldbyname('polenum').asinteger;
table1.FieldByName('elsenum').asinteger:=query1.fieldbyname('elsenum').asinteger;
//==============计算废品数和合格率/损耗=====================
table1.FieldByName('wasternum').asinteger:=query1.fieldbyname('wasternum').asinteger;//废品数
flt4:=query1.fieldbyname('qcper').asfloat;
flt4:=strtofloat(formatfloat('0.00',flt4));
table1.FieldByName('qcper').asfloat:=flt4; //合格率
flt3:=query1.fieldbyname('Wasterper').asfloat;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -