mpsquery_date.cpp

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

CPP
614
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MpsQuery_Date.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma resource "*.dfm"
#define ParaCode "111"   //计划管理参数代码
TfrmMpsQuery_Date *frmMpsQuery_Date;
//---------------------------------------------------------------------------
__fastcall TfrmMpsQuery_Date::TfrmMpsQuery_Date(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
        : TQueryBaseForm(Owner)
{
 Initiate();
}
//---------------------------------------------------------------------------
__fastcall TfrmMpsQuery_Date::TfrmMpsQuery_Date(TComponent* Owner,AnsiString wherestr)
        : TQueryBaseForm(Owner)
{
 Initiate();
 tbControl->Enabled=false;
 TBorderIcons tempBI = BorderIcons;
 tempBI >> biMinimize;
 BorderIcons = tempBI;
 FilterStr=wherestr;
 FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsQuery_Date::Initiate()
{
 int BeginColNum;
 FilterStr="";
 sSQL="";
 GetParaValue();
 sgMrp->ColCount=8+zx_ColNum+jh_ColNum+xq_ColNum;
 sgMrp->RowCount=1;
 QueryGrid=sgMrp;
 sgMrp->Cells[0][0]="物料编码";
 sgMrp->Cells[1][0]="物料名称";
 sgMrp->Cells[2][0]="批量";
 sgMrp->Cells[3][0]="提前期";
 sgMrp->Cells[4][0]="当前库存";
 sgMrp->Cells[5][0]="安全库存";
 sgMrp->Cells[6][0]="已分配量";
 sgMrp->Cells[7][0]="需求时间";
 //sgMrp->Cells[7][0]="需求类型";
/*


 AnsiString LCurDate=g_sdCurDate;
 AnsiString LCurDateZ;
 BeginColNum=8; //起始周期列数
 int m,n=0;
 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 ;
 }
   BeginColNum+=zx_ColNum;
  m=n;
  n=0;
 for(int i=0;i<jh_ColNum;i++)
 {
 LCurDateZ = FormatDateTime("mm.dd",StrToDate(LCurDate)+(m+n));
//  sgMrp->Columns[BeginColNum+i].ColumnFont->Color=clRed;
  sgMrp->Cells[BeginColNum+i][0]="需求区"+LCurDateZ+"";//"+IntToStr(i+1)+"
  n=n+jh_ColPer;
 }
 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;
 } //xq_ColPer   */
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsQuery_Date::tbQueryClick(TObject *Sender)
{
  if(!ShowQueryWindow())
    return;
  try{
    StartWaitForm("正在查询,请稍候...");
    FillGridWithData();
    FillterColumData();
  }
  __finally
  {
    EndWaitForm();
  }
}
//---------------------------------------------------------------------------
bool __fastcall TfrmMpsQuery_Date::ShowQueryWindow()
{
 /* TfrmQuForm *FQuery=new TfrmQuForm(this,this->Name);
  FQuery->ShowModal();
  if(FQuery->CancelQuery)
    return false;
  FilterStr=FQuery->CreateSqlString;
  delete FQuery; */
  return true;
}

//---------------------------------------------------------------------------
//获取查询语句
AnsiString __fastcall TfrmMpsQuery_Date::GetQueryStr()
{
 AnsiString Selectstr,Fromstr,Wherestr,Orderstr;
 Selectstr =" select * ";
 Fromstr=" from KSVW_Mps ";
 Wherestr=" where MpsdRDate >= '"+g_sdCurDate+"'";
 if(FilterStr!="")
 Wherestr+=" and "+FilterStr;
 Wherestr+= GetQueryStrColumn();
   Orderstr=" order by MpsGoods,MpsdFrom,MpsdRDate";
 sSQL=Selectstr+Fromstr+Wherestr+Orderstr;
 return(sSQL);
}
//-------------------------------------------------
AnsiString __fastcall TfrmMpsQuery_Date::GetQueryStrColumn()
{
AnsiString l_SQLcolumn="",l_column;
 //if(FilterStr!="")
 //{
  if(CB_Gross->Checked)
     {
      l_column="1";
    }
   if(CB_Poh->Checked)
    {
     if (l_column.IsEmpty())
        l_column="2";
     else
        l_column=l_column +",2";
    }
   if(CB_Macc->Checked)
   {
      if (l_column.IsEmpty())
        l_column="3";
      else
        l_column=l_column +",3" ;
   }
    if(CB_Clean->Checked)
   {
       if (l_column.IsEmpty())
           l_column="4";
       else
           l_column=l_column +",4";
    }
    if(CB_Soh->Checked)
   {
       if (l_column.IsEmpty())
           l_column="5";
       else
           l_column=l_column +",5" ;
    }
     if(CB_Take->Checked)
     {
       if (l_column.IsEmpty())
           l_column="6" ;
       else
           l_column=l_column +",6" ;
     }
     if (!l_column.IsEmpty())
        l_SQLcolumn =" and mpsdfrom in ("+l_column+")";

    return  l_SQLcolumn;
   }
//---------------------------------------------------------------------------
void __fastcall TfrmMpsQuery_Date::FillGridWithData()
{
  TComResultSet *RsQuery;
  AnsiString ItemStr,sSql;
  AnsiString Tempstr,Tempstr1,Tempstr2;
  AnsiString sRDate,l_date;
  double iQty;
  //获取查询语句
  sSql=GetQueryStr();
  if(sSql=="")
    return;
  try
  {
//   StartWaitForm("正在执行查询...");
    sgMrp->RowCount=1;
    RsQuery=new  TComResultSet(Handle,g_ClientHandle);
    RsQuery->Open(sSql,"");
    RsQuery->MoveFirst();
    Tempstr1="";
    Tempstr2="";
    sgMrp->ScrollBars=ssNone; //取消滚动条,防止屏幕滚动
    while( RsQuery1->Eof == 0)
    {
      l_goods = RsQuery1->FieldByName("MpsGOODS");
      l_date = RsQuery1->FieldByName("MpsDRDATE");
      if (l_goods!=l_goods1)
      {
      l_goods1 = l_goods;
      ItemStr="\t"+l_goods+
          "\t"+RsQuery1->FieldByName("GOODSNAME")+
          "\t"+AnsiString(RsQuery1->FieldByName("MpsEOQ"))+
          "\t"+AnsiString(RsQuery1->FieldByName("MpsLT"))+
          "\t"+AnsiString(RsQuery1->FieldByName("MpsCIQ"))+
          "\t"+AnsiString(RsQuery1->FieldByName("MpsSIQ"))+
          "\t"+AnsiString(RsQuery1->FieldByName("MpsDIQ"))+
          ItemStr= ItemStr+"\t"+TitleColumn(l_goods,l_date);
          QueryGrid->AddItem(ItemStr);
      }
      else
       {
        ItemStr="\t"+AnsiString(" ")+
               "\t"+AnsiString(" ")+
               "\t"+AnsiString(" ")+
               "\t"+AnsiString(" ")+
               "\t"+AnsiString(" ")+
               "\t"+AnsiString(" ")+
               "\t"+l_date;
          ItemStr= ItemStr+"\t"+TitleColumn(l_goods,l_date);
          QueryGrid->AddItem(ItemStr);
       }
      RsQuery1->MoveNext();
    }
    RsQuery1->Close();
  }
  __finally
  {
    delete RsQuery1;
  }
  sgMrp->ScrollBars=ssBoth;//设置滚动条
  }
  //------------------------------------------------------------------
  void __fastcall TfrmMpsQuery_Date::FillterColumData()
{
    int l_column=0,l_Tcolumn;
  QueryGrid->Columns->Items[1]->TitleString ="物料编码";
  QueryGrid->Columns->Items[2]->TitleString ="物料名称";
  QueryGrid->Columns->Items[3]->TitleString ="批量";
  QueryGrid->Columns->Items[4]->TitleString ="提前期";
  QueryGrid->Columns->Items[5]->TitleString ="当前库存";
  QueryGrid->Columns->Items[6]->TitleString ="安全库存";
  QueryGrid->Columns->Items[7]->TitleString ="已分配量";
  QueryGrid->Columns->Items[8]->TitleString ="需求日期";
  QueryGrid->ColCount= 15;

   l_Tcolumn = 7;
   if(CB_Gross->Checked)
   {
      l_column++;
     // QueryGrid->ColCount= 11+l_column;
      QueryGrid->Columns->Items[l_Tcolumn+1]->TitleString ="毛需求";
   }
   if(CB_Poh->Checked)
   {
     l_column++ ;
    // QueryGrid->ColCount= 11+l_column;
     QueryGrid->Columns->Items[l_Tcolumn+l_column]->TitleString ="计划入库";
     }
   if(CB_Macc->Checked)
   {
     l_column++;
    // QueryGrid->ColCount= 11+l_column;
     QueryGrid->Columns->Items[l_Tcolumn+l_column]->TitleString ="计划库存";
    }
    if(CB_Clean->Checked)
   {
     l_column++;
    // QueryGrid->ColCount= 11+l_column;
     QueryGrid->Columns->Items[l_Tcolumn+l_column]->TitleString ="净需求";
    }
    if(CB_Soh->Checked)
   {
     l_column++;
    // QueryGrid->ColCount= 10+l_column;
     QueryGrid->Columns->Items[l_Tcolumn+l_column]->TitleString ="计划订单";
    }
     if(CB_Take->Checked)
   {
     l_column++;
     //QueryGrid->ColCount= 10+l_column;
     QueryGrid->Columns->Items[l_Tcolumn+l_column]->TitleString ="计划下达";
    }
    QueryGrid->ColCount= l_Tcolumn+l_column+1;
}

//---------------------------------------------------------------------------
 AnsiString __fastcall TfrmMpsQuery_Date::TitleColumn(AnsiString f_goods,AnsiString f_date)
 {
  TComResultSet *RsQueryQty;
 //TComResultSet *RsQuerypoh;
// RsQuerypoh=new  TComResultSet(Handle,g_ClientHandle);
 RsQueryQty=new  TComResultSet(Handle,g_ClientHandle);
 AnsiString l_str="";
 AnsiString  ItemStr="",m_SQL;
 AnsiString l_sqlgross,l_sqlpoh,l_sqlmacc,l_sqlclean,l_sqlSoh,l_sqlTake;
 m_SQL="select mpsdrqty from sdmpsd where mpsdgoods ='"+ f_goods+"' and mpsdrdate = '"+f_date+"'" ;

 int l_column=0;
   if(CB_Gross->Checked)
   {
      l_column++;
     l_sqlgross=m_SQL+ " and mpsdFrom =1" ;

⌨️ 快捷键说明

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