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

📄 irecset.cpp

📁 EVC环境
💻 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 + -