inv_wipwastercount.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 169 行

PAS
169
字号
unit Inv_WipWasterCount;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Outer, Menus, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
  StdCtrls, ExtCtrls, ComCtrls, ToolWin, DBCtrls, Base_Qry, jpeg, DBGrids;

Type
  TFrm_Inv_WipWasterCount = Class(TFrm_Base_Qry)
    AdoQry_tmp1: TAdoQuery;
    procedure Act_FilterExecute(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    acondition,bcondition,condition_tmp:string;
    aVendorCode:string;
    procedure initform(AdOConnection:TAdOConnection;ReadOnly:boolean);Override;
    procedure InitReport;Override;
    { Public declarations }
  end;

var
  Frm_Inv_WipWasterCount: TFrm_Inv_WipWasterCount;

implementation

uses  Inv_WipWasterCount_C,Sys_Global;
{$R *.DFM}

procedure TFrm_Inv_WipWasterCount.InitReport;
begin
  inherited;
end;
procedure TFrm_Inv_WipWasterCount.initform(AdOConnection:TAdOConnection;ReadOnly:boolean);
begin
  inherited;
  acondition:='';
  bcondition:='';
  Frm_Sys_Condition:=TFrm_Inv_WipWasterCount_C.Create(Self);
  TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).InitForm(AdoQry_Main.Connection,UserCode,LoginDate);
  //定额、损耗小数位不受限制
//  AmountFields:='LMBlncQty,OutQty,BlncQty,';
//  FreeFields:='Bomqty,BomScrAp,';
  Act_Filter.Execute;
//  AdoQry_Main.FindField('blncqty').displayformat:='#.##';
end;

