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

📄 ado.cpp

📁 可以实现基本的管理功能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	
	vtIndex.vt = VT_I2;
	vtIndex.iVal = nIndex;
		
	vtFld = m_pRecordset->Fields->GetItem(vtIndex)->Value;
	return vtFld.vt == VT_EMPTY || vtFld.vt == VT_NULL;
}*/

/////////////////////////////////////////////////////////////////////////////
//获得记录数目
DWORD CADORecordset::GetRecordCount()
{
	DWORD nRows = 0;
	try{	
		nRows = m_pRecordset->GetRecordCount();
		//如果提供者不支持计算记录个数,则通过遍历计算
		if(nRows == -1)
		{
			nRows = 0;
			if(m_pRecordset->adoEOF != VARIANT_TRUE)
				m_pRecordset->MoveFirst();
			while(m_pRecordset->adoEOF != VARIANT_TRUE)
				{
					nRows++;
					m_pRecordset->MoveNext();
				}
			if(nRows > 0)
				m_pRecordset->MoveFirst();
		}
	}
	catch (_com_error& e)
		{
			dump_com_error(e);
			return -1;
		}	
	return nRows;
}

BOOL CADORecordset::IsOpen()
{
	try
	{
		if(m_pRecordset)
			return m_pRecordset->GetState() != adStateClosed;
	}
	catch (_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	} 
	return FALSE;
}

void CADORecordset::Close()
{	try
	{
		if (m_pRecordset != NULL && m_pRecordset->State != adStateClosed)
				m_pRecordset->Close();
	}
	catch (_com_error& e)
	{dump_com_error(e);}	
}

void CADORecordset::dump_com_error(_com_error &e)
{
	CString ErrorStr;
	
	
	_bstr_t bstrSource(e.Source());
	_bstr_t bstrDescription(e.Description());
	ErrorStr.Format( "CADORecordset Error\n\tCode = %08lx\n\tCode meaning = %s\n\tSource = %s\n\tDescription = %s\n",
		e.Error(), e.ErrorMessage(), (LPCSTR)bstrSource, (LPCSTR)bstrDescription );
	m_strLastError = _T("Query = " + GetQuery() + '\n' + ErrorStr);

	#ifdef _DEBUG
		AfxMessageBox( ErrorStr, MB_OK | MB_ICONERROR );
	#endif	
}


long CADORecordset::GetAbsolutePosition()
{
	ASSERT(m_pRecordset != NULL);	
	try
	{
		return m_pRecordset->GetAbsolutePosition();
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return -1;
	}
}

CString IntToStr(int nVal)
{
	CString strRet;
	char buff[10];
	
	itoa(nVal, buff, 10);
	strRet = buff;
	return strRet;
}

CString LongToStr(long lVal)
{
	CString strRet;
	char buff[20];
	
	ltoa(lVal, buff, 10);
	strRet = buff;
	return strRet;
}
/////////////////////////////////////////////////////////////////////////////
//添加记录、更新记录
BOOL CADORecordset::AddNew()
{
	try
	{
		if(m_pRecordset->AddNew() != S_OK)
			return FALSE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}
	return TRUE;
}

BOOL CADORecordset::Update()
{
	try
	{
		if(m_pRecordset->Update() != S_OK)
			return FALSE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}
	return TRUE;
}


BOOL CADORecordset::SetFieldValue(int nIndex, CString strValue)
{
	_variant_t vtFld;
	vtFld.vt = VT_BSTR;
	vtFld.bstrVal = _bstr_t(strValue);

	_variant_t vtIndex;	
	vtIndex.vt = VT_I2;
	vtIndex.iVal = nIndex;
	try
	{
		m_pRecordset->Fields->GetItem(vtIndex)->Value = _bstr_t(vtFld);//_bstr_t(strValue);
		return TRUE;
	}	
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}	
}

BOOL CADORecordset::SetFieldValue(LPCTSTR lpFieldName, CString strValue)
{
	_variant_t vtFld;
	vtFld.vt = VT_BSTR;
	vtFld.bstrVal = _bstr_t(strValue);
	try
	{
		m_pRecordset->Fields->GetItem(lpFieldName)->Value = _bstr_t(vtFld);
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}		
}

BOOL CADORecordset::SetFieldValue(int nIndex, int nValue)
{
	_variant_t vtFld;
	vtFld.vt = VT_I2;
	vtFld.iVal = nValue;
	
	_variant_t vtIndex;
	
	vtIndex.vt = VT_I2;
	vtIndex.iVal = nIndex;
	try
	{
		m_pRecordset->Fields->GetItem(vtIndex)->Value = vtFld;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}		
}

BOOL CADORecordset::SetFieldValue(LPCTSTR lpFieldName, int nValue)
{
	_variant_t vtFld;
	vtFld.vt = VT_I2;
	vtFld.iVal = nValue;
	try
	{
		m_pRecordset->Fields->GetItem(lpFieldName)->Value = vtFld;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}		
}

BOOL CADORecordset::SetFieldValue(int nIndex, long lValue)
{
	_variant_t vtFld;
	vtFld.vt = VT_I4;
	vtFld.lVal = lValue;
	
	_variant_t vtIndex;
	
	vtIndex.vt = VT_I2;
	vtIndex.iVal = nIndex;
	try
	{
		m_pRecordset->Fields->GetItem(vtIndex)->Value = vtFld;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}		
}

BOOL CADORecordset::SetFieldValue(LPCTSTR lpFieldName, long lValue)
{
	_variant_t vtFld;
	vtFld.vt = VT_I4;
	vtFld.lVal = lValue;
	try
	{
		m_pRecordset->Fields->GetItem(lpFieldName)->Value = vtFld;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}		
}

BOOL CADORecordset::SetFieldValue(int nIndex, double dblValue)
{
	_variant_t vtFld;
	vtFld.vt = VT_R8;
	vtFld.dblVal = dblValue;

	_variant_t vtIndex;
	
	vtIndex.vt = VT_I2;
	vtIndex.iVal = nIndex;
	try
	{
		m_pRecordset->Fields->GetItem(vtIndex)->Value = vtFld;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}		
}

BOOL CADORecordset::SetFieldValue(LPCTSTR lpFieldName, double dblValue)
{
	_variant_t vtFld;
	vtFld.vt = VT_R8;
	vtFld.dblVal = dblValue;
	try
	{
		m_pRecordset->Fields->GetItem(lpFieldName)->Value = vtFld;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}	
}

BOOL CADORecordset::SetFieldValue(int nIndex, COleDateTime time)
{
	_variant_t vtFld;
	vtFld.vt = VT_DATE;
	vtFld.date = time;
	
	_variant_t vtIndex;
	
	vtIndex.vt = VT_I2;
	vtIndex.iVal = nIndex;
	try
	{
		m_pRecordset->Fields->GetItem(vtIndex)->Value = vtFld;
		return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}	
}

BOOL CADORecordset::SetFieldValue(LPCTSTR lpFieldName, COleDateTime time)
{
	_variant_t vtFld;
	vtFld.vt = VT_DATE;
	vtFld.date = time;
	try
	{
		m_pRecordset->Fields->GetItem(lpFieldName)->Value = vtFld;
		return TRUE;	
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}
}

BOOL CADORecordset::SetBookmark()
{
	if(m_varBookmark.vt != VT_EMPTY)
	{
		m_pRecordset->Bookmark = m_varBookmark;
		return TRUE;
	}
	return FALSE;
}

void CADORecordset::GetBookmark()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		if (IsOpen())		
			m_varBookmark = m_pRecordset->GetBookmark();			
	}
	catch (_com_error e)
	{dump_com_error(e);}
}

BOOL CADORecordset::Delete()
{
	if(m_pRecordset->Delete(adAffectCurrent) != S_OK)
		return FALSE;

	if(m_pRecordset->Update() != S_OK)
		return FALSE;

	return TRUE;
}

BOOL CADORecordset::Find(LPCTSTR lpFind, int nSearchDirection)
{
	m_strFind = lpFind;
	m_nSearchDirection = nSearchDirection;
	ASSERT(!m_strFind.IsEmpty());
	try
	{
		if(m_nSearchDirection == searchForward)
		{
			m_pRecordset->Find(_bstr_t(m_strFind), 0, adSearchForward, "");
			if(!IsEOF())
			{
				//m_varBookFind = m_pRecordset->Bookmark;
				return TRUE;
			}
		}
		else if(m_nSearchDirection == searchBackward)
		{	
			m_pRecordset->Find(_bstr_t(m_strFind), 0, adSearchBackward, "");
			if(!IsBOF())
			{
				//m_varBookFind = m_pRecordset->Bookmark;
				return TRUE;
			}				
		}
		else
		{
			TRACE("Unknown parameter. %d", nSearchDirection);
			m_nSearchDirection = searchForward;
		}
		return FALSE;
	}
	catch(_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	} 	
}


BOOL CADORecordset::IsBOF()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return m_pRecordset->adoBOF;
	}
	catch(_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	} 
	return FALSE;
}

BOOL CADORecordset::IsEOF()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return ((m_pRecordset->adoEOF)==VARIANT_TRUE);
	}
	catch (_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	}
}

BOOL CADORecordset::MoveFirst()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		if (m_pRecordset != NULL) 
		{
			return SUCCEEDED(m_pRecordset->MoveFirst());
		}
	}
	catch (_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	} 
	return	FALSE;
}

BOOL CADORecordset::MoveNext()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		if (m_pRecordset != NULL) 
		{
			return SUCCEEDED(m_pRecordset->MoveNext());
		}
	}
	catch (_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	}
	return FALSE;
}
BOOL CADORecordset::MovePrevious()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		if (m_pRecordset != NULL) 
		{
			return SUCCEEDED(m_pRecordset->MovePrevious());
		}
	}
	catch (_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	}
	return FALSE;	
}
BOOL CADORecordset::MoveLast()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		if (m_pRecordset != NULL) 
		{
			return SUCCEEDED(m_pRecordset->MoveLast());
		}
	}
	catch (_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	} 
	return	FALSE;
}

BOOL CADORecordset::Requery(long Options)
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		if (m_pRecordset != NULL) 
		{
			return (m_pRecordset->Requery(Options) == S_OK);
		}
	}
	catch (_com_error e)
	{
		dump_com_error(e);
		return FALSE;
	} 
	return	FALSE; 
}

⌨️ 快捷键说明

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