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

📄 data.cpp

📁 VC++ 开发的一个大型进销存管理系统,并附带有Visio的数据库开发模型,商品采用分类管理.但是各位同仁需要注意,本系统的开发过程是基于VC++6.0 SQL Server2000的基础之上开发的.
💻 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 + -