📄 adorecordset.cpp
字号:
count++;
MoveNext();
}
SetAbsolutePosition(pos);
}
return count;
}
catch (_com_error e)
{
TRACE(_T("Warning: GetRecordCount 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return -1;
}
}
/*========================================================================
Name: 获取当前记录集中字段数目
==========================================================================*/
long CAdoRecordSet::GetFieldsCount()
{
ASSERT(m_pRecordset != NULL);
try
{
return GetFields()->Count;
}
catch(_com_error e)
{
TRACE(_T("Warning: GetFieldsCount 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return -1;
}
}
/*========================================================================
Name: 指示通过查询返回 Recordset 的记录的最大数目.
==========================================================================*/
long CAdoRecordSet::GetMaxRecordCount()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->GetMaxRecords();
}
catch (_com_error e)
{
TRACE(_T("Warning: GetMaxRecordCount 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return -1;
}
}
BOOL CAdoRecordSet::SetMaxRecordCount(long count)
{
ASSERT(m_pRecordset != NULL);
try
{
m_pRecordset->PutMaxRecords(count);
return TRUE;
}
catch (_com_error e)
{
TRACE(_T("Warning: GetMaxRecordCount 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return FALSE;
}
}
/*========================================================================
Name: 指针是否在在记录集头
==========================================================================*/
BOOL CAdoRecordSet::IsBOF()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->adoBOF;
}
catch(_com_error e)
{
TRACE(_T("Warning: IsBOF 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return FALSE;
}
return FALSE;
}
/*========================================================================
Name: 指针是否在在记录集尾
==========================================================================*/
BOOL CAdoRecordSet::IsEOF()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->adoEOF;
}
catch (_com_error e)
{
TRACE(_T("Warning: IsEOF 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return FALSE;
}
}
EditModeEnum CAdoRecordSet::GetEditMode()
{
ASSERT(m_pRecordset != NULL);
try
{
if (m_pRecordset != NULL)
{
return m_pRecordset->GetEditMode();
}
}
catch (_com_error e)
{
TRACE(_T("Warning: UpdateBatch 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return adEditNone;
}
return adEditNone;
}
long CAdoRecordSet::GetPageCount()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->GetPageCount();
}
catch (_com_error &e)
{
TRACE(_T("Warning: GetPageCount 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return -1;
}
}
BOOL CAdoRecordSet::SetCacheSize(const long &lCacheSize)
{
ASSERT(m_pRecordset != NULL);
try
{
if (m_pRecordset != NULL && !(GetState() & adStateExecuting))
{
m_pRecordset->PutCacheSize(lCacheSize);
}
}
catch (const _com_error& e)
{
TRACE(_T("Warning: SetCacheSize方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return FALSE;
}
return TRUE;
}
long CAdoRecordSet::GetPageSize()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->GetPageSize();
}
catch (_com_error &e)
{
TRACE(_T("Warning: GetPageCount 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return -1;
}
}
/*========================================================================
name: 指定当前记录所在的页.
----------------------------------------------------------
returns: 置或返回从 1 到 Recordset 对象 (PageCount) 所含页数的长整型
值,或者返回以下常量.
[常量] [说明]
---------------------------------
adPosUnknown Recordset 为空,当前位置未知,或者提供者不支持 AbsolutePage 属性.
adPosBOF 当前记录指针位于 BOF(即 BOF 属性为 True).
adPosEOF 当前记录指针位于 EOF(即 EOF 属性为 True).
==========================================================================*/
BOOL CAdoRecordSet::SetAbsolutePage(int nPage)
{
ASSERT(m_pRecordset != NULL);
try
{
m_pRecordset->PutAbsolutePage((enum PositionEnum)nPage);
return TRUE;
}
catch(_com_error &e)
{
TRACE(_T("Warning: SetAbsolutePage 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return FALSE;
}
}
long CAdoRecordSet::GetAbsolutePage()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->GetAbsolutePage();
}
catch(_com_error &e)
{
TRACE(_T("Warning: GetAbsolutePage 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return -1;
}
}
/*========================================================================
name: 指定 Recordset 对象当前记录的序号位置.
----------------------------------------------------------
returns: 设置或返回从 1 到 Recordset 对象 (PageCount) 所含页数的长整
型值,或者返回以下常量.
[常量] [说明]
---------------------------------
adPosUnknown Recordset 为空,当前位置未知,或者提供者不支持 AbsolutePage 属性.
adPosBOF 当前记录指针位于 BOF(即 BOF 属性为 True).
adPosEOF 当前记录指针位于 EOF(即 EOF 属性为 True).
----------------------------------------------------------
Remarks: 使用 AbsolutePosition 属性可根据其在 Recordset 中的序号
位置移动到记录,或确定当前记录的序号位置. 提供者必须支持该属性的相应功
能才能使用该属性.
同 AbsolutePage 属性一样,AbsolutePosition 从 1 开始,并在当前记录
为 Recordset 中的第一个记录时等于 1. 从 RecordCount 属性可获得 Recordset
对象的总记录数.
设置 AbsolutePosition 属性时,即使该属性指向位于当前缓存中的记录,
ADO 也将使用以指定的记录开始的新记录组重新加载缓存. CacheSize 属性决定
该记录组的大小.
注意 不能将 AbsolutePosition 属性作为替代的记录编号使用. 删除前面
的记录时,给定记录的当前位置将发生改变. 如果 Recordset 对象被重新查询或
重新打开,则无法保证给定记录有相同的 AbsolutePosition. 书签仍然是保持和
返回给定位置的推荐方式,并且在所有类型的 Recordset 对象的定位时是唯一的
方式.
==========================================================================*/
BOOL CAdoRecordSet::SetAbsolutePosition(int nPosition)
{
ASSERT(m_pRecordset != NULL);
try
{
m_pRecordset->PutAbsolutePosition((enum PositionEnum)nPosition);
return TRUE;
}
catch(_com_error &e)
{
TRACE(_T("Warning: SetAbsolutePosition 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return FALSE;
}
}
long CAdoRecordSet::GetAbsolutePosition()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->GetAbsolutePosition();
}
catch(_com_error &e)
{
TRACE(_T("Warning: GetAbsolutePosition 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return -1;
}
}
BOOL CAdoRecordSet::SetCursorLocation(CursorLocationEnum CursorLocation)
{
ASSERT(m_pRecordset != NULL);
try
{
m_pRecordset->PutCursorLocation(CursorLocation);
return TRUE;
}
catch (_com_error e)
{
TRACE(_T("Warning: PutCursorLocation 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return FALSE;
}
}
CursorLocationEnum CAdoRecordSet::GetCursorLocation()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->GetCursorLocation();
}
catch (_com_error e)
{
TRACE(_T("Warning: GetCursorLocation 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return adUseNone;
}
}
BOOL CAdoRecordSet::SetCursorType(CursorTypeEnum CursorType)
{
ASSERT(m_pRecordset != NULL);
try
{
m_pRecordset->PutCursorType(CursorType);
return TRUE;
}
catch (_com_error e)
{
TRACE(_T("Warning: SetCursorType 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return FALSE;
}
}
CursorTypeEnum CAdoRecordSet::GetCursorType()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->GetCursorType();
}
catch (_com_error e)
{
TRACE(_T("Warning: GetCursorType 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return adOpenUnspecified;
}
}
/*========================================================================
Remarks: Recordset 对象包括 Field 对象组成的 Fields 集合. 每个Field
对象对应 Recordset 集中的一列.
==========================================================================*/
FieldsPtr CAdoRecordSet::GetFields()
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->GetFields();
}
catch (_com_error e)
{
TRACE(_T("Warning: GetFields 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return NULL;
}
return NULL;
}
/*========================================================================
Remarks: 取得指定列字段的字段名.
==========================================================================*/
CString CAdoRecordSet::GetFieldName(long lIndex)
{
ASSERT(m_pRecordset != NULL);
CString strFieldName;
try
{
strFieldName = LPCTSTR(m_pRecordset->Fields->GetItem(_variant_t(lIndex))->GetName());
}
catch (_com_error e)
{
TRACE(_T("Warning: GetFieldName 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
}
return strFieldName;
}
/*========================================================================
name: 取得 Field 对象一项或多项属性.
----------------------------------------------------------
returns: 对于 Field 对象, Attributes 属性为只读, 其值可能为以下任意
一个或多个 FieldAttributeEnum 值的和.
[常量] [说明]
-------------------------------------------
adFldMayDefer 指示字段被延迟, 即不从拥有整个记录的数据源检索
字段值, 仅在显式访问这些字段时才进行检索.
adFldUpdatable 指示可以写入该字段.
adFldUnknownUpdatable 指示提供者无法确定是否可以写入该字段.
adFldFixed 指示该字段包含定长数据.
adFldIsNullable 指示该字段接受 Null 值.
adFldMayBeNull 指示可以从该字段读取 Null 值.
adFldLong 指示该字段为长二进制字段. 并指示可以使用 AppendChunk
和 GetChunk 方法.
adFldRowID 指示字段包含持久的行标识符, 该标识符无法被写入
并且除了对行进行标识(如记录号、唯一标识符等)外不
存在有意义的值.
adFldRowVersion 指示该字段包含用来跟踪更新的某种时间或日期标记.
adFldCacheDeferred 指示提供者缓存了字段值, 并已完成随后对缓存的读取.
==========================================================================*/
long CAdoRecordSet::GetFieldAttributes(long lIndex)
{
ASSERT(m_pRecordset != NULL);
try
{
return m_pRecordset->Fields->GetItem(_variant_t(lIndex))->GetAttributes();
}
catch (_com_error e)
{
TRACE(_T("Warning: GetFieldAttributes 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -