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

📄 theme.cpp

📁 我上载了那么多怎么都说已经有上载的啦
💻 CPP
字号:
// Theme.cpp: implementation of the CTheme class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "gpmis.h"
#include "Theme.h"
#include "global.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern CGPMISApp theApp;

CTheme::CTheme() : m_strNumber(""), m_strTheme(""), m_strType(""), m_strKind("")
{
}

CTheme::CTheme(const CString& strNumber, int nYear, const CString& strTheme, const CString& strType, const CString& strKind)
: m_strNumber(strNumber), m_nYear(nYear), m_strTheme(strTheme), m_strType(strType), m_strKind(strKind)
{
}

CTheme::~CTheme()
{

}

CTheme::CTheme(const CTheme& rhs)
{
	*this = rhs;
}

CTheme& CTheme::operator = (const CTheme& rhs)
{
	m_strNumber = rhs.m_strNumber;
	m_nYear = rhs.m_nYear;
	m_strTheme = rhs.m_strTheme;
	m_strType = rhs.m_strType;
	m_strKind = rhs.m_strKind;

	return *this;
}

/// create/update a record
BOOL CTheme::Create(BOOL bUpdate)
{
	CString			strSQL;
	CString			strTableName;
	_RecordsetPtr   pSet;
		
	FieldsPtr		pFields;
	FieldPtr		pField;
	
	_variant_t		vConn,vRowsAffected;
	CString			strTmep;

	vConn = (IDispatch*)theApp.GetConnect();
	pSet.CreateInstance(__uuidof(Recordset));

	strTableName.Format("Theme");

	time_t ltime;
	time( &ltime );

	switch(theApp.GetDBType())
	{
	case MSACCESS_DB:
	default:
		if( bUpdate )
			strSQL.Format("select * from %s where 届=%d and 学号='%s'", 
				strTableName, m_nYear, m_strNumber);
		else
			strSQL.Format("select * from %s",  strTableName);
		break;
	case SQLSERVER_DB:
		if( bUpdate )
			strSQL.Format("select * from %s where 届=%d and 学号='%s'", 
				strTableName, m_nYear, m_strNumber);
		else
			strSQL.Format("select * from %s",  strTableName);
		break;
	}
	try
	{
		pSet->Open((_variant_t)strSQL,vConn,adOpenStatic,adLockOptimistic,adCmdUnknown);

		if( !bUpdate )  //Create
		{
			pSet->AddNew();
		}

		pFields			= pSet->Fields;
		pField			= pFields->Item["届"];
		strTmep.Format("%d",GetYear());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["学号"];
		strTmep.Format("%s",GetNumber());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["题目"];
		strTmep.Format("%s",GetTheme());
		pField->Value	= (_bstr_t)strTmep;
		
		pFields			= pSet->Fields;
		pField			= pFields->Item["类型"];
		strTmep.Format("%s",GetType());
		pField->Value	= (_bstr_t)strTmep;

		pFields			= pSet->Fields;
		pField			= pFields->Item["题目性质"];
		strTmep.Format("%s",GetKind());
		pField->Value	= (_bstr_t)strTmep;

		pSet->Update(); 
		pSet->Close();
		
	}
	catch( _com_error& ce )
	{
		_bstr_t bstrDescription( ce.Description() );
		_bstr_t bstrSource( ce.Source() );
		TRACE( "HRESULT = 0x%08lx\n", ce.Error() );
		TRACE( "HRESULT description : %s\n", ce.ErrorMessage() );
		TRACE( "Description : %s\n", (LPCTSTR)bstrDescription );
		TRACE( "Source : %s\n", (LPCTSTR)bstrSource );
		return FALSE;
	}

	if( !bUpdate )  //Create
	{
		CString strWhere;
	}

	return TRUE;
}

