📄 datacore.cpp
字号:
// 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 + -