📄 modelresultlist.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 + -