pm_qry_analyzerpo4_c.pas

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

PAS
183
字号
unit Pm_Qry_AnalyzerPo4_C;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Condition, Db, AdODB, StdCtrls, ExtEdit, Mask;

Type
  TFrm_Pm_Qry_AnalyzerPo4_C = Class(TFrm_Base_Condition)
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    ExtEdit1: TExtEdit;
    ExtEdit2: TExtEdit;
    ExtEdit3: TExtEdit;
    ExtEdit4: TExtEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    ExtEdit5: TExtEdit;
    Label7: TLabel;
    Label8: TLabel;
    ExtEdit6: TExtEdit;
    Label13: TLabel;
    cmbPoSpecial: TComboBox;
    procedure FormShow(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ExtEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_Pm_Qry_AnalyzerPo4_C: TFrm_Pm_Qry_AnalyzerPo4_C;

implementation
uses Pm_Qry_AnalyzerPo4,Sys_Global;
{$R *.DFM}

procedure TFrm_Pm_Qry_AnalyzerPo4_C.FormShow(Sender: TObject);
begin
  inherited;
  maskedit1.Text:=formatdatetime('yyyy.mm.dd',date-15);
  maskedit2.Text:=formatdatetime('yyyy.mm.dd',date);

end;

procedure TFrm_Pm_Qry_AnalyzerPo4_C.btn_okClick(Sender: TObject);
var
  StrCondition1,StrCondition2:string;
  StrSQLText1,StrSQLText2,StrSQLText3,linestatus1,linestatus2:string;
     Special:integer;
begin
 inherited;
  case cmbPoSpecial.Itemindex of
    0: Special:=255;
    1: Special:=1;
    2: Special:=0;
  end;
  If (Maskedit1.Text<>'    .  .  ') and (Maskedit2.Text<>'    .  .  ')Then
    StrCondition1:=' and  Po.Podate between '''+Maskedit1.Text+''''+' and '''+ Maskedit2.Text+' 23:59:59'+'''';
  if (Trim(Extedit1.Text)<>'') and (Trim(Extedit2.Text)<>'') then
    StrCondition1:=StrCondition1+ ' and Poline.ItemCode between '+Quotedstr(Extedit1.text)+' and '+Quotedstr(Extedit2.text);
  if (Trim(Extedit3.Text)<>'') and (Trim(Extedit4.Text)<>'') then
    StrCondition2:='case Totalpoqty when 0 then 0 else  (TotalFinishPOQty*100/TotalPoQty ) end between '+Extedit3.text+' and '+ Extedit4.text;

  StrSQLText1:='Select PoLine.*,(PoLine.Poqty-PoLine.PoNoFinishQty) As PoFinishQty'+
               ' Into #TmpPoLine'+
               ' From PoLine'+
               ' left outer Join Po On PoLine.PoNo=Po.PoNo where Poline.PoQty >0 and Poline.PolineStatus between '+Extedit5.Text+' and '+Extedit6.Text+StrCondition1+
               ' and ((po.PoSpecial='+inttostr(Special)+') or ('+inttostr(Special)+'=255))' ;


  StrSQLText2:='Select ItemCode,Sum(PoQty) As TotalPoQty,'+
                     ' sum(poinqty) as poinqty,'+
                     ' Sum(PoFinishQty)   As TotalFinishPOQty,'+
                     ' Sum(PoNoFinishQty) As TotalPoNoFinishPoQty,'+
                     ' Sum(PoTaxAmount) As TotalPoTaxAmount,'+
                     ' Sum(PoNoTaxAmount) As TotalPoNoTaxAmount'+
              ' Into #TmpTotalPoLine'+
              ' From #TmpPoLine'+
              ' Group By ItemCode';

  StrSQLText3:='Select #TmpTotalPoLine.*,Item.ItemName,Item.UomCode,Itemflag=#tmpTotalpoline.ItemCode+'' ''+Item.ItemName,'+
               'case #tmpTotalpoline.Totalpoqty when 0 then ''0%'' else  Convert(varchAr,round(#TmpTotalPoLine.TotalFinishPOQty*100/#TmpTotalPoLine.TotalPoQty,0) )+''%'' end As FinishRate'+
               ' From #TmpTotalPoLine'+
               ' left outer Join Item On #TmpTotalPoLine.ItemCode=Item.ItemCode'+
               ' Left Outer Join Uom On Item.UomCode=Uom.UomCode where  '+ StrCondition2;
  with Frm_Pm_Qry_AnalyzerPo4.AdoQry_Main do
  begin
    Close;
    SQL.clear;
    SQL.Add(StrSQLText1);
    //showmessage(strsqltext1);
    Prepared;
    try
    ExecSQL;
    except
    end;

    Close;
    SQL.clear;
    SQL.Add(StrSQLText2);
    //showmessage(strsqltext2);
    Prepared;
    try
    ExecSQL;
    except
    end;

    Close;
    SQL.clear;
    SQL.Add(StrSQLText3);
   //showmessage(strsqltext3);
    Prepared;
    try
    Open;
    except
    end;

  end;

  with Frm_Pm_Qry_AnalyzerPo4.AdoQry_Tmp do
  begin
    Connection:=Frm_Pm_Qry_AnalyzerPo4.AdoQry_Main.Connection;
    Close;
    SQL.clear;
    SQL.Add('drop table #TmpPoLine,#TmpTotalPoLine');
    Prepared;
    try
    ExecSQL;
    except
    end;
  end;
  if Extedit5.Text='5' then
      linestatus1:='5 准备'
   else if  Extedit5.Text='6'  then
      linestatus1:='6 下达'
      else if  Extedit5.Text='7'  then
       linestatus1:='7 关闭';
   if Extedit2.Text='5' then
      linestatus2:='5 准备'
   else if  Extedit6.Text='6'  then
      linestatus2:='6 下达'
      else if  Extedit6.Text='7'  then
       linestatus2:='7 关闭';

 ConditionHint:='下单日期从 '+maskedit1.Text+' 到 '+maskedit2.Text+' / 订单性质: '+cmbPoSpecial.Text+' / 物料代码从 '+Extedit1.Text+' 到 '+Extedit2.Text+#13+'行状态从 '+linestatus1+' 到 '+linestatus2+' / 完成率从 '+Extedit3.Text+'%'+' 到 '+Extedit4.Text+'%';
  self.ModalResult:=mrok;
end;

procedure TFrm_Pm_Qry_AnalyzerPo4_C.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Pm_Qry_AnalyzerPo4_C:=nil;
end;

procedure TFrm_Pm_Qry_AnalyzerPo4_C.FormCreate(Sender: TObject);
begin
  inherited;
     cmbPoSpecial.ItemIndex:=0;

end;

procedure TFrm_Pm_Qry_AnalyzerPo4_C.ExtEdit1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
 If key=120 Then
  CommOnHint(Sender,AdoQry_Tmp,'ItemName','物料描述','ItemCode',
             '物料代码',' Item ',' PmCode In (1,2,3) and ItemUsable=1 ');
end;

end.

⌨️ 快捷键说明

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