vw_capacity_query.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 622 行 · 第 1/2 页

CPP
622
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "VW_Capacity_Query.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_Query *frmVW_CapaCity_Query;      ///
//---------------------------------------------------------------------------
__fastcall TfrmVW_CapaCity_Query::TfrmVW_CapaCity_Query(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
        : TQueryBaseForm(Owner,chWnd,ClassCode,WhereStr)
{
}
//---------------------------------------------------------------------------
__fastcall TfrmVW_CapaCity_Query::TfrmVW_CapaCity_Query(TComponent* Owner,AnsiString wherestr)
        : TQueryBaseForm(Owner)
{
// RsQueryQty=new  TComResultSet(Handle,g_ClientHandle);
 Initiate();
 tbControl->Enabled=false;
 TBorderIcons tempBI = BorderIcons;
 tempBI >> biMinimize;
 BorderIcons = tempBI;
 FilterStr=wherestr;
 //FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::Initiate()
{
 int BeginColNum;
 FilterStr="";
 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 LCurDate=g_sdCurDate;
 AnsiString LCurDateZ;
 int m,n=0;
 int typeNum;
 typeNum= DayNum -1 ;
 for(int i=0;i<zx_ColNum;i++)
 {
  LCurDateZ = FormatDateTime("mm.dd",StrToDate(LCurDate)+(n));
  sgMrp->Cells[BeginColNum+i][0]="负荷"+LCurDateZ+""; //"+IntToStr(i+1)+"
  n=n+zx_ColPer+typeNum ;
 }
   BeginColNum+=zx_ColNum;
  m=n;
  n=0;
 for(int i=0;i<jh_ColNum;i++)
 {
 LCurDateZ = FormatDateTime("mm.dd",StrToDate(LCurDate)+(m+n));
 sgMrp->Cells[BeginColNum+i][0]="负荷"+LCurDateZ+"";//"+IntToStr(i+1)+"
 n=n+jh_ColPer+typeNum;
 }
 BeginColNum+=jh_ColNum;
 m=m+n;
 n=0;
 for(int i=0;i<xq_ColNum;i++)
 {
  LCurDateZ = FormatDateTime("mm.dd",StrToDate(LCurDate)+(m+n));
  sgMrp->Cells[BeginColNum+i][0]="负荷"+LCurDateZ+"";//"+IntToStr(i+1)+"
  n=n+jh_ColPer+typeNum;
 }

}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::tbQueryClick(TObject *Sender)
{
  if(!ShowQueryWindow())
    return;
  try{
    StartWaitForm("正在查询,请稍候...");
    if (cb_bool->Checked)
       FillGridWithData_Type();
    else
      FillGridWithData();
  }
  __finally
  {
    EndWaitForm();
  }
}
//---------------------------------------------------------------------------
bool __fastcall TfrmVW_CapaCity_Query::ShowQueryWindow()
{
  return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::ClearControl(bool BringToNext)
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::GetDataFromComObject()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::WaitUserInput()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::RefreshGridData(int mAction)
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::DisplayBill()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::GetBill(AnsiString BillID)
{
 return;
}
//---------------------------------------------------------------------------
//获取查询语句
AnsiString __fastcall TfrmVW_CapaCity_Query::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+"'";
 if(FilterStr!="")
  Wherestr+=" and "+FilterStr;
  Wherestr+="  group by CptAnWc,cptAnWcName,CptAnDate,CptAnWcQty order by CptAnWc,cptAnWcName,CptAnDate " ;
 sSQL=Selectstr+Fromstr+Wherestr+Orderstr;
 return(sSQL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::FillGridWithData()
{
  TComResultSet *RsQuery;
  AnsiString ItemStr,sSql;
  AnsiString Tempstr,Tempstr1,Tempstr2;
  AnsiString sRDate;
  double iQty;
  //获取查询语句
  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");
      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);
      }
    else                  //相同工作中心,不同的需求日期
     {
       sRDate=RsQuery->FieldByName("CptAnDate");
       iQty=StrToFloat(RsQuery->FieldByName("CptAnQty"));
       WriteMrpQty(sgMrp->Row,sRDate,iQty);
     }
      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_Query::WriteMrpQty(int iRow,AnsiString sDate,double iQty)
{
 AnsiString sCurDate=g_sdCurDate;  // 当前日期
 AnsiString zxDate,jhDate,xqDate;
 int BeginColNum;
 double tmpQty;
 div_t PerNum; //整除后的返回类型,包括商(quot)和余数(rem)
 if(sDate < sCurDate)
  return; //小于当前日期不执行
 BeginColNum=3; //区间起始列序号
 sDate= FormatDateTime("yyyy-mm-dd",StrToDate(sDate));
 zxDate=FormatDateTime("yyyy-mm-dd",StrToDate(sCurDate)+zx_ColNum*zx_ColPer*DayNum); //执行区间的结束日期
 jhDate=FormatDateTime("yyyy-mm-dd",StrToDate(zxDate)+jh_ColNum*jh_ColPer*DayNum); //计划区间的结束日期
 xqDate=FormatDateTime("yyyy-mm-dd",StrToDate(jhDate)+xq_ColNum*xq_ColPer*DayNum); //需求区间的结束日期
 if(sDate < zxDate) //在执行区间内
 {
  PerNum=div((StrToDate(sDate)-StrToDate(sCurDate)),zx_ColPer*DayNum);
  if(sgMrp->Cells[BeginColNum+PerNum.quot][iRow] == "")
   tmpQty=0;
  else
   tmpQty=StrToFloat(sgMrp->Cells[BeginColNum+PerNum.quot][iRow]);
   tmpQty+=iQty;
  sgMrp->Cells[BeginColNum+PerNum.quot][iRow]=FloatToStr(tmpQty);
  return;
 }
 if(sDate < jhDate) //在计划区间内
 {
  PerNum=div((StrToDate(sDate)-StrToDate(zxDate)),jh_ColPer*DayNum);
  if(sgMrp->Cells[BeginColNum+zx_ColNum+PerNum.quot][iRow] == "")
   tmpQty=0;
  else
   tmpQty=StrToFloat(sgMrp->Cells[BeginColNum+zx_ColNum+PerNum.quot][iRow]);
   tmpQty+=iQty;
  sgMrp->Cells[BeginColNum+zx_ColNum+PerNum.quot][iRow]=FloatToStr(tmpQty);
  return;
 }
 if(sDate < xqDate) //在需求区间内
 {
  PerNum=div((StrToDate(sDate)-StrToDate(jhDate)),xq_ColPer*DayNum);
  if(sgMrp->Cells[BeginColNum+zx_ColNum+jh_ColNum+PerNum.quot][iRow] == "")
   tmpQty=0;
  else
   tmpQty=StrToFloat(sgMrp->Cells[BeginColNum+zx_ColNum+jh_ColNum+PerNum.quot][iRow]);
   tmpQty+=iQty;
  sgMrp->Cells[BeginColNum+zx_ColNum+jh_ColNum+PerNum.quot][iRow]=FloatToStr(tmpQty);
  return;
 }
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::muFirstClick(TObject *Sender)
{
 if(sgMrp->RowCount > 1)
  sgMrp->Row=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::muPreviousClick(TObject *Sender)
{
 if(sgMrp->RowCount > 1 && sgMrp->Row > 1)
  sgMrp->Row=sgMrp->Row-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::muNextClick(TObject *Sender)
{
 if(sgMrp->RowCount > 1 && sgMrp->Row < sgMrp->RowCount-1)
  sgMrp->Row=sgMrp->Row+1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::muLastClick(TObject *Sender)
{
 if(sgMrp->RowCount > 1)
  sgMrp->Row=sgMrp->RowCount-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::tbRefreshClick(TObject *Sender)
{
 if(sSQL=="")
  return;
 FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmVW_CapaCity_Query::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
  {

⌨️ 快捷键说明

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