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

📄 datacore.cpp

📁 an Atl_com use to read or write an mdb file which use ado.Japanese software develop
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// DataCore.cpp : Implementation of CDataCore
//This Module Include the function to process the data of MMC
#include "stdafx.h"
#include "MMCore.h"
#include "DataCore.h"

/////////////////////////////////////////////////////////////////////////////
// CDataCore

///////////////////////////////////////////////////////////////////////////////
////Inition DataBase Connection Input a MDB file path by Parm ConnectionStr////
///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CDataCore::InitionConnection(BSTR ConnectionStr, VARIANT_BOOL *Succeed)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	CoInitialize(NULL);
	ConPtr.CreateInstance(__uuidof(Connection));
	*Succeed=VARIANT_FALSE;
	_bstr_t Constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+(_bstr_t)ConnectionStr;
	try
	{
		if(ConPtr->State)
		{
			ConPtr->Close();
		}
		ConPtr->Open(Constr,"","",adModeUnknown);
		*Succeed=VARIANT_TRUE;
	}
	catch(_com_error e)
	{
		*Succeed=VARIANT_FALSE;
	}
	CoUninitialize();
	return S_OK;
}

////////////////////////////////////////////////////////////////////
///Excute Sqlstr Not Include select/////////////////////////////////
////////////////////////////////////////////////////////////////////
STDMETHODIMP CDataCore::ExcuteSql(BSTR Sqlstr, VARIANT_BOOL *Succeed)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	CoInitialize(NULL);
	_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
	_CommandPtr cmd(__uuidof(Command));
	*Succeed=VARIANT_FALSE;
	//AfxMessageBox((_bstr_t)"succeed");
	try
	{
		cmd->ActiveConnection=ConPtr;
		cmd->CommandText=Sqlstr;
		cmd->Execute(&vNull,&vNull,adCmdText);
		*Succeed=VARIANT_TRUE;
		//AfxMessageBox((_bstr_t)"succeed");
	}
	catch(_com_error e)
	{
		*Succeed=VARIANT_FALSE;
		//CString errormessage;
		//errormessage.Format("!\r\n error message:%s",e.ErrorMessage());
		//AfxMessageBox(errormessage);///show error message
		//AfxMessageBox(e.ErrorMessage);
	}
	CoUninitialize();
	return S_OK;
}

/////////////////////////////////////////////////////////////////
/////////Excute Select Command Return Recordset//////////////////
/////////////////////////////////////////////////////////////////
STDMETHODIMP CDataCore::SearchRtnRs(BSTR sqlstr, _Recordset **ptr)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	CoInitialize(NULL);
	_CommandPtr cmd(__uuidof(Command));
	try
	{
		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,adOpenStatic,adLockOptimistic,adCmdText);
		rs->QueryInterface(__uuidof(_Recordset),(void **)ptr);
	}
	catch(_com_error e)
	{
			
	}
	CoUninitialize();
	return S_OK;
}

/////////////Under this is the detail Code for Process Data


/////////////////////////////////////////
///Insert Data into table 判定Code///////
/////////////////////////////////////////
STDMETHODIMP CDataCore::Insert_JudgeMentCode(BSTR judgeCode, BSTR JudgeMentStatus, 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="insert into 敾掕Code(敾掕Code,敾掕忬嫷) values("+(_bstr_t)judgeCode+",'"+(_bstr_t)JudgeMentStatus+"')";
	*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;
}

/////////////////////////////////////////
///Update Data into table 判定Code///////
/////////////////////////////////////////
STDMETHODIMP CDataCore::Update_JudgeMentCode(BSTR judgeCode, BSTR judegStatus, 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 敾掕Code set 敾掕忬嫷='"+(_bstr_t)judegStatus+"' where 敾掕Code="+(_bstr_t)judgeCode;
	*succeed=VARIANT_FALSE;
	//AfxMessageBox(sqlstr);
	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;
}

/////////////////////////////////////////
///Delete Data into table 判定Code///////
/////////////////////////////////////////
STDMETHODIMP CDataCore::Delete_JudgeMentCode(BSTR judgeCode, 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="delete from 敾掕Code "+(_bstr_t)" where 敾掕Code="+(_bstr_t)judgeCode;
	*succeed=VARIANT_FALSE;
	//AfxMessageBox(sqlstr);
	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;
}

/////////////////////////////////////////
///insert Data into table 輸出///////////
/////////////////////////////////////////
STDMETHODIMP CDataCore::Insert_Output(BSTR InvoiceID, BSTR InvoiceName, BSTR Count, BSTR unit, BSTR Unitprice, BSTR TotalPrice, BSTR APS, BSTR AllowCode, BSTR AllowDate, BSTR GoodsID, int *succeed)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	CoInitialize(NULL);
	_CommandPtr cmd(__uuidof(Command));
	_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
	_bstr_t sqlstr;
	//sqlstr="insert into 輸出(インボイスID,インボイス表記名,数量,単位,単価,価格,APS,許可Code) values(";
	sqlstr="insert into 桝弌(僀儞儃僀僗ID,僀儞儃僀僗昞婰柤,悢検,扨埵,扨壙,壙奿,APS,嫋壜Code) values(";
	sqlstr=sqlstr+(_bstr_t)InvoiceID+(_bstr_t)",'"+(_bstr_t)InvoiceName+(_bstr_t)"',";
	sqlstr=sqlstr+(_bstr_t)Count+(_bstr_t)",'"+(_bstr_t)unit+(_bstr_t)"',";
	sqlstr=sqlstr+(_bstr_t)Unitprice+(_bstr_t)","+(_bstr_t)TotalPrice+(_bstr_t)","+(_bstr_t)APS+(_bstr_t)",";
	sqlstr=sqlstr+(_bstr_t)AllowCode+(_bstr_t)")";
	*succeed=0;
	//AfxMessageBox(sqlstr);
	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;
}

/////////////////////////////////////////
///////////Update Data table 輸出/////////
/////////////////////////////////////////
STDMETHODIMP CDataCore::Update_Output(BSTR InvoiceName, BSTR Count, BSTR unit, BSTR Unitprice, BSTR TotalPrice, BSTR APS, BSTR AllowCode, BSTR AllowDate,BSTR ID, 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 インボイス表記名='"+(_bstr_t)InvoiceName;
	if((_bstr_t)AllowDate!=(_bstr_t)"null")
	{
		sqlstr="update 桝弌 set 僀儞儃僀僗昞婰柤='"+(_bstr_t)InvoiceName;
		sqlstr=sqlstr+(_bstr_t)"',悢検="+(_bstr_t)Count+(_bstr_t)",扨埵='"+(_bstr_t)unit+(_bstr_t)"',扨壙=";
		sqlstr=sqlstr+(_bstr_t)Unitprice+(_bstr_t)",壙奿="+(_bstr_t)TotalPrice+(_bstr_t)",APS="+(_bstr_t)APS;
		sqlstr=sqlstr+(_bstr_t)",嫋壜Code="+(_bstr_t)AllowCode+(_bstr_t)",嫋壜擔=#"+(_bstr_t)AllowDate+(_bstr_t)"#"+(_bstr_t)" where 桝弌ID="+(_bstr_t)ID;
    //sqlstr=sqlstr+(_bstr_t)",嫋壜Code="+(_bstr_t)AllowCode+(_bstr_t)" where 桝弌ID="+(_bstr_t)ID;
	}
	else
	{
		sqlstr="update 桝弌 set 僀儞儃僀僗昞婰柤='"+(_bstr_t)InvoiceName;
		sqlstr=sqlstr+(_bstr_t)"',悢検="+(_bstr_t)Count+(_bstr_t)",扨埵='"+(_bstr_t)unit+(_bstr_t)"',扨壙=";
		sqlstr=sqlstr+(_bstr_t)Unitprice+(_bstr_t)",壙奿="+(_bstr_t)TotalPrice+(_bstr_t)",APS="+(_bstr_t)APS;
		sqlstr=sqlstr+(_bstr_t)",嫋壜Code="+(_bstr_t)AllowCode+(_bstr_t)",嫋壜擔="+(_bstr_t)"null"+(_bstr_t)" where 桝弌ID="+(_bstr_t)ID;
	}
	*succeed=VARIANT_FALSE;
	//AfxMessageBox(sqlstr);
	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;
}

