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 + -
显示快捷键?