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

📄 unitsulfdate.~pas

📁 此代码为企业原料管理代码
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
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 + -