/////////////////////////////////////////
///////////Delete Datatable 輸出/////////
/////////////////////////////////////////
STDMETHODIMP CDataCore::Delete_Output(BSTR ID, 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="delete from 桝弌 where 桝弌ID="+(_bstr_t)ID;
	*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;
}

/////////////////////////////////////////
////Insert Data Into 輸出担当者//////////
/////////////////////////////////////////
STDMETHODIMP CDataCore::Insert_OutputChargeMan(BSTR Dept, BSTR name, int *succeed)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	CoInitialize(NULL);
	_CommandPtr cmd(__uuidof(Command));
	_variant_t vNull(DISP_E_PARAMNOTFOUND,VT_ERROR);
	_bstr_t sqlstr;
	sqlstr="insert into 桝弌扴摉幰(強懏,扴摉幰柤) values('"+(_bstr_t)Dept+(_bstr_t)"','"+(_bstr_t)name+(_bstr_t)"')";
	*succeed=0;
	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();
		*succeed=MaxId.intVal;
	}
	catch(_com_error e)
	{
		ConPtr->RollbackTrans();
		*succeed=0;
	}
	return S_OK;

}

/////////////////////////////
///////update 輸出担当者/////
/////////////////////////////
STDMETHODIMP CDataCore::Update_OutputChargeMan(BSTR Dept, BSTR name, BSTR ID, 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 強懏='"+(_bstr_t)Dept+(_bstr_t)"',扴摉幰柤='"+(_bstr_t)name+(_bstr_t)"' where 桝弌扴摉幰ID="+(_bstr_t)ID;
	*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;
}

/////////////////////////////////////
/////////////delete 輸出担当者///////
/////////////////////////////////////
STDMETHODIMP CDataCore::Delete_OutPutChargeMan(BSTR ID, 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="delete from 桝弌扴摉幰 where 桝弌扴摉幰ID="+(_bstr_t)ID;
	*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;
}

///////////////////////////////////////////
/////////Insert data into data table 文書//
///////////////////////////////////////////
STDMETHODIMP CDataCore::inset_Document(VARIANT_BOOL vaild, BSTR information, BSTR author, BSTR date, BSTR RelationShip, 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;
	if((_bstr_t)date!=(_bstr_t)"null")
	{
		sqlstr="insert into 暥彂(暥彂桳岠,暥彂忣曬,敪峴幰,敪峴擔,娭學崁斣) values(";
		sqlstr=sqlstr+(_bstr_t)Vaild+(_bstr_t)",'"+(_bstr_t)information+(_bstr_t)"','"+(_bstr_t)author;
		sqlstr=sqlstr+(_bstr_t)"',#"+(_bstr_t)date+(_bstr_t)"#,'"+(_bstr_t)RelationShip+(_bstr_t)"')";
	}
	else
	{
		sqlstr="insert into 暥彂(暥彂桳岠,暥彂忣曬,敪峴幰,娭學崁斣) values(";
		sqlstr=sqlstr+(_bstr_t)Vaild+(_bstr_t)",'"+(_bstr_t)information+(_bstr_t)"','"+(_bstr_t)author;
		sqlstr=sqlstr+"','"+(_bstr_t)RelationShip+(_bstr_t)"')";

	}
	//*succeed=VARIANT_FALSE;
	//AfxMessageBox(sqlstr);
	try
	{
		ConPtr->BeginTrans();

⌨️ 快捷键说明

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