📄 unit_modechan.pas
字号:
unit Unit_modechan;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, Grids, DBGrids, ComCtrls, Buttons, ExtCtrls;
type
TForm_modechan = class(TForm)
Tableall: TTable;
Query1: TQuery;
Queryall: TQuery;
DataSource1: TDataSource;
TableallFigID: TStringField;
TableallProdname: TStringField;
TableallQcNum: TIntegerField;
TableallWasternum: TIntegerField;
TableallQcper: TFloatField;
TableallWasterPer: TFloatField;
TableallWastermoney: TFloatField;
TableallLacknum: TSmallintField;
TableallImpunum: TSmallintField;
TableallPolenum: TSmallintField;
TableallElsenum: TSmallintField;
Panel5: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DataSource2: TDataSource;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Panel1: TPanel;
Panel2: TPanel;
BitBtn2: TBitBtn;
Button1: TButton;
bbpint: TBitBtn;
Bevel1: TBevel;
bbprior: TBitBtn;
bbnext: TBitBtn;
BitBtn1: TBitBtn;
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;
Panel9: TPanel;
Panel3: TPanel;
ename: TEdit;
Panel10: TPanel;
CheckBoxdic: TCheckBox;
BBPrinttwe: TBitBtn;
Tableone: TTable;
DataSource3: TDataSource;
DataSourcequeryone: TDataSource;
Queryone: TQuery;
sulfQueryperdate: TQuery;
SulfQuerypermonth: TQuery;
DataSourcetableone: TDataSource;
DataSourcedate: TDataSource;
TableoneTDate: TDateField;
TableoneFigID: TStringField;
TableoneProdname: TStringField;
TableoneQcnum: TIntegerField;
TableoneWasternum: TIntegerField;
TableoneQcper: TFloatField;
TableoneWasterPer: TFloatField;
TableoneWastermoney: TFloatField;
TableoneProfitPer: TFloatField;
TableoneRubbMixID: TStringField;
TableoneBDEDesigner: TStringField;
TableoneSourceID: TStringField;
TableoneTMonth: TStringField;
TableoneLacknum: TSmallintField;
TableoneImpunum: TSmallintField;
TableonePolenum: TSmallintField;
TableoneRipnum: TSmallintField;
TableoneElsenum: TSmallintField;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure bbpintClick(Sender: TObject);
procedure bbpriorClick(Sender: TObject);
procedure bbnextClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure bbserchoneClick(Sender: TObject);
procedure enameEnter(Sender: TObject);
procedure RBDateClick(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BBPrinttweClick(Sender: TObject);
procedure TabSheet1Exit(Sender: TObject);
procedure TabSheet2Exit(Sender: TObject);
procedure bbchartoneClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_modechan: TForm_modechan;
i,j:integer;
implementation
uses Unit_modechanprt, Unit_chanchart, UnitDM, UnitQueryID,
Unit_modechandate, Unit_modepermonth, Unit_modechandatechart,
Unit_modechanmonchart;
{$R *.DFM}
procedure TForm_modechan.Button1Click(Sender: TObject);
var int0,int1,int2,int3,int6,int7:integer;
flt1,flt2,flt3,flt4,flt5,flt6,flt7,flt8,flt9,flt10:real;
clmodhu:real;
str1,str2,str3:string;
begin
i:=1;
//flt8:=0.0;
//flt1:=0.0;
with query1 do
begin
close;
sql.Clear;
sql.Add('delete from modeDate ');
execsql;
end;
//===========以下第一次Query2的分组SQL查询过滤============
with queryall do
begin
close;
SQL.Clear ;
sql.Add (' select prodId,figid,prodname,sum(hao)as SumQcNum,sum(lin)as sumDW,');
sql.Add ('sum(xioufei)as SumLackNum,sum(huai)as SumImpuNum from zhenxiou');
// sql.Add (' from zhenxiou');//avg(Weight)as avgPW,avg(SellPrice)as avgPP,');
//sql.Add (' from SulfCard');
sql.Add (' where riqi between :fromdate and :todate ');//and SulfCard.prodnameid=ProdDictionary.prodid ');
//sql.Add ('and SulfCard.生产批号 = 炼胶工艺卡.生产批号');
sql.Add ('group by prodId,figid,prodname');
parambyname('fromdate').asdate:=DateTimePicker1.date;
parambyname('todate').asdate:=DateTimePicker2.date;
open;
if queryall.FieldByName('prodId').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;
tableall.FieldByName('elsenum').asinteger:=queryall.fieldbyname('sumDW').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;
int3:=queryall.fieldbyname('sumDW').asinteger;// 领进总个数
// 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('prodId').asstring;
open;
int6:=fieldbyname('gujia').asinteger; //骨架数量
int7:=fieldbyname('tanhuang').asinteger;
flt3:=Query1.fieldbyname('Weight').asfloat; //单净重
//flt4:=query1.fieldbyname('sellprice').asfloat; //出厂价
flt5:=query1.fieldbyname('xioujia').asfloat; //加工费
str1:=query1.fieldbyname('rubbname').asstring;
str2:=query1.fieldbyname('gjxh').asstring;
str3:=query1.fieldbyname('thxh').asstring;
end;
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;
with Query1 do
begin
close;
SQL.Clear ;
sql.Add (' select * from 原材料台帐');
sql.Add (' where 材料名称=:index');
parambyname('index').asstring:=str3;
open;
flt10:=fieldbyname('单价').asfloat; //弹簧单价
end;
//=========以下求废品之和/胶料损耗/金额损耗/合格率/利润率============
flt9:=flt9*int6;//骨架成本
tableall.FieldByName('wasternum').asinteger:=int1+int2; //总废品
tableall.FieldByName('WasterPer').asfloat:=strtofloat(formatfloat('0.0',flt3*(int1+int2)));//flt2-flt3*int0;//胶料损耗
// 修改小数点
clmodhu:=strtofloat(formatfloat('0.00',(flt3*(int1+int2))*flt6/1000+flt9*(int1+int2)));
tableall.FieldByName('Wastermoney').asfloat:=clmodhu;//金额损耗
if int3=0 then
tableall.FieldByName('qcper').asfloat:=100
else
begin
flt1:=int0/int3;
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
// flt9:=flt9+flt10*int7;
//flt8:=(flt4-(flt7+flt7*(int1+int2+int3+int4+int5)/int0)*flt6/1000-flt5-flt9-flt9*(int1+int2+int3+int4+int5)/int0)/(flt7*(1+(int1+int2+int3+int4+int5)/int0)*flt6/1000+flt5+flt9+flt9*(int1+int2+int3+int4+int5)/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
end;
procedure TForm_modechan.FormShow(Sender: TObject);
begin
i:=0;
j:=0;
DateTimePicker1.Date:=date-30;
DateTimePicker2.Date:=date;
DateTimePicker3.Date:=date-30;
DateTimePicker4.Date:=date;
end;
procedure TForm_modechan.bbpintClick(Sender: TObject);
begin
if i=1 then
begin
Form_modechanprt.QRLabel1.Caption :='从'+datetostr(DateTimePicker1.date)+'到 '+datetostr(DateTimePicker2.date)+' 产品整修质量统计表';
Form_modechanprt.qrlabeldate.Caption:=datetostr(date);
Form_modechanprt.QuickRep1.Preview ;
exit
end;
showmessage('请先按“查询”按键!');
end;
procedure TForm_modechan.bbpriorClick(Sender: TObject);
begin
dbgrid1.SetFocus;
tableall.Prior ;
end;
procedure TForm_modechan.bbnextClick(Sender: TObject);
begin
dbgrid1.SetFocus;
tableall.Next;
end;
procedure TForm_modechan.BitBtn1Click(Sender: TObject);
begin
if i=1 then
begin
Form_modechanChart.DBChart1.Title.Text.Text:='从'+datetostr(DateTimePicker1.date)+'到 '+datetostr(DateTimePicker2.date)+' 产品整修质量统计图表';
Form_modechanChart.show;
exit;
end;
showmessage('请先按“查询”按键!');
end;
procedure TForm_modechan.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
flt8:=0;
flt1:=0;
if (i=1) and (ename.text<>'') then
begin
//===========初始化tableone,清空记录==========
j:=1;
with query1 do
begin
close;
sql.Clear;
sql.Add('delete from modePer ');
execsql;
end;
//==过滤字典,求出厂价,净重,胶料价,加工费======
dm.tabProdDictionary.Open;
dm.tabProdDictionary.Filtered:=true;
dm.tabProdDictionary.Filter:=format('prodid=''%s''',[Ename.text]);
int6:=dm.tabProdDictionary.fieldbyname('gujia').asinteger;
str2:=dm.tabProdDictionary.fieldbyname('figid').asstring; //图号
str3:=dm.tabProdDictionary.fieldbyname('prodname').asstring; //产品名称
flt3:=dm.tabProdDictionary.fieldbyname('Weight').asfloat; //单净重
//flt4:=dm.tabProdDictionary.fieldbyname('SellPrice').asfloat; //出厂价
flt5:=dm.tabProdDictionary.fieldbyname('xioujia').asfloat; //加工费
str1:=dm.tabProdDictionary.fieldbyname('rubbname').asstring;
str4:=dm.tabProdDictionary.fieldbyname('gjxh').asstring;//骨架型号
str5:=dm.tabProdDictionary.fieldbyname('thxh').asstring;//骨架型号
with Query1 do
begin
close;
//unprepare;
SQL.Clear ;
sql.Add (' select 单价 from 炼胶工艺卡');
sql.Add (' where 制成品名称=:index');
parambyname('index').asstring:=str1;
open;
flt6:=fieldbyname('单价').asfloat; //胶料价
end;
with Query1 do
begin
close;
//unprepare;
SQL.Clear ;
sql.Add (' select 单价 from 原材料台帐');
sql.Add (' where 材料名称=:index');
parambyname('index').asstring:=str4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -