mpsdatequery.cpp
来自「科思ERP部分源码及控件」· C++ 代码 · 共 377 行
CPP
377 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MpsDateQuery.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "DateEdit"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma resource "*.dfm"
TfrmMpsDateQuery *frmMpsDateQuery;
//---------------------------------------------------------------------------
__fastcall TfrmMpsDateQuery::TfrmMpsDateQuery(TComponent* Owner,HWND chWnd,AnsiString MidCode,AnsiString WhereStr)
: TForm(Owner)
{
g_ClientHandle=chWnd;
l_ItemsCtrls=new TKSSet;
l_ItemsCtrls->AddField("CtrFlag");
l_ItemsCtrls->AddField("Ctrpara");
l_ItemsCtrls->AddField("CtrWherField");
l_ItemsCtrls->AddField("CtrDispField");
l_ItemsCtrls->AddField("CtrGridCaption");
l_ItemsCtrls->KeyField="CtrFlag";
l_ResCtrls=new TKSSet;
l_ResCtrls->AddField("CtrFlag");
l_ResCtrls->AddField("CtrNo");
l_ResCtrls->KeyField="CtrFlag";
/*l_ResDate=new TKSSet;
l_ResDate->AddField("CtrStat");
l_ResDate->AddField("CtrEnd");
l_ResDate->KeyField="CtrField"; */
TKSSet *l_GlobeVars=new TKSSet;
l_GlobeVars->LoadFromString(gGlobeVarsStr);
InitSysGlobeVar(l_GlobeVars);
delete l_GlobeVars;
InitEditControl();
sbBar->Panels->Items[0]->Text="操作员:"+g_sdUserCode;
sbBar->Panels->Items[1]->Text=g_sdCompanyName;
sbBar->Panels->Items[2]->Text=g_sdCurDate;
AddGroupItem(ed_GoodsBool,ed_goods,"MpsGoods","MpsGoods,GOODSNAME","物料编码\t物料名称");
l_DefField="select * from KSVW_Mps";
l_DefDisp ="\t物料编码\t物料名称\t批量\t提前期\t当前库存,安全库存\t已分配量\t需求日期" ;
s_DateField =" MpsdRDate ";
FillterColumData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::FormClose(TObject *Sender,
TCloseAction &Action)
{
CloseClientForm(g_ClientHandle,(int)this);
Action=caFree;
delete l_ItemsCtrls;
delete l_ResCtrls;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::InitEditControl()
{
}
//-----------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::AddGroupItem(TControl *flag,TControl *para,AnsiString WherField,AnsiString DispField,AnsiString GridCaption)
{
if(UpperCase((AnsiString)(flag)->ClassName())!="TSDEDIT")
return ;
dynamic_cast<TSDEdit *>(flag)->OnClick=OnFlagClick;
dynamic_cast<TSDEdit *>(flag)->OnKeyPress=OnFlagPress;
l_ItemsCtrls->AddNew();
l_ItemsCtrls->FieldValues["CtrFlag"]=(int)flag;
l_ItemsCtrls->FieldValues["Ctrpara"]=(int)para;
l_ItemsCtrls->FieldValues["CtrWherField"]=WherField;
l_ItemsCtrls->FieldValues["CtrDispField"]=DispField;
l_ItemsCtrls->FieldValues["CtrGridCaption"]=GridCaption;
l_ItemsCtrls->Update();
}
//-----------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::OnFlagClick(TObject *Sender)
{
int l_GroupNo=0;
l_ResCtrls->Last();
if(l_ResCtrls->RecordCount>0)
l_GroupNo=l_ResCtrls->FieldValues["CtrNo"].ToInt();
if(l_ResCtrls->LocateByKey((int)Sender))
{
if(l_ResCtrls->FieldValues["CtrNo"].ToInt()!=l_GroupNo)
l_GroupNo++;
l_ResCtrls->Delete();
l_ResCtrls->AddNew();
l_ResCtrls->FieldValues["CtrFlag"]=(int)Sender;
l_ResCtrls->FieldValues["CtrNo"]=l_GroupNo;
l_ResCtrls->Update();
}
else
{
l_GroupNo++;
l_ResCtrls->AddNew();
l_ResCtrls->FieldValues["CtrFlag"]=(int)Sender;
l_ResCtrls->FieldValues["CtrNo"]=l_GroupNo;
l_ResCtrls->Update();
}
dynamic_cast<TSDEdit *>(Sender)->Text=l_GroupNo;
}
//-----------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::OnFlagPress(TObject *Sender, char &Key)
{
if(Key>'9' || Key<'0')
Key=0;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmMpsDateQuery::MakeSQL()
{
AnsiString sqlstr,CaptionStr,temstr,FieldStr,whereStr,groupStr;
sqlstr="",CaptionStr="",FieldStr="",whereStr="",groupStr="";
int index,col=0,row;
TControl *ctl;
AnsiString TControlName;
l_ResCtrls->First();
while(!l_ResCtrls->Eof)
{
l_ItemsCtrls->LocateByKey(l_ResCtrls->FieldValues["CtrFlag"].ToInt());
ctl=(TControl*)l_ItemsCtrls->FieldValues["Ctrpara"].ToInt();
TControlName = UpperCase((AnsiString)(ctl)->ClassName());
if (TControlName=="TSDEDIT")
{
if(!dynamic_cast<TSDEdit *>(ctl)->Text.IsEmpty())
whereStr+=l_ItemsCtrls->FieldValues["CtrWherField"]+" like '"+dynamic_cast<TSDEdit *>(ctl)->Text+"' and " ;
}
if (TControlName=="TSDCOMBOBOX")
{
if(!dynamic_cast<TSDEdit *>(ctl)->Text.IsEmpty())
whereStr+=l_ItemsCtrls->FieldValues["CtrWherField"]+" like '"+dynamic_cast<TSDComboBox *>(ctl)->ItemData[0]+"' and " ;
}
FieldStr+=l_ItemsCtrls->FieldValues["CtrDispField"]+",";
CaptionStr+=l_ItemsCtrls->FieldValues["CtrGridCaption"];
l_ResCtrls->Next();
}
AnsiString TDateStaValuer,TDateEndValuer;
TDateStaValuer =AnsiString(dtDateBg->CDate);
TDateEndValuer =AnsiString(dtDateEn->CDate);
if (!s_DateField.IsEmpty())
{
if (TDateStaValuer.IsEmpty())
{
if (!TDateEndValuer .IsEmpty())
{ whereStr+=s_DateField+" > '"+TDateEndValuer+"' and " ;}
}
if (TDateEndValuer.IsEmpty())
{
if (!TDateStaValuer.IsEmpty())
{whereStr+=s_DateField+" < '"+TDateStaValuer+"' and " ; }
}
if (!TDateEndValuer.IsEmpty() && !TDateStaValuer.IsEmpty())
{whereStr+=s_DateField+" between '"+TDateStaValuer+"' and '"+TDateEndValuer+"' and " ; }
}
CaptionStr+=l_SumDisp;
index=CaptionStr.Pos("\t");
row=0;
while(index!=0)
{
if(row==0)
QueryGrid->Columns->Items[row]->TitleString="";
else
QueryGrid->Columns->Items[row]->TitleString=CaptionStr.SubString(1,index-1);
CaptionStr.Delete(1,index);
index=CaptionStr.Pos("\t");
col++;
row++;
QueryGrid->ColCount=col+1;
}
QueryGrid->Columns->Items[row]->TitleString=CaptionStr;
if(l_ResCtrls->RecordCount>0) // 大于零分组
{
sqlstr=" Select "+FieldStr+l_SumField;
if(!whereStr.IsEmpty())
sqlstr+=" where "+whereStr.Delete(whereStr.Length()-5,5);
sqlstr+=" group by "+FieldStr.Delete(FieldStr.Length(),1);
}
else
{
sqlstr=" Select "+l_DefField;//+l_SumField;
if(!whereStr.IsEmpty())
sqlstr+=" where "+whereStr.Delete(whereStr.Length()-5,5);
}
return sqlstr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::FillGridWithData()//无分组
{
TComResultSet *SelectQuery=new TComResultSet(Handle,g_ClientHandle);;
QueryGrid->RowCount=1;
AnsiString ItemStr="";
AnsiString l_RDate,l_RGoodsCode,l_goods1 ;
try
{
SelectQuery->Open(MakeSQL(),"");
SelectQuery->MoveFirst();
while( SelectQuery->Eof == 0)
{
ItemStr="";
//l_RDate = AnsiString(SelectQuery->FieldByName("MpsdRDate");
//l_RGoodsCode = AnsiString(SelectQuery->FieldByName("MpsGoods");
l_RGoodsCode = SelectQuery->FieldByName("MRPGOODS");
l_RDate = SelectQuery->FieldByName("MRPDRDATE");
// for(int i=0;i<=SelectQuery->FieldCount-4;i++)
//ItemStr+="\t"+AnsiString(SelectQuery->FieldByIndex(i)) ;
if (l_RGoodsCode!=l_goods1)
{
l_goods1 = l_RGoodsCode;
ItemStr="\t"+l_RGoodsCode+
"\t"+SelectQuery->FieldByName("GOODSNAME")+
"\t"+AnsiString(SelectQuery->FieldByName("MpsEOQ"))+
"\t"+AnsiString(SelectQuery->FieldByName("MpsLT"))+
"\t"+AnsiString(SelectQuery->FieldByName("MpsCIQ"))+
"\t"+AnsiString(SelectQuery->FieldByName("MpsSIQ"))+
"\t"+AnsiString(SelectQuery->FieldByName("MpsDIQ"))+
ItemStr= ItemStr+"\t"+TitleColumn(l_RGoodsCode,l_RDate);
QueryGrid->AddItem(ItemStr);
}
else
{
ItemStr="\t"+AnsiString(" ")+
"\t"+AnsiString(" ")+
"\t"+AnsiString(" ")+
"\t"+AnsiString(" ")+
"\t"+AnsiString(" ")+
"\t"+AnsiString(" ")+
"\t"+l_RDate;
ItemStr= ItemStr+"\t"+TitleColumn(l_RGoodsCode,l_RDate);
QueryGrid->AddItem(ItemStr);
}
SelectQuery->MoveNext();
}
SelectQuery->Close();
}
__finally
{
delete SelectQuery;
}
}
//------------------------------------------------
AnsiString __fastcall TfrmMpsDateQuery::TitleColumn(AnsiString f_goods,AnsiString f_date)
{
TComResultSet *RsQueryQty;
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" ;
RsQueryQty->Open(l_sqlgross,"");
l_str= l_str+ AnsiString(RsQueryQty->FieldByName("MPSDRQTY"));
RsQueryQty->Close();
}
if(CB_Poh->Checked)
{
AnsiString l_qty;
l_sqlpoh=m_SQL+ " and mpsdFrom =2";
RsQueryQty->Open(l_sqlpoh,"");
l_qty= AnsiString(RsQueryQty->FieldByName("MPSDRQTY"));
l_str= l_str+"\t"+l_qty;
RsQueryQty->Close();
l_column++ ;
}
if(CB_Macc->Checked)
{
l_sqlmacc=m_SQL+ " and mpsdFrom =3";
RsQueryQty->Open(l_sqlmacc,"");
l_str= l_str+"\t"+AnsiString(RsQueryQty->FieldByName("MPSDRQTY"));
RsQueryQty->Close();
l_column++;
}
if(CB_Clean->Checked)
{
l_sqlclean=m_SQL+ " and mpsdFrom =4";
RsQueryQty->Open(l_sqlclean,"");
l_str= l_str+"\t"+AnsiString(RsQueryQty->FieldByName("MPSDRQTY"));
l_column++;
RsQueryQty->Close();
}
if(CB_Soh->Checked)
{
l_sqlSoh=m_SQL+ " and mpsdFrom =5";
RsQueryQty->Open(l_sqlclean,"");
l_str= l_str+"\t"+AnsiString(RsQueryQty->FieldByName("MPSDRQTY"));
l_column++;
RsQueryQty->Close();
}
if(CB_Take->Checked)
{
l_sqlTake=m_SQL+ " and mpsdFrom =6";
RsQueryQty->Open(l_sqlclean,"");
l_str= l_str+"\t"+AnsiString(RsQueryQty->FieldByName("MPSDRQTY"));
l_column++;
RsQueryQty->Close();
}
return l_str;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::btFindClick(TObject *Sender)
{
FillGridWithData();
FillterColumData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::btRestClick(TObject *Sender)
{
l_ResCtrls->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsDateQuery::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 = 8;
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;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?