vw_capacity_ratio.cpp

来自「科思ERP部分源码及控件」· C++ 代码 · 共 561 行 · 第 1/2 页

CPP
561
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "VW_Capacity_Ratio.h"
//#include "VW_MrpSoh.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma link "KSAdvReport"
#pragma link "DateEdit"
#pragma link "SDEdit"
#pragma resource "*.dfm"
#define ParaCode "111"   //计划管理参数代码
#include "CptRation_PictPlan.h"
#include "CptRation_Pict.h"
TfrmVW_Capacity_Ratio *frmVW_Capacity_Ratio;      ///
//---------------------------------------------------------------------------
__fastcall TfrmVW_Capacity_Ratio::TfrmVW_Capacity_Ratio(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
        : TQueryBaseForm(Owner,chWnd,ClassCode,WhereStr)
{
 Initiate();
 tbControl->Enabled=false;
 TBorderIcons tempBI = BorderIcons;
 tempBI >> biMinimize;
 BorderIcons = tempBI;

}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::Initiate()
{
 int BeginColNum;

 sSQL="";
 GetParaValue();
 sgMrp->ColCount=2+zx_ColNum+jh_ColNum+xq_ColNum;
 sgMrp->RowCount=1;
 sgMrp->Cells[0][0]="工作中心编码";
 sgMrp->Cells[1][0]="工作中心名称";
 sgMrp->Cells[2][0]="加工能力";

 BeginColNum=3; //起始周期列数
 AnsiString LCurDateZ;
 AnsiString LCurDate=de_DateF->Text;
 AnsiString LCurDateE=de_DateE->Text;
 int l_DateNum;
   l_DateNum= StrToDate(LCurDateE)-StrToDate(LCurDate) ;
   sgMrp->ColCount=4+l_DateNum;
   BeginColNum=3;
   for (int i=0;i<=l_DateNum;i++)
  {
   LCurDateZ = FormatDateTime("mm.dd",StrToDate(LCurDate)+(i));
   sgMrp->Cells[BeginColNum+i][0]="负荷率"+LCurDateZ+"";
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::tbQueryClick(TObject *Sender)
{
  if(!ShowQueryWindow())
    return;
  try{
    StartWaitForm("正在查询,请稍候...");
    if (cb_bool->Checked)
       FillGridWithData_Type();
    else
      FillGridWithData();
  }
  __finally
  {
    EndWaitForm();
  }
}
//---------------------------------------------------------------------------
bool __fastcall TfrmVW_Capacity_Ratio::ShowQueryWindow()
{
  return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::ClearControl(bool BringToNext)
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::GetDataFromComObject()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::WaitUserInput()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::RefreshGridData(int mAction)
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::DisplayBill()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::GetBill(AnsiString BillID)
{
 return;
}
//---------------------------------------------------------------------------
//获取查询语句
AnsiString __fastcall TfrmVW_Capacity_Ratio::GetQueryStr()
{
 AnsiString Selectstr,Fromstr,Wherestr,Orderstr;
 AnsiString l_DateE ,l_DateF;
 l_DateF = de_DateF->Text;
 l_DateE = de_DateE->Text;
 if (l_DateF.IsEmpty())
   throw Exception("请输入起始日期");
 if (l_DateE.IsEmpty())
   throw Exception("请输入结束日期");
 Selectstr =" select CptAnWc,cptAnWcName,CptAnWcQty,CptAnDate,sum(CptAnQty)as CptAnQty ";
 Fromstr=" from ksVW_KsCptAnalyse ";
 Wherestr=" where CptAnDate BETWEEN  '"+FormatDateTime("yyyy-mm-dd",l_DateF)+"' and '"+FormatDateTime("yyyy-mm-dd",l_DateE)+"'";
 if (!se_wc->Text.IsEmpty())
     Wherestr+=" and CptAnWc =  '"+se_wc->Text+"'";
  Wherestr+="  group by CptAnWc,cptAnWcName,CptAnDate,CptAnWcQty order by CptAnWc,cptAnWcName,CptAnDate " ;
 sSQL=Selectstr+Fromstr+Wherestr+Orderstr;
 return(sSQL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::FillGridWithData()
{
  TComResultSet *RsQuery;
  AnsiString ItemStr,sSql;
  AnsiString Tempstr,Tempstr1,Tempstr2;
  AnsiString sRDate;
  double iQty,NumQty;
  //获取查询语句
  sSql=GetQueryStr();//+" order by MrpLlc,MrpGoods,MrpdType,MrpdRDate";;
  if(sSql=="")
    return;
  try
  {
//   StartWaitForm("正在执行查询...");
    sgMrp->RowCount=1;
    RsQuery=new  TComResultSet(Handle,g_ClientHandle);
    RsQuery->Open(sSql,"");
    RsQuery->MoveFirst();
    Tempstr1="";
    Tempstr2="";
    sgMrp->ScrollBars=ssNone; //取消滚动条,防止屏幕滚动
          Initiate();
    while( RsQuery->Eof == 0)
    {
      Tempstr=     RsQuery->FieldByName("CptAnWc");
      NumQty=StrToFloat(RsQuery->FieldByName("CptAnWcQty")*DayNum);
      if(Tempstr!=Tempstr1) //不同工作中心
      {
        Tempstr1=Tempstr;

        Tempstr2=   RsQuery->FieldByName("CptAnWc");
        ItemStr=    RsQuery->FieldByName("CptAnWc")+
            "\t"+RsQuery->FieldByName("cptAnWcName")+
            "\t"+AnsiString(RsQuery->FieldByName("CptAnWcQty")*DayNum)+
            "\t"+AnsiString("0");
        sgMrp->AddItem(ItemStr);
        sgMrp->Row=sgMrp->RowCount-1;
        sRDate=RsQuery->FieldByName("CptAnDate");
        iQty=StrToFloat(RsQuery->FieldByName("CptAnQty"));
        WriteMrpQty(sgMrp->Row,sRDate,iQty,NumQty);
      }
    else                  //相同工作中心,不同的需求日期
     {
       sRDate=RsQuery->FieldByName("CptAnDate");
       iQty=StrToFloat(RsQuery->FieldByName("CptAnQty"));
       WriteMrpQty(sgMrp->Row,sRDate,iQty,NumQty);
     }
      RsQuery->MoveNext();
    }
    RsQuery->Close();
    sgMrp->ScrollBars=ssBoth;//设置滚动条
  }
  __finally
  {
    delete RsQuery;
  }
  if(sgMrp->RowCount>1)
  {
    sgMrp->Row=1;
    sgMrp->Col=1;
  }
}
//---------------------------------------------------------------------------
//在GRID的第iRow行中添加日期为sDate的需求数量iQty
void __fastcall TfrmVW_Capacity_Ratio::WriteMrpQty(int iRow,AnsiString sDate,double iQty,double NumQty)
{
 int BeginColNum;
 double tmpQty;
 int l_DateNum;
 AnsiString LCurDate=de_DateF->Text;
 AnsiString l_Qty;
  l_DateNum= StrToDate(sDate)-StrToDate(LCurDate) ;
  BeginColNum=3+l_DateNum;
 // sDate = FormatDateTime("yyyy-mm-dd",sDate);

  if(sgMrp->Cells[BeginColNum][iRow] == "")
   tmpQty=0;
  else
   tmpQty=StrToFloat(sgMrp->Cells[BeginColNum][iRow]);
   tmpQty+=iQty;
  sgMrp->Cells[BeginColNum][iRow]=FloatToStr(DataCarry(tmpQty/NumQty*100,2,2))+"%";
  return;


}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::muFirstClick(TObject *Sender)
{
 if(sgMrp->RowCount > 1)
  sgMrp->Row=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::muPreviousClick(TObject *Sender)
{
 if(sgMrp->RowCount > 1 && sgMrp->Row > 1)
  sgMrp->Row=sgMrp->Row-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::muNextClick(TObject *Sender)
{
 if(sgMrp->RowCount > 1 && sgMrp->Row < sgMrp->RowCount-1)
  sgMrp->Row=sgMrp->Row+1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::muLastClick(TObject *Sender)
{
 if(sgMrp->RowCount > 1)
  sgMrp->Row=sgMrp->RowCount-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::tbRefreshClick(TObject *Sender)
{
 if(sSQL=="")
  return;
 FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_Capacity_Ratio::GetParaValue()
{
 //从参数表sdparameter中获取所需参数
  TComResultSet *pResultSet=new  TComResultSet(Handle,g_ClientHandle);
  AnsiString strSQL,strItem,strValue;
  strSQL=" select parameteritem,parametervalue from sdparameter ";
  strSQL=strSQL+" where parametertype = 2 and parametercode like '"+ParaCode+"%'";
  pResultSet->Close();
  try
  {
    pResultSet->Open(strSQL,"");
 //清空私有变量
    zx_Num=0;
    zx_ColNum=0;
    zx_ColPer=0;
    jh_Num=0;
    jh_ColNum=0;
    jh_ColPer=0;
    xq_Num=0;
    xq_ColNum=0;
    xq_ColPer=0;
    PeriodType=0;
    DayNum=0;
    pResultSet->MoveFirst();
    while(!pResultSet->Eof)
    {
      strItem=pResultSet->FieldByName("parameteritem");
      strValue=pResultSet->FieldByName("parametervalue");
      switch(StrToInt(strItem))
      {
        case 2:
          zx_Num=StrToInt(strValue);

⌨️ 快捷键说明

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