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

📄 modelresultlist.cpp

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

#include "DBBase.h" 

using namespace  FAP;
using namespace System;
using namespace System::IO;
//using namespace System::Diagnostics;
using namespace System::Reflection;
using namespace Microsoft::Office::Core;
using namespace Microsoft::Office::Interop;
using namespace System::Data;
using namespace System::Data::OleDb;


void ModelResultList::InitGridgStyle(int iLanguage)
{
	int imonth;

	imonth=Convert::ToInt32(intDate());
	


	GridResultList->Cols->Count=imonth+2;
	GridResultList->Cols->Fixed=0;
	GridResultList->Rows->Count=1;
	GridResultList->Rows->Fixed=1;

	GridResultList->AllowMerging=C1::Win::C1FlexGrid::AllowMergingEnum::Free;
	GridResultList->Cols->Item[0]->AllowMerging=true;

	GridResultList->Cols->Item[0]->Caption=S"机种";
	GridResultList->Cols->Item[0]->AllowEditing=false;
	GridResultList->Cols->Item[0]->TextAlign=C1::Win::C1FlexGrid::TextAlignEnum::LeftCenter;
	GridResultList->Cols->Item[0]->TextAlignFixed=C1::Win::C1FlexGrid::TextAlignEnum::CenterCenter;
	GridResultList->Cols->Item[0]->Width=120;

	GridResultList->Cols->Item[1]->Caption=S"区	别";
	GridResultList->Cols->Item[1]->AllowEditing=false;
	GridResultList->Cols->Item[1]->TextAlign=C1::Win::C1FlexGrid::TextAlignEnum::LeftCenter;
	GridResultList->Cols->Item[1]->TextAlignFixed=C1::Win::C1FlexGrid::TextAlignEnum::CenterCenter;
	GridResultList->Cols->Item[1]->Width=80;
	
	for (int icm=1;icm<=imonth;icm++)
	{
		GridResultList->Cols->Item[icm+1]->Caption=Convert::ToString(icm);
		GridResultList->Cols->Item[icm+1]->AllowEditing=false;
		GridResultList->Cols->Item[icm+1]->TextAlign=C1::Win::C1FlexGrid::TextAlignEnum::LeftCenter;
		GridResultList->Cols->Item[icm+1]->TextAlignFixed=C1::Win::C1FlexGrid::TextAlignEnum::CenterCenter;
		GridResultList->Cols->Item[icm+1]->Width=60;
	}

	

}

String * ModelResultList::intDate(void)
{
	int strYear;
	int strMon;
	DateTime dtNow;
	String __gc * saD_Year[];
	saD_Year     = new String __gc * [13];
	
	strYear=Convert::ToInt32(String::Format("{0:yyyy}", __box(dtNow.Now)));
	strMon=Convert::ToInt32(String::Format("{0:MM}", __box(dtNow.Now)));

	saD_Year[1]		= S"31";
	if (strYear%4==0)
	{
		saD_Year[2]		=S"29";
	}
	else
	{
		saD_Year[2]		=S"28";
	}
	saD_Year[3]		= S"31";
	saD_Year[4]		= S"30";
	saD_Year[5]		= S"31";
	saD_Year[6]		= S"30";
	saD_Year[7]		= S"31";
	saD_Year[8]		= S"31";
	saD_Year[9]		= S"30";
	saD_Year[10]	= S"31";
	saD_Year[11]	= S"30";
	saD_Year[12]	= S"31";

	return Convert::ToString(saD_Year[strMon]);
}




bool ModelResultList::blnChkdev()
{
	String * strSQL;
	DateTime dtNow;
	DataSet * dSetTmp ;
	DataTable * dTableTmp;
	String * strDate;
	int iifc;
	int intdate;
	int iifc1;

	String * strscheduleqtycode;
	String * strscheduleqtycode1;
	String * strscheduleymd;
	String * strscheduleqty;
	String * strresultqty;
	
	int strsumcheduleqty;
	int strsumresultqtyqty;
	int strsumafx;
	int strsumafx1;
	int comsum;


	intdate=Int32::Parse(intDate());

	if (!(DBBRstInput->blnCnnOpen()))
	{
		MessageBox::Show(S"Connect Oracle Failed!",S"Product");
		return false;
	}
	strSQL = " ";
	strSQL = String::Concat(strSQL,S" select																	");
	strSQL = String::Concat(strSQL,S"			a.product_code as scheduleqtycode,								");
	strSQL = String::Concat(strSQL,S"			a.ymd as scheduleymd,											");
	strSQL = String::Concat(strSQL,S"			sum(a.product_qty) as  scheduleqty,								");
	strSQL = String::Concat(strSQL,S"			nvl(sum(b.product_qty),0) as resultqty							");
	strSQL = String::Concat(strSQL,S" from																		");
	strSQL = String::Concat(strSQL,S"			product_schedule a												");
	strSQL = String::Concat(strSQL,S"			left outer join product_result_data b on						");
	strSQL = String::Concat(strSQL,S"			a.lot=b.lot														");
	strSQL = String::Concat(strSQL,S"			and a.factory_code=b.factory_code								");
	strSQL = String::Concat(strSQL,S"			and a.process_no=b.process_no									");
	strSQL = String::Concat(strSQL,S" where																		");
	strSQL = String::Concat(strSQL,S"			a.factory_code='",sFactory,S"'									");
	if (String::Equals(comboBox2->Text,"")==false)
	{
		strSQL = String::Concat(strSQL,S"		AND A.PROCESS_NO='",comboBox2->Text,S"'							");
	}
	strDate=String::Format("{0:yyyyMM01}", __box(dtNow.Now));
	strSQL = String::Concat(strSQL,S"			and a.ymd>=to_date('",strDate,S"','yyyymmdd')					");
	strDate=String::Format("{0:yyyyMM01}", __box(dtNow.Now.AddMonths(1)));	
	strSQL = String::Concat(strSQL,S"			and a.ymd<to_date('",strDate,S"','yyyymmdd')					");
	strSQL = String::Concat(strSQL,S" group by 																	");
	strSQL = String::Concat(strSQL,S"			a.product_code,a.ymd											");
	strSQL = String::Concat(strSQL,S" order by 																	");
	strSQL = String::Concat(strSQL,S"			A.PRODUCT_CODE,a.ymd asc										");
	
	
	dSetTmp = DBBRstInput->dSetSQL_Select(strSQL,S"scheduleresult",0);

	//Get Table
	dTableTmp = dSetTmp->Tables->Item[S"scheduleresult"];

	System::Collections::IEnumerator* emnFapRow = dTableTmp->Rows->GetEnumerator();

	emnFapRow->Reset();

	iifc=0;
	iifc1=1;
	strscheduleqtycode1=S"";

	int sjint=0;
	comsum=6;

	while (emnFapRow->MoveNext())
	{
		iifc++;

		DataRow *dRowTmp = __try_cast<DataRow*>(emnFapRow->Current);

		strscheduleqtycode	= dRowTmp->Item[S"scheduleqtycode"]->ToString();
		strscheduleymd	= String::Format("{0:dd}",dRowTmp->Item[S"scheduleymd"]);
		strscheduleqty	= dRowTmp->Item[S"scheduleqty"]->ToString();
		strresultqty	= dRowTmp->Item[S"resultqty"]->ToString();
		
		
		strscheduleymd=Convert::ToString(Convert::ToInt32(strscheduleymd));

		if (iifc==1)
		{
			GridResultList->Rows->Count=GridResultList->Rows->Count + comsum;
			
			GridResultList->SetData(GridResultList->Rows->Count - comsum ,0,strscheduleqtycode);
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -1),0,strscheduleqtycode);
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -2),0,strscheduleqtycode);
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -3),0,strscheduleqtycode);
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -4),0,strscheduleqtycode);
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -5),0,strscheduleqtycode);
			
			GridResultList->SetData(GridResultList->Rows->Count - comsum,1,S"計画");
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -1),1,S"累計");
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -2),1,S"実績");
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -3),1,S"累計");
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -4),1,S"差");
			GridResultList->SetData(GridResultList->Rows->Count - (comsum -5),1,S"進捗");

			for(int intix=2;intix<intdate+1;intix++)
			{
				if (intix - 1 ==Int32::Parse(strscheduleymd))
				{
					GridResultList->SetData(GridResultList->Rows->Count - comsum,intix,strscheduleqty);

					strsumcheduleqty=strsumcheduleqty + Convert::ToInt32(strscheduleqty);

					GridResultList->SetData(GridResultList->Rows->Count - (comsum -1),intix,Convert::ToString(strsumcheduleqty));
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -2),intix,strresultqty);
					strsumresultqtyqty=strsumresultqtyqty + Convert::ToInt32(strresultqty);
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -3),intix,Convert::ToString(strsumresultqtyqty));

					strsumafx=Convert::ToInt32(strresultqty)-Convert::ToInt32(strscheduleqty);
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -4),intix,Convert::ToString(strsumafx));

					strsumafx1=strsumresultqtyqty-strsumcheduleqty;
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -5),intix,Convert::ToString(strsumafx1));

				}
			}

		}
		else 
		{
			if (String::Equals(strscheduleqtycode,strscheduleqtycode1)!=true)
			{
					GridResultList->Rows->Count=GridResultList->Rows->Count + comsum;
			
					GridResultList->SetData(GridResultList->Rows->Count - comsum ,0,strscheduleqtycode);
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -1),0,strscheduleqtycode);
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -2),0,strscheduleqtycode);
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -3),0,strscheduleqtycode);
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -4),0,strscheduleqtycode);
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -5),0,strscheduleqtycode);
					
					GridResultList->SetData(GridResultList->Rows->Count - comsum,1,S"計画");
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -1),1,S"累計");
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -2),1,S"実績");
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -3),1,S"累計");
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -4),1,S"差");
					GridResultList->SetData(GridResultList->Rows->Count - (comsum -5),1,S"進捗");

					strsumcheduleqty=0;
					strsumresultqtyqty=0;
					strsumafx=0;
					strsumafx1=0;
			}		
			else
			{
				for(int intix=2;intix<intdate+1;intix++)
				{
					if (intix - 1 ==Int32::Parse(strscheduleymd))
					{
						GridResultList->SetData(GridResultList->Rows->Count - comsum,intix,strscheduleqty);		
						strsumcheduleqty=strsumcheduleqty + Convert::ToInt32(strscheduleqty);
						
						GridResultList->SetData(GridResultList->Rows->Count - (comsum -1),intix,Convert::ToString(strsumcheduleqty));
						GridResultList->SetData(GridResultList->Rows->Count - (comsum -2),intix,strresultqty);
						strsumresultqtyqty=strsumresultqtyqty + Convert::ToInt32(strresultqty);
						GridResultList->SetData(GridResultList->Rows->Count - (comsum -3),intix,Convert::ToString(strsumresultqtyqty));

						strsumafx=Convert::ToInt32(strresultqty)-Convert::ToInt32(strscheduleqty);
						GridResultList->SetData(GridResultList->Rows->Count - (comsum -4),intix,Convert::ToString(strsumafx));

						strsumafx1=strsumresultqtyqty-strsumcheduleqty;
						GridResultList->SetData(GridResultList->Rows->Count - (comsum -5),intix,Convert::ToString(strsumafx1));
						
					}
				}
			
			}
			
		}
					
			strscheduleqtycode1=strscheduleqtycode;
	}

	myinteger = GridResultList->Rows->Count - 1;

	return true;
}





DataTable * ModelResultList::dtblGetCostms(infClass *infTmp,
													   DBBase * dBTMP)
{
	
	String * strSQL;
	DataTable *dtblTmp;
	DataSet * dsetTmp;
	/*OleDbDataReader *dReadTmp;*/

	strSQL = "";


	if (comboBox1->SelectedIndex==0)
	{
		strSQL = String::Concat(strSQL,S" Select PROCESS_NO from cost_mst Where LINE_CODE='L001' and PROCESS_NO<>'MA00' ");
	}
	else if (comboBox1->SelectedIndex==1)
	{
		strSQL = String::Concat(strSQL,S" Select PROCESS_NO from cost_mst Where LINE_CODE='L002'");
	}
	
	
	dBTMP->blnCnnOpen();

	dsetTmp = dBTMP->dSetSQL_Select(strSQL,S"TMP",0);
	
	dBTMP->blnCnnClose();

	try
	{
		dtblTmp = dsetTmp->Tables->Item[S"TMP"];
	}
	
    catch (...) {
		return NULL;		
	}

	return dtblTmp;

}


void ModelResultList::OutputExcel(void)
{
	System::Object			* oMissing;
	Excel::ApplicationClass	* pExcel;
	Excel::Workbook			* pWorkBook;
	Excel::Worksheet		* pActiveSheet;

	System::Object			* MissingValue;

	MissingValue=Type::Missing;

	try {
		oMissing = System::Reflection::Missing::Value;

		pExcel = new Excel::ApplicationClass();
		pExcel->Visible = true;

		pWorkBook  = pExcel->Workbooks->Open(vstrDateTime,MissingValue,
		MissingValue,MissingValue,MissingValue,
		MissingValue,MissingValue,MissingValue,
		MissingValue,MissingValue,MissingValue,
		MissingValue,MissingValue,MissingValue,
		MissingValue);

		
		//Worksheet Rename
		static_cast<Excel::Worksheet*>(pExcel->ActiveWorkbook->Sheets->Item[__box(1)])->Select(oMissing);
		pActiveSheet = static_cast<Excel::Worksheet*>(pExcel->ActiveSheet);
		pActiveSheet->Name = S"Test";

		//Cell Edit
//		static_cast<Excel::Range*>(pSheet1->Cells->get_Item(1,1))->Value2 = str; 

		pActiveSheet->Cells->set_Item(__box(2), __box(2), sFactory);

		pActiveSheet->Cells->set_Item(__box(2), __box(30),String::Format("{0:yyyyMMdd}",__box(DateTime::Now)));


		//for (int icm=1;icm<=imonth;icm++)
		for (int iic=0;iic<=myinteger;iic++)
		{
			for (int jic=0;jic<Convert::ToInt32(intDate())+1;jic++)
			{
				pActiveSheet->Cells->set_Item(__box(iic+3), __box(jic+1), Convert::ToString(GridResultList->GetData(iic,jic)));
			}
		}

		//pActiveSheet->Range("A4")->Resize(i,j)->Value=saExcelRowCol;

		//WorkSheet Add

/*
		//Save File
		pWorkBook->Save();
*/
		//Quit Excel
   		//pWorkBook->Close(false, oMissing, oMissing);
   		System::Runtime::InteropServices::Marshal::ReleaseComObject(pWorkBook);
   		//pExcel->Quit();
	 	System::Runtime::InteropServices::Marshal::ReleaseComObject(pExcel);
   		GC::Collect();
   	}
   	catch(Exception* e)	{
		//	;
	}


}


bool ModelResultList::CreateViewFAP(String * strFilename)
{
	FileInfo *strAppfileName;
	strAppfileName = new FileInfo("FAP");
	
	pstrCsnPath=String::Concat(strAppfileName->DirectoryName,S"\\Excel\\");

	vstrYMDHIS=String::Concat(pstrCsnPath,vstrYMDHIS);

	vstrDateTime=String::Concat(pstrCsnPath,S"機種別生産実績一覧",intDate(),vstrDateTime,S".xls");

	File::Copy(vstrYMDHIS,vstrDateTime,true);

	return true;

}

⌨️ 快捷键说明

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