📄 data.cpp
字号:
// Data.cpp: implementation of the CData class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "QGZX_InfoPlat.h"
#include "Data.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CData::CData()
{
isActived = FALSE;
CoInitialize(NULL);
m_pConn.CreateInstance("ADODB.Connection");
m_pRs.CreateInstance("ADODB.Recordset");
}
CData::~CData()
{
if(m_pConn)
{
m_pConn->Close();
m_pRs.Release();
m_pConn.Release();
CoUninitialize();
isActived = FALSE;
}
}
BOOL CData::InitData()
{
CString strProvider,strDataSource,strUserName,strPWD,strConn;
::GetPrivateProfileString("ACCESS","Provider",NULL,strProvider.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
::GetPrivateProfileString("ACCESS","Data Source",NULL,strDataSource.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
::GetPrivateProfileString("ACCESS","User",NULL,strUserName.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
::GetPrivateProfileString("ACCESS","PWD",NULL,strPWD.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
strConn.Format("Provider=%s;Data Source=%s;Persist Security Info=False",strProvider,strDataSource);
try
{
m_pConn->Open(_bstr_t(strConn),_bstr_t(strUserName),_bstr_t(strPWD),adConnectUnspecified); //通过读取INI初始化连接
// m_pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\\SncPlatform.mdb;Persist Security Info=False","","",adConnectUnspecified);
m_pRs->Open("select * from _tSysManager",_variant_t(m_pConn,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch(_com_error &e)
{
::AfxMessageBox(e.ErrorMessage());
}
return TRUE;
//连接SQL Server
/*
try
{
//_bstr_t strConn = "Provider=SQLOLEDB; Server=192.168.1.101; Database=Snc_InfoPlat; uid=sa; pwd=8872873;";
CString strProvider,strServer,strDatabase,strUid,strPwd,strConn;
//获取INI连接字符串
::GetPrivateProfileString("SQLSERVER", "Provider", NULL, strProvider.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
::GetPrivateProfileString("SQLSERVER", "Server", NULL, strServer.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
::GetPrivateProfileString("SQLSERVER", "Database", NULL, strDatabase.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
::GetPrivateProfileString("SQLSERVER", "uid", NULL, strUid.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
::GetPrivateProfileString("SQLSERVER", "pwd", NULL, strPwd.GetBuffer(MAX_PATH),MAX_PATH,".\\DB_CONN.ini");
m_pConn->ConnectionTimeout = 8;
strConn.Format("Provider=%s; Server=%s; Database=%s; uid=%s; pwd=%s;",
strProvider, strServer, strDatabase, strUid ,strPwd);
m_pConn->Open(_bstr_t(strConn), "", "", NULL);
m_pRs->Open("Select * from _tSysManager",_variant_t(m_pConn,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch(_com_error &e)
{
// ::AfxMessageBox(e.ErrorMessage());
isActived = FALSE;
::AfxMessageBox(e.Description());
return FALSE;
}
isActived = TRUE;
return TRUE;
*/
}
BOOL CData::IsBOF()
{
return m_pRs->BOF;
}
BOOL CData::IsEOF()
{
return m_pRs->EndOfFile;
}
void CData::MoveNext()
{
m_pRs->MoveNext();
}
void CData::MovePrev()
{
m_pRs->MovePrevious();
}
void CData::MoveLast()
{
m_pRs->MoveLast();
}
void CData::MoveFirst()
{
m_pRs->MoveFirst();
}
int CData::GetRecordCount()
{
return m_pRs->RecordCount;
}
CString CData::GetAsString(CString FieldName)
{
/* if(!IsBOF() && !IsEOF())
{
_variant_t strTemp=m_pRs->Fields->Item[_variant_t(FieldName)]->Value;
return _com_util::ConvertBSTRToString(_bstr_t(strTemp));;
}
else
{
return "";
} */ //两种检验方法
ASSERT(!IsBOF()&&!IsEOF());
_variant_t strTemp=m_pRs->Fields->Item[_variant_t(FieldName)]->Value;
if((V_VT(&strTemp)==VT_NULL)||V_VT(&strTemp)==VT_EMPTY)
{
return "";
}
return _com_util::ConvertBSTRToString(_bstr_t(strTemp));;
}
int CData::GetAsInteger(CString FieldName)
{
ASSERT(!IsBOF()&&!IsEOF());
_variant_t strTemp=m_pRs->Fields->Item[_variant_t(FieldName)]->Value;
if((V_VT(&strTemp)==VT_NULL))
{
return 0;
}
return atoi(_bstr_t(strTemp));
}
void CData::SetAsString(CString FieldName, CString FieldValue)
{
m_pRs->Fields->Item[_variant_t(FieldName)]->Value=_variant_t(FieldValue);
}
void CData::SetAsInteger(CString FieldName, int FieldValue)
{
CString cs;
cs.Format("%d",FieldValue);
SetAsString(FieldName,cs);
}
BOOL CData::ExecuteSQL(CString sql)
{
//m_pRs->Open(_bstr_t(sql),_variant_t(m_pConn,true),adOpenStatic,adLockOptimistic,adCmdText);
try
{
m_pRs->Close();
m_pRs->Open(_bstr_t(sql),_variant_t(m_pConn,true),adOpenStatic,adLockOptimistic,adCmdText);
}
catch(_com_error &e)
{
::AfxMessageBox(e.ErrorMessage());
::AfxMessageBox(e.Description());
// for(long i=0;i<m_pConn->Errors->Count;i++)
// {
// ::AfxMessageBox(m_pConn->Errors->GetItem(_variant_t(i))->Description);
// }
return FALSE;
}
return TRUE;
}
CString CData::AutoNumber(CString sTable, CString sFieldName, CString sCode, int nStyle)
{
CString sNewNumber,sTempNumber,sOldNumber,sMaxNumber;
CString sSQL;
int nRecordCount;
sSQL.Format("Select max(%s) as MAXID From %s", sFieldName, sTable);
ExecuteSQL(sSQL);
// ExecuteSQL("select max(OverTimeID) as 最大编号 from tb_overtime");
/* if(nStyle==1) //按流水号
{
if(GetRecordCount()<1)
{
sNewNumber.Format("%s00001",sCode);
}
else
{
m_pRs->MoveFirst();
sOldNumber=(char *)(_bstr_t)m_pRs->GetCollect("最大编号");
sMaxNumber=sOldNumber.Mid(11); //第二位表示起始位
sTempNumber.Format("%d",atoi(sMaxNumber)+1);
sNewNumber.Format("%s%s",sCode,sTempNumber);
}
}*/
if(nStyle == 1) //商品编号
{
int nMaxNum;
sOldNumber=(char *)(_bstr_t)m_pRs->GetCollect("MAXID");
sTempNumber = sOldNumber.Right(5);
nMaxNum = atoi(sTempNumber);
sNewNumber.Format("SPBH_%05d", ++nMaxNum);
return sNewNumber;
}
if(nStyle == 2) //按日期
{
int nYear,nMonth,nDay;
//获取当前时间
CTime time;
time=CTime::GetCurrentTime();
nYear=time.GetYear();
nMonth=time.GetMonth();
nDay=time.GetDay();
sOldNumber=(char *)(_bstr_t)m_pRs->GetCollect("MAXID");
CString sLeft,sRight;
CString sCurrentTime;
int nRight = 0;
sLeft = sOldNumber.Left(8);
sRight = sOldNumber.Right(3);
sCurrentTime.Format("%4d%02d%02d", nYear, nMonth, nDay); //保证日期格式
if(sCurrentTime == sLeft) //今天己有商品销售
{
nRight = atoi(sRight);
sNewNumber.Format("%s_%03d", sLeft, ++nRight);
return sNewNumber; //sNewNumber为产生的新序号
}
else //今天是否第一次销售商品
{
sNewNumber.Format("%s_001", sCurrentTime);
return sNewNumber;
}
}
return "";
}
void CData::FreeData()
{
if(m_pConn)
{
m_pConn->Close();
m_pRs.Release();
m_pConn.Release();
CoUninitialize();
}
isActived = FALSE;
}
int CData::GetRecordCount(_RecordsetPtr rs)
{
return rs->RecordCount;
}
BOOL CData::ExecuteOther(CString SQL)
{
if(m_pConn == NULL)
{
return FALSE;
}
else
{
try
{
m_pConn->Execute(_bstr_t(SQL),NULL,adCmdText);
}
catch(_com_error e)
{
::AfxMessageBox(e.ErrorMessage());
::AfxMessageBox(e.Description());
return FALSE;
}
}
return TRUE;
}
float CData::GetAsFloat(CString FieldName)
{
ASSERT(!IsBOF()&&!IsEOF());
_variant_t strTemp=m_pRs->Fields->Item[_variant_t(FieldName)]->Value;
if((V_VT(&strTemp)==VT_NULL))
{
return 0;
}
return atof(_bstr_t(strTemp));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -