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

📄 datacore.cpp

📁 an Atl_com use to read or write an mdb file which use ado.Japanese software develop
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	catch(_com_error e)
	{
		*Succeed=VARIANT_FALSE;
	}
	CoUninitialize();
	return S_OK;
}

STDMETHODIMP CDataCore::DocDateValid(BSTR DateID, int Delay, VARIANT_BOOL *succeecd)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	_bstr_t sqlstr="SELECT DocDate FROM Delay";
	CoInitialize(NULL);
	_CommandPtr cmd(__uuidof(Command));
	cmd->ActiveConnection=ConPtr;
	cmd->CommandText=sqlstr;
	_RecordsetPtr rs(__uuidof(Recordset));
	rs->PutRefSource(cmd);
	
	_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
	rs->Open(vNull,vNull,adOpenDynamic,adLockOptimistic,adCmdText);
	//AfxMessageBox("ss");
	rs->MoveFirst();
	_variant_t DocDate;   //
	//COleDateTime DateDoc;
	//_variant_t PublishDate;
	DocDate=rs->GetCollect("DocDate");
	rs->Close();
	//COleVariant vtime((char*)theRequestDate);   
	//vtime.ChangeType(VT_DATE);   
	COleDateTime  DateDoc=RtnPublishDate(DateID);
	
	//COleDateTime DateDoc(PublishDate);   
	//AfxMessageBox((_bstr_t)RtnPublishDate(DateID));
	COleDateTime Now;
	Now=COleDateTime::GetCurrentTime();
	//AfxMessageBox((_bstr_t)Now.Format("%d,%M,%Y"));//= vtime; 
	COleDateTimeSpan span=Now-DateDoc;   
	//span.Format
	long spanDays,Dayspans;
	spanDays=span.GetDays();
	int nowyear,docyear;
	nowyear=Now.GetYear();
	docyear=DateDoc.GetYear();
	int Nowmonth,DocMonth;
	long DaysofNow,DaysOfDoc;
	Nowmonth=Now.GetMonth();
	DocMonth=DateDoc.GetMonth();
//	AfxMessageBox((_bstr_t)Nowmonth);
	//AfxMessageBox((_bstr_t)"1");
	//_bstr_t temp;
	//itoa(nowyear,temp,10);
	DaysofNow=GetDaysOfMonth(Nowmonth,nowyear);
	DaysOfDoc=GetDaysOfMonth(DocMonth,docyear);
	Dayspans=DaysofNow+DaysOfDoc;
	//AfxMessageBox((_bstr_t)DocDate);
	int cnt;
	//cnt=DocDate.intVal;
	cnt=Delay;
	int j=1;
	int pyear;
	pyear=docyear;
	int JMonth;
	bool NeworOld=false;
	int XMonth;
	int k=0;
	for(j=1;j<=cnt-2;j=j+1)
	{
		if(NeworOld==false)
		{
			JMonth=DocMonth+j;	
		}
		else
		{
			JMonth=0;
			JMonth=XMonth+k;
		}
		pyear=GetTheYear(pyear,JMonth);
		if(JMonth>12)
		{
			XMonth=JMonth-12*(JMonth%12);
			JMonth=XMonth;
			NeworOld=true;
			k=k+1;
		}
		else            
		{
			XMonth=JMonth;
		}
		Dayspans=Dayspans+GetDaysOfMonth(XMonth,pyear);
	}
		//AfxMessageBox((_bstr_t)DaysofNow);
		//AfxMessageBox((_bstr_t)DaysOfDoc);
		//AfxMessageBox((_bstr_t)Dayspans);
		//AfxMessageBox((_bstr_t)spanDays);
	if(spanDays>Dayspans)
	{
		*succeecd=VARIANT_FALSE;//
	}
	else
	{
		*succeecd=VARIANT_TRUE;
	}

	CoUninitialize();
	//return maxid;

	return S_OK;
}

long CDataCore::GetDaysOfMonth(int month, int year)
{
	long days;
	switch(month)
	{
		case 1:	
			days=31;
			break;
		case 2:
			if(year%4!=0)
			{
				days=28;
			}
			else
			{
				days=29;
			}
			break;
		case 3:
			days=31;
			break;
		case 4:
			days=30;
			break;
		case 5:
			days=31;
			break;
		case 6:
			days=30;
			break;
		case 7:
			days=31;
			break;
		case 8:
			days=31;
			break;
		case 9:
			days=30;
			break;
		case 10:
			days=31;
			break;
		case 11:
			days=30;
			break;
		case 12:
			days=31;
			break;
	}
	return days;
}