// static method
CTheme CTheme::CreateInst(CString strWhere)
{
	char			strSql[256];
	CString			strTableName;
	_RecordsetPtr   pThemeSet;
		
	FieldsPtr		pFields;
	FieldPtr		pField;
	
	_variant_t		vConn,vRowsAffected;
	_variant_t		vtYear;
	_variant_t		vtNumber;
	_variant_t		vtTheme, vtType;
	_variant_t		vtKind;

	CTheme		Theme;


	vConn = (IDispatch*)theApp.GetConnect();
	pThemeSet.CreateInstance(__uuidof(Recordset));

	try
	{
		strTableName.Format("Theme");

		switch(theApp.GetDBType())
		{
		case SQLSERVER_DB:
			sprintf(strSql,"select * from %s where %s",	strTableName, strWhere);
			break;
		case MSACCESS_DB:
		default:
			sprintf(strSql,"select * from %s where %s",	strTableName, strWhere);
			break;
		}
		
		pThemeSet->Open( strSql, vConn, adOpenStatic, adLockOptimistic, adCmdUnknown );

		int nYear;
		CString strNumber;
		CString strTheme;
		CString strType;
		CString strKind;

		if ( VARIANT_FALSE == pThemeSet->ADOEOF )
		{
			vtYear = pThemeSet->GetCollect( _variant_t("届") );
			vtYear.ChangeType( VT_I2 );
			nYear = vtYear.iVal;

			vtNumber = pThemeSet->GetCollect( _variant_t("学号") );
			if( vtNumber.vt != VT_NULL )
			{
				vtNumber.ChangeType( VT_BSTR );
				strNumber = vtNumber.bstrVal;
				strNumber.TrimRight();
			}
			else
				strNumber = "";

			vtTheme = pThemeSet->GetCollect( _variant_t("题目") );
			if( vtTheme.vt != VT_NULL )
			{
				vtTheme.ChangeType( VT_BSTR );
				strTheme = vtTheme.bstrVal;
				strTheme.TrimRight();
			}
			else
				strTheme = "";
			
			vtType = pThemeSet->GetCollect( _variant_t("类型") );
			if( vtType.vt != VT_NULL )
			{
				vtType.ChangeType( VT_BSTR );
				strType = vtType.bstrVal;
				strType.TrimRight();
			}
			else
				strType = "";
			
			vtKind = pThemeSet->GetCollect( _variant_t("题目性质") );
			if( vtKind.vt != VT_NULL )
			{
				vtKind.ChangeType( VT_BSTR );
				strKind = vtKind.bstrVal;
				strKind.TrimRight();
			}
			else
				strKind = "";

			Theme = CTheme(strNumber, nYear, strTheme, strType, strKind);
		}
		else
		{
			Theme = CTheme();
		}

		pThemeSet->Close();
	}
	catch( _com_error& ce )
	{
		_bstr_t bstrDescription( ce.Description() );
		_bstr_t bstrSource( ce.Source() );
		TRACE( "Description : %s\n", (LPCTSTR)bstrDescription );
		TRACE( "Source : %s\n", (LPCTSTR)bstrSource );
		return CTheme();
	}

	return Theme;
}

BOOL CTheme::Create(CTheme& theme)
{
	CString strWhere;
	strWhere.Format("学号='%s' and 届=%d", theme.GetNumber(), theme.GetYear());
	CTheme t = CTheme::CreateInst(strWhere);
	BOOL bUpdate = FALSE;
	if( t.GetNumber() == theme.GetNumber() && t.GetYear() == theme.GetYear() )
		bUpdate = TRUE;

	return theme.Create(bUpdate);
}

BOOL CTheme::Update(CTheme& theme)
{
	return theme.Create(TRUE);
}

BOOL CTheme::Delete(CTheme& theme)
{
	CString			strSQL;
	_variant_t		vRowsAffected;
	CString			strTableName;

	strTableName.Format("Theme");

	switch(theApp.GetDBType())
	{
	case MSACCESS_DB:
	default:
		strSQL.Format("delete * from %s where 届=%d and 学号='%s'",
					strTableName, theme.GetYear(), theme.GetNumber());
		break;
	case SQLSERVER_DB:
		strSQL.Format("delete * from %s where 届=%d and 学号='%s'",
					strTableName, theme.GetYear(), theme.GetNumber());
		break;
	}
	try
	{
		theApp.GetConnect()->Execute( (_bstr_t)strSQL, &vRowsAffected, adCmdText );

	}
	catch( _com_error& ce )
	{
		_bstr_t bstrDescription( ce.Description() );
		_bstr_t bstrSource( ce.Source() );
		TRACE( "HRESULT = 0x%08lx\n", ce.Error() );
		TRACE( "HRESULT description : %s\n", ce.ErrorMessage() );
		TRACE( "Description : %s\n", (LPCTSTR)bstrDescription );
		TRACE( "Source : %s\n", (LPCTSTR)bstrSource );
		return FALSE;
	}

	return TRUE;
}

⌨️ 快捷键说明

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