📄 theme.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( <ime );
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 + -