📄 irecset.cpp
字号:
///////////////////////////////////////////////////////////////////////////////
//// Copyright(c) HangZhou Macrosoft Computer Communication Technology Co.,Ltd.
//// File Name : IRecset.cpp
//// Create : YunGui-Zhang
//// CreateDate :
//// Modify : QiYu
//// ModifyDate :
//// Description: Expand CVORecordset class,do with sevral data types,like INT,
//// SMALLINT,FLOAT etc..
//// Version :
////
///////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "FlightQuery.h"
#include "IRecset.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern CFlightQueryApp theApp;
//extern CVOConnection g_Conn;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CIRecordset::CIRecordset(LPCTSTR lpszTableName)
{
m_pRecord=new CVORecordset(theApp.m_Conn);
ASSERT(m_pRecord);
if(lpszTableName)
m_szTable=lpszTableName;
}
CIRecordset::~CIRecordset()
{
Close();
if(m_pRecord)
delete m_pRecord;
}
BOOL CIRecordset::Open(LPCTSTR pcszSource, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType)
{
m_szSQL.Empty();
if(m_pRecord==NULL) return FALSE;
if(pcszSource==NULL)
{
if(m_szFilter.GetLength()==0)
m_szSQL.Format(_T("SELECT %s FROM %s"),m_szFields,m_szTable);
else
m_szSQL.Format(_T("SELECT %s FROM %s WHERE %s"),m_szFields,m_szTable,m_szFilter);
if(m_szSort.GetLength()>0)
{
m_szSQL += _T(" ORDER BY ");
m_szSQL += m_szSort;
}
}
else
m_szSQL=pcszSource;
m_szFilter.Empty();
m_szSort.Empty();
m_pRecord->Open(m_szSQL,CursorType,LockType);
if(m_pRecord->IsOpen())
{
m_pRecord->MoveFirst();
return TRUE;
}
else
{
AfxMessageBox(_T("打开数据库失败。"));
}
return FALSE;
}
BOOL CIRecordset::InsertRecord(LPCTSTR lpszValues)
{
if(lpszValues==NULL)
return FALSE;
m_szSQL.Format(_T("INSERT INTO %s (%s) values (%s)"),
m_szTable,m_szFields,lpszValues);
if(!theApp.m_Conn.Execute(m_szSQL))
{
AfxMessageBox(m_szTable);
AfxMessageBox(m_szFields);
AfxMessageBox(lpszValues);
AfxMessageBox(m_szSQL);
return FALSE;
}
return TRUE;
}
void CIRecordset::Close()
{
if(m_pRecord && m_pRecord->IsOpen())
m_pRecord->Close();
}
/////////////////////////////////////////////////
BYTE CIRecordset::GetFieldValueBit(int iField,BOOL* pResult)
{
BYTE byValue;
BOOL bRet=TRUE;
VARIANT varRet;
varRet = m_pRecord->GetFieldValue(iField);
if(varRet.vt & VT_BYREF)
return FALSE;
if(varRet.vt==VT_UI1) byValue=varRet.bVal;
else if(varRet.vt==VT_BOOL) byValue=(BYTE)varRet.boolVal;
else bRet=FALSE;
if(pResult) *pResult=bRet;
return byValue;
}
int CIRecordset::GetFieldValueSmallInt(int iField,BOOL* pResult)
{
int iValue;
BOOL bRet=TRUE;
VARIANT varRet;
varRet = m_pRecord->GetFieldValue(iField);
if(varRet.vt==VT_UI1) iValue=(int)varRet.bVal;
else if(varRet.vt==VT_I2) iValue=varRet.iVal;
else if(varRet.vt==VT_I4) iValue=(int)varRet.lVal;
else bRet=FALSE;
if(pResult) *pResult=bRet;
return iValue;
}
long CIRecordset::GetFieldValueInt(int iField,BOOL* pResult)
{
long lValue;
BOOL bRet=TRUE;
VARIANT varRet;
varRet = m_pRecord->GetFieldValue(iField);
if(varRet.vt==VT_UI1) lValue=(long)varRet.bVal;
else if(varRet.vt==VT_I2) lValue=(long)varRet.iVal;
else if(varRet.vt==VT_I4) lValue=varRet.lVal;
else bRet=FALSE;
if(pResult) *pResult=bRet;
return lValue;
}
double CIRecordset::GetFieldValueFloat(int iField,BOOL* pResult)
{
double dblValue;
BOOL bRet=TRUE;
VARIANT varRet;
varRet = m_pRecord->GetFieldValue(iField);
if(varRet.vt==VT_R4) dblValue=(double)varRet.fltVal;
else if(varRet.vt==VT_R8) dblValue=varRet.dblVal;
else bRet=FALSE;
if(pResult) *pResult=bRet;
return dblValue;
}
CString CIRecordset::GetFieldValueText(int iField,BOOL* pResult)
{
BOOL bRet=TRUE;
VARIANT varRet;
COleVariant varValue;
CString szRet;
varRet = m_pRecord->GetFieldValue(iField);
if(varRet.vt==VT_BSTR)
{
varValue=varRet;
szRet = V_BSTRT( &varValue );//convert BSTR to CString
}
else if( varRet.vt==VT_NULL )
{
szRet = _T("");
}
else bRet=FALSE;
if(pResult) *pResult=bRet;
return szRet;
}
CTime CIRecordset::GetFieldValueDate(int iField,BOOL* pResult)
{
CTime timeRet;
BOOL bRet=TRUE;
VARIANT varRet;
varRet = m_pRecord->GetFieldValue(iField);
if(varRet.vt==VT_DATE)
{
COleDateTime oleTime(varRet.date);
timeRet=CTime(oleTime.GetYear(),oleTime.GetMonth(),oleTime.GetDay(),
oleTime.GetHour(),oleTime.GetMinute(),oleTime.GetSecond());
}
else if(varRet.vt==VT_NULL)
{
timeRet=CTime::GetCurrentTime();
}
else bRet=FALSE;
if(pResult) *pResult=bRet;
return timeRet;
}
COleDateTime CIRecordset::GetFieldValueDate2(int iField,BOOL* pResult)
{
COleDateTime timeRet;
BOOL bRet=TRUE;
VARIANT varRet;
varRet = m_pRecord->GetFieldValue(iField);
if(varRet.vt==VT_DATE)
{
COleDateTime oleTime(varRet.date);
timeRet= oleTime;
}
else if(varRet.vt==VT_NULL)
{
timeRet=COleDateTime::GetCurrentTime();
}
else bRet=FALSE;
if(pResult) *pResult=bRet;
return timeRet;
}
CString CIRecordset::DateToStr(CTime &time)
{
CString szRet,szYear;
szYear.Format(_T("%d"),time.GetYear());
szRet.Format(_T("#%d/%d/%s#"),time.GetMonth(),time.GetDay(),szYear.Right(2));
return szRet;
}
CString CIRecordset::DateToStr(COleDateTime &Date)
{
CString szRet,szYear;
szYear.Format(_T("%d"),Date.GetYear());
szRet.Format(_T("#%d/%d/%s %d:%d:%d#"),
Date.GetMonth(),
Date.GetDay(),
szYear.Right(2),
Date.GetHour(),
Date.GetMinute(),
Date.GetSecond());
return szRet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -