?? 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 + -