⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitsulfmoju.~pas

📁 此代码为企业原料管理代码
💻 ~PAS
字号:
unit UnitSulfmoju;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, DBGrids, Db, DBTables, ExtCtrls, ComCtrls, Buttons;

type
  Tsulfmoju = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Table1: TTable;
    Query1: TQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    DBGrid2: TDBGrid;
    Edit1: TEdit;
    DataSource2: TDataSource;
    Button3: TButton;
    Button4: TButton;
    Query2: TQuery;
    Query1hgs: TFloatField;
    Query1zje: TFloatField;
    Query1fps: TFloatField;
    Query1ms: TFloatField;
    Query1fb: TFloatField;
    Query1hgl: TFloatField;
    Query1jsl: TFloatField;
    Query1jfb: TFloatField;
    Query1je: TFloatField;
    Query3: TQuery;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    Panel2: TPanel;
    Panel3: TPanel;
    Bevel1: TBevel;
    DateTimePicker3: TDateTimePicker;
    DateTimePicker4: TDateTimePicker;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Bevel2: TBevel;
    Table2: TTable;
    Label1: TLabel;
    Label2: TLabel;
    Table2Riqi: TDateField;
    Table2Ms: TIntegerField;
    Table2Hgl: TFloatField;
    Table2Fb: TFloatField;
    Table2Jsl: TFloatField;
    Table2Hgs: TIntegerField;
    Table2Fps: TIntegerField;
    Table2Jfb: TFloatField;
    Table2Je: TFloatField;
    Table2Zje: TFloatField;
    Table2Name: TStringField;
    BitBtn1: TBitBtn;
    bbpint: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Query1mjbh: TStringField;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure TabSheet1Show(Sender: TObject);
    procedure Edit1Enter(Sender: TObject);
    procedure DateTimePicker3Change(Sender: TObject);
    procedure DateTimePicker1Change(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure bbpintClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  sulfmoju: Tsulfmoju;
  j,i:integer;
implementation

uses Unitsulfmojuprt, Unitsulfmojuperprt, Unitsulfmojuallchart,
  Unitsulfmojuperchart;

{$R *.DFM}

procedure Tsulfmoju.Button1Click(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
  Button1.Cursor:=crhourglass;
  flt8:=0;
  flt1:=0;
//===========初始化table1,清空记录==========
  i:=1;
// with tableall do begin
 // first;
  //while not eof do
  //delete;
 // next;
// end;//with
  with query2 do
      begin
        close;
        sql.Clear;
        sql.Add('delete from Sulfmoju ');
        execsql;
      end;

//===========以下第一次Query2的分组SQL查询过滤============
  with query3 do
    begin
      close;
      SQL.Clear ;
      sql.Add (' select tdate,sourceid,prodnameId,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,sum(moshu)as summoshu,');
      sql.Add ('sum(ripnum)as SumRipNum,sum(elsenum)as SumElseNum from SulfCard');//avg(Weight)as avgPW,avg(SellPrice)as avgPP,');
      sql.Add (' where  tdate >=:fromdate and tdate <=:todate ');
      sql.Add ('group by tdate,prodnameId,sourceid');
      parambyname('fromdate').asdate:=DateTimePicker1.date;
      parambyname('todate').asdate:=DateTimePicker2.date;
      prepare;
      open;
      if query3.FieldByName('prodnameId').asstring='' then
       begin
        showmessage('无记录!');
        Button1.Cursor:=crDefault;
        exit;
       end;
  
 ///==========以上第一次SQL查询结束====================

 end;

// showmessage('ppppppppppppppppppppppppppppppppppppppp');
//=========以下把Query2中查询过滤结果向抄写到table1中====================
table1.open;
query3.First;
while  not query3.eof do
 begin
  table1.append;
  //table1.FieldByName('figid').asstring:=query1.fieldbyname('figid').asstring;
  //table1.FieldByName('prodname').asstring:=query1.fieldbyname('prodname').asstring;
  table1.FieldByName('mjbh').asstring:=query3.fieldbyname('sourceid').asstring;
  table1.FieldByName('hgs').asinteger:=query3.fieldbyname('sumqcnum').asinteger;
  int0:=query3.FieldByName('sumqcnum').asinteger; //总合格品数
  int1:=query3.fieldbyname('sumlacknum').asinteger;
  int2:=query3.fieldbyname('sumimpunum').asinteger;
  int3:=query3.fieldbyname('sumripnum').asinteger;
  int4:=query3.fieldbyname('sumpolenum').asinteger;
  int5:=query3.fieldbyname('sumelsenum').asinteger;
  flt2:=query3.fieldbyname('sumDW').asfloat;//总领料
  int7:=query3.fieldbyname('Summoshu').asinteger;//模数
  table1.FieldByName('ms').asinteger:=int7;
  table1.FieldByName('fps').asinteger:=int1+int2+int3+int4+int5;
    with Query2 do
    begin
      close;
      SQL.Clear ;
      sql.Add (' select * from ProdDictionary');
      sql.Add (' where ProdID =:index');
      parambyname('index').asstring:=query3.fieldbyname('prodnameId').asstring;
       open;
      // if recordcount=0 then
      // continue;
     flt3:=Query2.fieldbyname('Weight').asfloat; //单净重
     str1:=query2.fieldbyname('rubbname').asstring;
     int6:=int0+int1+int2+int3+int4+int5;
     if int7<>0 then
     flt9:=strtofloat(formatfloat('0.00',(flt2-flt3*int6)/int7))
     else
     flt9:=0;
      end;
     table1.FieldByName('jfb').asfloat:=flt9;
     table1.FieldByName('fb').asfloat:=flt2-flt3*int6;
      flt10:=flt3*int6/int7;//每模成品胶重
      flt10:=strtofloat(formatfloat('0.00',100*flt9/flt10));
     table1.FieldByName('jsl').asfloat:=flt10;
      with Query2 do
    begin
      close;
      SQL.Clear ;
      sql.Add (' select * from 炼胶工艺卡');
      sql.Add (' where 制成品名称=:index');
      parambyname('index').asstring:=str1;
      open;
      flt6:=fieldbyname('单价').asfloat; //胶料价
     end;
     if int7<>0 then
     begin
     clmodhu:=strtofloat(formatfloat('0.00',(flt2-flt3*int0)*flt6/int7/1000));
     table1.FieldByName('je').asfloat:=clmodhu;  //金额损耗
     end
     else
      table1.FieldByName('je').asfloat:=0;
     table1.FieldByName('zje').asfloat:=strtofloat(formatfloat('0.00',(flt2-flt3*int0)*flt6/1000));

   //=========以下求废品之和/胶料损耗/金额损耗/合格率/利润率============
  if int6=0 then
     table1.FieldByName('hgl').asfloat:=0
  else
   begin
    flt1:=int0/int6;
    flt1:=strtofloat(formatfloat('0.00',flt1*100));
   table1.FieldByName('hgl').asfloat:=flt1;//合格率
   end;

  table1.post;
  query3.next;
  end;//while
  with table1 do
  begin
  open;
  first;
  while  not eof do
  begin
   edit;
    with Query2 do
    begin
   close;
   sql.clear;
   sql.Add (' select sum(hgs)as hgs,sum(fps)as fps,sum(ms)as ms, sum(fb)as fb from Sulfmoju where mjbh=:na');
   parambyname('na').asstring:=table1.fieldbyname('mjbh').asstring;
   open;
   flt1:=fieldbyname('hgs').asinteger/(fieldbyname('hgs').asinteger+fieldbyname('fps').asinteger)*100;
   flt1:=strtofloat(formatfloat('0.00',flt1));
   flt4:=fieldbyname('fb').asfloat/fieldbyname('ms').asinteger;
   flt4:=strtofloat(formatfloat('0.00',flt4));
    end;//with
   fieldbyname('hgl').asfloat:=flt1;
   fieldbyname('jfb').asfloat:=flt4;
   post;
   next;
  end;
  end;

 //===再分组======
 with query1 do begin
   close;
   sql.clear;
   sql.Add (' select mjbh,sum(hgs)as hgs,sum(fps)as fps,sum(ms)as ms,sum(zje)as zje,');
   sql.Add ('sum(fb)as fb,avg(hgl)as hgl,avg(jsl)as jsl,avg(je)as je ,avg(jsl)as jsl ,avg(jfb)as jfb');
   sql.Add (' from Sulfmoju');
   sql.Add ('group by mjbh');
   sql.Add ('order  by jfb desc ');
   open;
 end;//with
 Button1.Cursor:=crDefault;

 end;//======结束===============

procedure Tsulfmoju.FormShow(Sender: TObject);
begin
 j:=0;
 i:=0;
 DateTimePicker1.date:=date-30;
 DateTimePicker2.date:=date;
 DateTimePicker3.date:=date-30;
 DateTimePicker4.date:=date;
end;

procedure Tsulfmoju.Button2Click(Sender: TObject);
begin
 close;
end;

procedure Tsulfmoju.Button3Click(Sender: TObject);
  var int0,int1,int2,int3,int4,int5,int6,int7:integer;
    flt1,flt2,flt3,flt4,flt5,flt6:real;
    clmodhu:real;
    ru,str1:string;
begin
  flt4:=0;
  if (i<>1) or (edit1.text='') then
  begin
  showmessage('请输入模具编号!');
  exit;
  end;
   j:=1;
//=============初始化,清空记录===================
 with query3 do
      begin
        close;
        sql.Clear;
        sql.Add('delete from Sulfmojuper');
        execsql;
      end;

//============SQL分组查询开始===========================

  with query2 do
    begin
      close;
      SQL.Clear ;
      sql.Add (' select tdate,name,prodnameid,qcnum as SumQcNum,DrawWeight as sumDW,');
      sql.Add ('lacknum as SumLackNum,impunum as SumImpuNum,polenum as SumPoleNum,moshu as summoshu,');
      sql.Add ('ripnum as SumRipNum,elsenum as SumElseNum from SulfCard');
      sql.Add (' where sourceid=:index and  tdate between :fromdate and :todate ');//and SulfCard.prodnameid=ProdDictionary.prodid');
      parambyname('fromdate').asdate:=DateTimePicker3.date;
      parambyname('todate').asdate:=DateTimePicker4.date;
      parambyname('index').asstring:=edit1.text;
      open;
      if query2.FieldByName('name').asstring='' then  begin
        showmessage('无记录!');
        exit;
      end;
    end;
//===========以下是向Table1中抄写记录================
//Table1TMonth.Visible:=false;
//Table1TDate.Visible:=true;
table2.open;
query2.First;
while  not query2.eof do
 begin
  table2.append;
  table2.FieldByName('riqi').asdatetime:=query2.fieldbyname('tdate').asdatetime;
  table2.FieldByName('name').asstring:=query2.fieldbyname('name').asstring;
  table2.FieldByName('ms').asinteger:=query2.fieldbyname('summoshu').asinteger;
  //table2.FieldByName('prodname').asstring:=query2.fieldbyname('prodname').asstring;
  table2.FieldByName('hgs').asinteger:=query2.fieldbyname('sumqcnum').asinteger;
  int1:=query2.fieldbyname('sumlacknum').asinteger;
  int2:=query2.fieldbyname('sumimpunum').asinteger;
  int4:=query2.fieldbyname('sumripnum').asinteger;
  int3:=query2.fieldbyname('sumpolenum').asinteger;
  int5:=query2.fieldbyname('sumelsenum').asinteger;
  //==============计算废品数和合格率/胶料损耗/金额损耗=====================
  int0:=query2.fieldbyname('sumqcnum').asinteger;
  int7:=query2.fieldbyname('summoshu').asinteger;
  table2.FieldByName('fps').asinteger:=int1+int2+int3+int4+int5;//废品数
  if int0+int1+int2+int3+int4+int5=0 then
   table2.FieldByName('hgl').asfloat:=0
  else
  begin
   flt4:=int0/(int0+int1+int2+int3+int4+int5);
   flt4:=strtofloat(formatfloat('0.00',flt4*100));
   table2.FieldByName('hgl').asfloat:=flt4; //合格率
  end;
  flt1:=query2.fieldbyname('sumDW').asfloat; //领料重
   with query3 do
    begin
      close;
      SQL.Clear ;
      sql.Add (' select * from ProdDictionary');
      sql.Add (' where prodid=:index ');
      parambyname('index').asstring:=query2.fieldbyname('prodnameid').asstring;
      open;
     if recordcount=0 then
       continue;
     flt2:=fieldbyname('Weight').asfloat; //单净重
     ru:=fieldbyname('rubbname').asstring;
     int6:=int0+int1+int2+int3+int4+int5;
     if int7<>0 then
     flt6:=strtofloat(formatfloat('0.00',(flt1-flt2*int6)/int7))
     else
     flt6:=0;
     // end;
     table2.FieldByName('jfb').asfloat:=flt6;
     table2.FieldByName('fb').asfloat:=flt1-flt2*int6;//废边总量
     table2.FieldByName('jsl').asfloat:=strtofloat(formatfloat('0.00',(flt6*int7/int6/flt2)*100));
      //int6:=fieldbyname('gujia').asinteger;
      close;
      SQL.Clear ;
      sql.Add (' select 单价,制成品名称 from 炼胶工艺卡');
      sql.Add (' where 制成品名称=:index ');
      parambyname('index').asstring:=ru;
      open;
      flt5:=fieldbyname('单价').asfloat; //胶料单价

      table2.FieldByName('je').asfloat:=strtofloat(formatfloat('0.00',flt6*flt5/1000));
//修改小数点
      clmodhu:=strtofloat(formatfloat('0.00',(flt1-flt2*int6)*flt5/1000));
      table2.FieldByName('zje').asfloat:=clmodhu;//金额损耗

      table2.post;
      end;
  query2.next;
 end;//while


// end;//======显示日结束===============
end;

procedure Tsulfmoju.TabSheet1Show(Sender: TObject);
begin
 query1.Close;
 table2.Close;
 i:=0;
 j:=0;
end;

procedure Tsulfmoju.Edit1Enter(Sender: TObject);
begin
 j:=0;
 i:=1;
 table2.Close;
 edit1.Text:='';
end;

procedure Tsulfmoju.DateTimePicker3Change(Sender: TObject);
begin
j:=0;
table2.Close;
end;

procedure Tsulfmoju.DateTimePicker1Change(Sender: TObject);
begin
 i:=0;
 query1.Close;
end;

procedure Tsulfmoju.Button4Click(Sender: TObject);
begin
 close;
end;

procedure Tsulfmoju.Edit1Exit(Sender: TObject);
begin
  Label2.Caption:=edit1.Text;
end;

procedure Tsulfmoju.bbpintClick(Sender: TObject);
begin
   if i=1 then
  begin
 Frmsulfmoju.QRLabel1.caption:='从'+datetostr(DateTimePicker1.date)+'到 '+datetostr(DateTimePicker2.date)+' 全部模具质量统计表';
 Frmsulfmoju.QRLabeldate.Caption:=datetostr(date);
 Frmsulfmoju.QuickRep1.Preview;
 exit
 end;
showmessage('请先按“查询”按键!');
end;

procedure Tsulfmoju.BitBtn1Click(Sender: TObject);
begin
   if i=1 then
 begin
 Frmsulfmojuallchart.DBChart1.Title.Text.Text:='从'+datetostr(DateTimePicker1.date)+'到 '+datetostr(DateTimePicker2.date)+' 全部模具质量统计图表';
 Frmsulfmojuallchart.show;
 exit
end;
showmessage('请先按“查询”按键!');
end;

procedure Tsulfmoju.BitBtn3Click(Sender: TObject);
begin
  if j=1 then
  begin
 Frmsulfmojuperprt.QRLabel1.caption:='从'+datetostr(DateTimePicker3.date)+'到 '+datetostr(DateTimePicker4.date)+' 模具编号为:'+edit1.text+' 的质量统计表';
 Frmsulfmojuperprt.QRLabeldate.Caption:=datetostr(date);
 Frmsulfmojuperprt.QuickRep1.Preview;
 exit
 end;
showmessage('请先按“查询”按键!');
end;

procedure Tsulfmoju.BitBtn2Click(Sender: TObject);
begin
 if i=1 then
 begin
 Frmsulfmojuperchart.DBChart1.Title.Text.Text:='从'+datetostr(DateTimePicker3.date)+'到 '+datetostr(DateTimePicker4.date)+' 模具编号为:'+edit1.text+' 的质量统计图表';
 Frmsulfmojuperchart.show;
 exit
end;
showmessage('请先按“查询”按键!');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -