⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmdivide.cpp

📁 这是一个工厂的生产线的仓库管理.有计划,实绩,库存等
💻 CPP
字号:
#include "stdafx.h"
#include "frmDivide.h"
using namespace FAP;

void frmDivide::begin(void){
abc=new String __gc *[5];
switch(iLanguage){
case 0:abc[0]=S"连接数据库失败!!";
       abc[1]=S"操作失败!!";
	   abc[2]=S"输入的数字大于库存数!!";
	   abc[3]=S"操作成功!!";
	   break;
case 1:abc[0]=S"データーベースへの接続が失敗しました!!";
       abc[1]=S"操作に失敗しました!!";
	   abc[2]=S"入力した数量が在庫数より多いです!!";
	   abc[3]=S"操作に成功しました!!";
	   break;
case 2:abc[0]=S"Database Connection Fail!!";
       abc[1]=S"Operation Fail!!";
	   abc[2]=S"Inputed Number Is Larger Than Stock Number!!";
	   abc[3]=S"Operation Success!!";
	   break;
default:abc[0]=S"连接数据库失败!!";
       abc[1]=S"操作失败!!";
	   abc[2]=S"输入的数字大于库存数!!";
	   abc[3]=S"操作成功!!";
break;
    
}
}
void frmDivide::FillGrid(int intLang){

	DataGridTextBoxColumn *oProCode;
	DataGridTextBoxColumn *oProName;
	DataGridTextBoxColumn *oProNum;

	DataGridTableStyle *oTableStyle = new DataGridTableStyle();

	oTableStyle->MappingName	= S"Divide";
 

	//oProCode
	oProCode	= new DataGridTextBoxColumn();
	oProCode->MappingName	= S"Procode";
	oProCode->HeaderText	= infClsDivide->saG_Code[intLang];
	oProCode->Alignment		= HorizontalAlignment::Center;
	oProCode->Width			= 250;
	oProCode->ReadOnly		= true;
	oProCode->NullText		= S"";

	//oProName
	oProName		= new DataGridTextBoxColumn();
	oProName->MappingName		= S"Proname";
	oProName->HeaderText		= infClsDivide->saG_Name[intLang];
	oProName->Alignment			= HorizontalAlignment::Center;
	oProName->Width				= 460;
	oProName->ReadOnly			= true;
	oProName->NullText			=S"";

	//oProNum
	oProNum					= new DataGridTextBoxColumn();
	oProNum->MappingName	= S"ProNum";
	oProNum->HeaderText		= infClsDivide->saG_PerNum[intLang];
	oProNum->Alignment		= HorizontalAlignment::Center;
	oProNum->Width			= 200;
	oProNum->ReadOnly		= true;
	oProNum->NullText		=S"";

	oTableStyle->GridColumnStyles->Add(oProCode);
	oTableStyle->GridColumnStyles->Add(oProName);
	oTableStyle->GridColumnStyles->Add(oProNum);
	
	dbGridDiv->TableStyles->Add(oTableStyle);


	//Set Data
	String * strSQL;
	
	DataSet * dSetTmp;
	DataTable *dTableTmp;
	
	String * strTmp[] = {S"C", S"J", S"E"};

	strSQL = S"select a.PARTS_CODE as Procode, b.PARTS_NAME_";

	strSQL = String::Concat(strSQL,strTmp[intLang]);

	strSQL = String::Concat(strSQL,S" as Proname, a.PARTS_COUNT  ",  S" as ProNum from PART_COMPOSITION a,parts_mst b ");

	strSQL = String::Concat(strSQL,S" where a.PRODUCT_CODE = b.PRODUCT_CODE");

	strSQL = String::Concat(strSQL,S" and a.product_code = '", strProcode ,S"'");

	

	
	if(!dbDivide->blnCnnOpen()){
		MessageBox::Show(abc[0]);
		return;
	}

	dSetTmp = dbDivide->dSetSQL_Select(strSQL,S"Divide",0);

	dTableTmp = dSetTmp->Tables->Item[S"Divide"];
	
	dbGridDiv->DataSource = dTableTmp;

}

bool frmDivide::InstDeliver(String * strFactory, String * strOriginCode, 
							String * strDesCode,String * ProCode,
							String * strRank,Single intNum, 
							int intPartsDiv,String * strDelDate,
							String * strShift, String * ingLot){

	String * strSQL;

	strSQL = S"insert into deliver_data(FACTORY_CODE,ORIGIN_CODE,DESTINATION_CODE,PRODUCT_CODE,RANK,DELIVER_QTY,PARTS_DIV,	DELIVER_YMD,SHIFT,LOT) values ";
	strSQL = String::Concat(strSQL,S"('",strFactory,S"',");
	strSQL = String::Concat(strSQL,S"'",strOriginCode,S"',");
	strSQL = String::Concat(strSQL,S"'",strDesCode,S"',");
	strSQL = String::Concat(strSQL,S"'",ProCode,S"',");
	strSQL = String::Concat(strSQL,S"'",strRank,S"',");
	strSQL = String::Concat(strSQL,intNum.ToString(),S",");
	strSQL = String::Concat(strSQL,S"(select parts_div from parts_mst where product_code = '",ProCode,S"' and rownum < 2) ,");
	strSQL = String::Concat(strSQL,S"to_date('",strDelDate,S"','yyyy-mm-dd hh24-mi-ss'),");
	//strSQL = String::Concat(strSQL,S"to_date('",strDelDate,S"','yyyy-mm-dd hh24-mi-ss'),");
	strSQL = String::Concat(strSQL,S"'",strShift->Trim(),S"',");
	strSQL = String::Concat(strSQL,S"'",ingLot,S"')");

	if (!dbDivide->blnSQL_Execute(strSQL)) {
		dbDivide->blnRollBack();
		dbDivide->blnCnnClose();
		MessageBox::Show(abc[1],S"Error");
		return false;
	}

	return true;

}



bool frmDivide::InstStock(String *strProCode,
								String *strRank,
								String* intNum,
								int intMode		//intMode 0: Stock increase - child  1: stock reduce - parent
								)
{
	
	int intUptRcrds;
	String * strSQL;
	bool blnInst;
	String *strTmp;
	
	//减去半成批次的如果减成功 intUptRcrds为<=0
	strSQL = S"update stock_data set stock_qty = stock_qty  ";

	switch(intMode) {
		case intCChild:
			strTmp = S"+";
			break;
		case intCParent:
			strTmp = S"-";
			break;
		default:
			strTmp = S"+";
			break;
	}
	strSQL = String::Concat(strSQL,strTmp, intNum);

	strSQL = String::Concat( strSQL,S" where PRODUCT_CODE = '");
	strSQL = String::Concat(strSQL,strProCode,S"' and STOCK_POS = '",infClsDivide->strProcess,S"'");
	strSQL = String::Concat(strSQL,S" and FACTORY_CODE = '",infClsDivide->strFactoryCode,S"'");

	if (!(strRank->Trim()->CompareTo(S"")==0))
		strSQL = String::Concat(strSQL,S" and rank = '",strRank,S"'" );

	
	switch(intMode) {
		case intCChild:
			strSQL = String::Concat(strSQL, S" and trim(lot) is null");

			break;
		case intCParent:
			strSQL = String::Concat(strSQL, S" and lot = '", strLot,S"'");

			break;
		default:
			break;
	}
	
	strSQL = String::Concat(strSQL, S" and stock_type = 2");
	
	if (!dbDivide->blnSQL_Execute(strSQL,&intUptRcrds))
		return false;
	
	if (intMode == intCParent) 
		return true;

	if (intUptRcrds <= 0){
		//更新原材料,成功intcatkap<=1
		strSQL = S"update stock_data set STOCK_QTY = STOCK_QTY +";	
		strSQL = String::Concat(strSQL,intNum);
		strSQL = String::Concat(strSQL,S" where factory_code = '",infClsDivide->strFactoryCode,S"'");
		strSQL = String::Concat(strSQL,S" and STOCK_POS = '",infClsDivide->strProcess,S"'");
		strSQL = String::Concat(strSQL,S" and PRODUCT_CODE = '",strProCode,S"'");
		strSQL = String::Concat(strSQL,S" and LOT =",S"(select PARTS_NO from f_result_note where order_NO='",strLot,S"' and ORDER_YMD is null and rownum<2 )",S"");
		strSQL = String::Concat(strSQL,S" and stock_type = 2");

		int intcatkap;
		if (!dbDivide->blnSQL_Execute(strSQL,&intcatkap))
		{
			return false;
		}
		//否则插入
		if (intcatkap <= 0)
		{
				strSQL = S"insert into stock_data (FACTORY_CODE,STOCK_POS,PRODUCT_CODE,RANK,STOCK_TYPE,STOCK_QTY,LOT) values ";
				strSQL = String::Concat(strSQL,S" (");
				strSQL = String::Concat(strSQL, S"'",infClsDivide->strFactoryCode,S"',");
				strSQL = String::Concat(strSQL, S"'",infClsDivide->strProcess,S"',");
				strSQL = String::Concat(strSQL, S"'",strProCode,S"',");
				strSQL = String::Concat(strSQL, S"'",strRank,S"',");
				strSQL = String::Concat(strSQL, S"2,");
				strSQL = String::Concat(strSQL, intNum,S",");
				strSQL = String::Concat(strSQL, S"(select PARTS_NO from f_result_note where order_NO='",strLot,S"' and ORDER_YMD is null and rownum<2 ))");
				

				blnInst = dbDivide->blnSQL_Execute(strSQL);

				if (!blnInst)
					return false;
		}
		//strSQL = S"";
		//strTmp=String::Format("{0:yyyy-MM-dd}",__box(DateTime::Now));
		//strSQL =String::Concat(strSQL,S" update F_RESULT_NOTE set ORDER_YMD = to_date('",strTmp,S"','yyyy-mm-dd') where order_no='",strLot,S"'");

		//blnInst = dbDivide->blnSQL_Execute(strSQL);

		//if (!blnInst)
		//	return false;


	}
	
	return true;

}

⌨️ 快捷键说明

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