procedure TFrm_Inv_WipWasterCount.Act_FilterExecute(Sender: TObject);
begin
  if Frm_Sys_Condition.ShowModal=mrOk then
  begin
    Lbl_Condition.Caption:=Frm_Sys_Condition.ConditionHint;
    acondition:=Frm_Sys_Condition.Condition ;
    bcondition:=TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).WipWaster_Condition;
    if TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).cmbx_WipWaster.ItemIndex=0 then
    begin
      dbgrideh.Columns[2].Title.Caption:='工废量';
      dbgrideh.Columns[3].Title.Caption:='工废率%';
      Pnl_Title.Caption:='车间工废统计';
    end;
    if TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).cmbx_WipWaster.ItemIndex=1 then
    begin
      dbgrideh.Columns[2].Title.Caption:='料废量';
      dbgrideh.Columns[3].Title.Caption:='料废率%';
      Pnl_Title.Caption:='车间料废统计';
    end;
    if TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).cmbx_WipWaster.ItemIndex=2 then
    begin
      dbgrideh.Columns[2].Title.Caption:='工料废量';
      dbgrideh.Columns[3].Title.Caption:='工料废率%';
      Pnl_Title.Caption:='车间工料废统计';
    end;
    lbl_Order.Caption :=' 物料标识';
    if TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).condition_tmp='' then
       condition_tmp:=''
    else
       condition_tmp:=' where '+TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).condition_tmp ;

    AdoQry_tmp.Close;
    AdoQry_tmp.sql.text:=' drop table #tmp ';
    try
       AdoQry_tmp.ExecSQL ;
    except
    end;
    if TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).cmbx_WipWaster.ItemIndex=0 then
    begin
      AdoQry_tmp.Close;
      AdoQry_tmp.sql.text:=' select tmp1.ItemCode,Isnull(tmp1.InvBillqty2,0) As InvBillQty2, '+
                            '       ISNull(tmp2.InvBillqty1,0) As InvBillQty1 into #tmp'+
                            ' from (select ItemCode,sum(wipqty) as InvBillqty2  from WipWaster i '+
                            '       where '+bcondition+' group by ItemCode) tmp1 '+
                            '      left join (select ItemCode,sum(InvBillqty) as InvBillqty1 from InvOutBill i,InvOutBillline il '
                                    +condition_tmp+' and i.InvBillid=il.InvBillid group by ItemCode) tmp2 '+
                            '               on tmp1.ItemCode=tmp2.ItemCode '+
                            ' where tmp1.InvBillqty2<>0 ';
       AdoQry_tmp.ExecSQL ;
    end
    else If  TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).cmbx_WipWaster.ItemIndex=1 then
    begin
      AdoQry_tmp.Close;
      AdoQry_tmp.sql.text:=' select tmp1.ItemCode,IsNull(tmp1.InvBillqty2,0) As InvBillQty2, '+
                            '       IsNull(tmp2.InvBillqty1,0) As InvBillQty1  into #tmp'+
                            ' from (select ItemCode,sum(InvBillqty) as InvBillqty2  from InvOutBill i,InvOutBillline il '+
                            '       where '+acondition+' and i.InvBillid=il.InvBillid group by ItemCode) tmp1 '+
                            '      left join (select ItemCode,sum(InvBillqty) as InvBillqty1 from InvOutBill i,InvOutBillline il '
                                    +condition_tmp+' and i.InvBillid=il.InvBillid group by ItemCode) tmp2 '+
                            '               on tmp1.ItemCode=tmp2.ItemCode '+
                            ' where tmp1.InvBillqty2<>0 ';
       AdoQry_tmp.ExecSQL ;
     end
     Else If  TFrm_Inv_WipWasterCount_C(Frm_Sys_Condition).cmbx_WipWaster.ItemIndex=2 then
     begin
       AdoQry_tmp.Close;
       AdoQry_tmp.sql.text:=' select tmp1.ItemCode,IsNull(tmp1.InvBillqty2,0) As InvBillqty2, '+
                              '       IsNull(tmp2.InvBillqty1,0) As InvBillqty1  into #tmp'+
                              ' from (select ItemCode,sum(wipqty) as InvBillqty2  from WipWaster i '+
                              '       where I.WasterType=2 '+bcondition+' group by ItemCode) tmp1 '+
                              '      left join (select ItemCode,sum(InvBillqty) as InvBillqty1 from InvOutBill i,InvOutBillline il '
                                      +condition_tmp+' and i.InvBillid=il.InvBillid group by ItemCode) tmp2 '+
                              '               on tmp1.ItemCode=tmp2.ItemCode '+
                              ' where tmp1.InvBillqty2<>0 ';
        AdoQry_tmp.ExecSQL ;
        AdoQry_tmp.Close;
        AdoQry_tmp.sql.text:=' Insert #tmp (ItemCode,InvBillqty2,InvBillqty1)'+
                            ' Select tmp1.ItemCode,IsNull(tmp1.InvBillqty2,0) As InvBillqty2, '+
                            '       IsNull(tmp2.InvBillqty1,0) As InvBillqty1 '+
                            ' from (select ItemCode,sum(InvBillqty) as InvBillqty2  from InvOutBill i,InvOutBillline il '+
                            '       where I.WipWaster=2 And '+acondition+' and i.InvBillid=il.InvBillid group by ItemCode) tmp1 '+
                            '      left join (select ItemCode,sum(InvBillqty) as InvBillqty1 from InvOutBill i,InvOutBillline il '
                                    +condition_tmp+' and i.InvBillid=il.InvBillid group by ItemCode) tmp2 '+
                            '               on tmp1.ItemCode=tmp2.ItemCode '+
                            ' where tmp1.InvBillqty2<>0 ';
        AdoQry_tmp.ExecSQL ;
     end;
     AdoQry_Main.Close;
     AdoQry_Main.SQL.Text:=' select tmp.ItemCode+'' ''+Item.ItemName ItemDESC,abs(Sum(tmp.InvBillqty2)) as InvBillqty2 ,' +
                           '        Sum(tmp.InvBillqty1) As InvBillqty1,'+
                           '       case Sum(tmp.InvBillqty1) when 0 then ''0%'' '+
                           '            else Convert(varchAr,abs(Sum(tmp.InvBillqty2))/Sum(tmp.InvBillqty1)*100)+''%'' end InvBillper '+
                           '       from #tmp tmp '+
                           '      left join Item on tmp.ItemCode=Item.ItemCode '+
                           '      Group By  tmp.ItemCode,Item.ItemName,tmp.ItemCode+'' ''+Item.ItemName '+
                           '      Order by tmp.ItemCode ';

     AdoQry_Main.open;
  end;
end;

procedure TFrm_Inv_WipWasterCount.FormDestroy(Sender: TObject);
begin
  inherited;
  with AdoQry_tmp do
  begin
     Close;
     sql.clear;
     sql.Add(' drop table #tmp ');
     try
       execsql;
     except
     end;
  end;
  Frm_Inv_WipWasterCount:=nil;
end;

end.

⌨️ 快捷键说明

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