COleDateTime CDataCore::RtnPublishDate(BSTR ID)
{
		_bstr_t sqlstr="select * from 暥彂 where 暥彂ID="+(_bstr_t)ID;
	CoInitialize(NULL);
	_CommandPtr cmd(__uuidof(Command));
	cmd->ActiveConnection=ConPtr;
	cmd->CommandText=sqlstr;
	_RecordsetPtr rs(__uuidof(Recordset));
	rs->PutRefSource(cmd);
	_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
	_variant_t date;
	try
	{
		//rs->Open(vNull,vNull,,adLockOptimistic,adCmdText);
		rs->Open(vNull,vNull,adOpenStatic,adLockOptimistic,adCmdText);
		//AfxMessageBox((_bstr_t)sqlstr);
		if(rs->RecordCount>0)
		{
			rs->MoveFirst();	
			date=rs->GetCollect("発行日");
			//AfxMessageBox((_bstr_t)date);
		}
	}
	catch(_com_error e)
	{

	}
	//COleDateTime PublicshDate;
	//try
	//{
		COleDateTime PublicshDate(date);
	//}
	//catch(_com_error e)
	//{
		
	//}
	//PublicshDate=(_bstr_t)date;
	CoUninitialize();
	return PublicshDate;
}

STDMETHODIMP CDataCore::GoodsDateValid(BSTR DateID, int Delay, VARIANT_BOOL *succeecd)
{
		AFX_MANAGE_STATE(AfxGetStaticModuleState())
	CoInitialize(NULL);
  	COleDateTime  DateDoc=RtnGoodsDate(DateID);
	COleDateTime Now;
	Now=COleDateTime::GetCurrentTime();
	COleDateTimeSpan span=Now-DateDoc;   
	long spanDays,Dayspans;
	spanDays=span.GetDays();
	int nowyear,docyear;
	nowyear=Now.GetYear();
	docyear=DateDoc.GetYear();
	int Nowmonth,DocMonth;
	long DaysofNow,DaysOfDoc;
	Nowmonth=Now.GetMonth();
	DocMonth=DateDoc.GetMonth();
	DaysofNow=GetDaysOfMonth(Nowmonth,nowyear);
	DaysOfDoc=GetDaysOfMonth(DocMonth,docyear);
	Dayspans=DaysofNow+DaysOfDoc;
	int cnt;
	cnt=Delay;
	int j=1;
	int pyear;
	pyear=docyear;
	int JMonth;
	bool NeworOld=false;
	int XMonth;
	int k=0;
	for(j=1;j<=cnt-2;j=j+1)
	{                			
		if(NeworOld==false)
		{
			JMonth=DocMonth+j;	
		}
		else
		{
			JMonth=0;
			JMonth=XMonth+k;
			//AfxMessageBox("test");
		}
		pyear=GetTheYear(pyear,JMonth);
		if(JMonth>12)
		{
			XMonth=JMonth-12*(JMonth%12);
			JMonth=XMonth;
			NeworOld=true;
			k=k+1;
		}
		else            
		{
			XMonth=JMonth;
		}
		Dayspans=Dayspans+GetDaysOfMonth(XMonth,pyear);
	}
		//AfxMessageBox((_bstr_t)DaysofNow);
		//AfxMessageBox((_bstr_t)DaysOfDoc);
		//AfxMessageBox((_bstr_t)Dayspans);
		//AfxMessageBox((_bstr_t)spanDays);
	if(spanDays>Dayspans)
	{
		*succeecd=VARIANT_FALSE;
	}
	else
	{
		*succeecd=VARIANT_TRUE;
	}

	CoUninitialize();
	//return maxid;

	return S_OK;
}

COleDateTime CDataCore::RtnGoodsDate(BSTR ID)
{
	_bstr_t sqlstr="select * from 暔昳忣曬 where 暔昳忣曬ID="+(_bstr_t)ID;
	CoInitialize(NULL);
	_CommandPtr cmd(__uuidof(Command));
	cmd->ActiveConnection=ConPtr;
	cmd->CommandText=sqlstr;
	_RecordsetPtr rs(__uuidof(Recordset));
	rs->PutRefSource(cmd);
	_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
	_variant_t date;
	try
	{
		rs->Open(vNull,vNull,adOpenStatic,adLockOptimistic,adCmdText);
	//AfxMessageBox("ss");
		if(rs->RecordCount>0)
		{
			rs->MoveFirst();
			date=rs->GetCollect("判定日");
		}
	}
	catch(_com_error e)
	{

	}
	
	//try
	//{
		COleDateTime PublicshDate(date);
	//}
	//catch(_com_error e)
	//{

	//}
	//PublicshDate=(_bstr_t)date;
	CoUninitialize();
	return PublicshDate;
}

int CDataCore::GetTheYear(int year, int month)
{
		int Result;
	int Month=12;
	int Dmonth;
	Dmonth=12-month;
	if(Dmonth<0)
	{
		Result=year+1;
	}
	else
	{
		Result=year;
	}
	//CString   str ;
	
	//str.Format("%d",Result);
	//AfxMessageBox(str);
	return Result;
}

STDMETHODIMP CDataCore::Insert_into_GoodsInfo(VARIANT_BOOL Vaild, BSTR info, BSTR attribute, BSTR JudgeCode, BSTR DocID, int *succeed)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	CoInitialize(NULL);
	_CommandPtr cmd(__uuidof(Command));
	_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
	_bstr_t vaild;
	if(Vaild==VARIANT_TRUE)
	{
		vaild=(_bstr_t)"1";
	}
	else
	{
		vaild=(_bstr_t)"0";
	}
	_bstr_t sqlstr;
	sqlstr="insert into 暔昳忣曬(暔昳忣曬桳岠,暔昳忣曬,儊乕僇乕,敾掕Code,暥彂ID) values(";
	sqlstr=sqlstr+(_bstr_t)vaild+(_bstr_t)",'"+(_bstr_t)info+(_bstr_t)"','"+(_bstr_t)attribute+(_bstr_t)"',";
	sqlstr=sqlstr+(_bstr_t)JudgeCode+(_bstr_t)","+(_bstr_t)DocID+(_bstr_t)")";
	//*succeed=VARIANT_FALSE;
	try
	{
		
		ConPtr->BeginTrans();
		cmd->ActiveConnection=ConPtr;
		cmd->CommandText=sqlstr;
		cmd->Execute(&vNull,&vNull,adCmdText);
		_bstr_t sqltxt;
		sqltxt="select @@identity  as ID from 暔昳忣曬";
		_CommandPtr command(__uuidof(Command));
		command->ActiveConnection=ConPtr;
		command->CommandText=sqltxt;
		_RecordsetPtr rs(__uuidof(Recordset));
		rs->PutRefSource(command);
		_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
		rs->Open(vNull,vNull,adOpenDynamic,adLockOptimistic,adCmdText);
		//AfxMessageBox("ss");
		rs->MoveFirst();
		_variant_t MaxId;
		MaxId=rs->GetCollect("ID");
		//ConPtr->CommitTrans();
		ConPtr->CommitTrans();
		*succeed=MaxId.intVal;
	}
	catch(_com_error e)
	{
		ConPtr->RollbackTrans();
		*succeed=0;
	}
	return S_OK;
}

STDMETHODIMP CDataCore::SortOutPut(BSTR OutPutID, BSTR SortID, VARIANT_BOOL *succeed)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	CoInitialize(NULL);
	_CommandPtr cmd(__uuidof(Command));
	_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
	_bstr_t sqlstr;
	sqlstr="update 桝弌 set DetailID="+(_bstr_t)SortID+(_bstr_t)" where 桝弌ID="+OutPutID;
	*succeed=VARIANT_FALSE;
	try
	{
		cmd->ActiveConnection=ConPtr;
		cmd->CommandText=sqlstr;
		cmd->Execute(&vNull,&vNull,adCmdText);
		*succeed=VARIANT_TRUE;
	}
	catch(_com_error e)
	{
		*succeed=VARIANT_FALSE;
	}

	return S_OK;
}

STDMETHODIMP CDataCore::RtnMaxOutPutID(BSTR *MaxID)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	*MaxID=MaxOutPutID();
	return S_OK;
}

BSTR CDataCore::MaxOutPutID()
{
	_bstr_t sqlstr

⌨️ 快捷键说明

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