Files
envi-code/SourceCode/Code2026/Dimension/DBFRecordset.h
T
2026-09-28 15:28:50 +08:00

163 lines
3.3 KiB
C++

#if !defined(_DBFRECORDSET_H__INCLUDED_)
#define _DBFRECORDSET_H__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "DBFTableDef.h"
namespace DbfUtility
{
enum LockModeEnum
{
LockPessimistic = 1,
LockOptimistic = 2
};
enum LockTypeEnum
{
NoLock = 0,
LockDBase = 1,
LockClipper = 2,
LockFoxpro = 3
};
enum EditModeEnum
{
noMode,
edit,
addnew
};
}
// CDBFRecordset - the result of a query or base table browse
class CDBFRecordset : public CObject
{
DECLARE_DYNAMIC(CDBFRecordset)
// Constructor
public:
CDBFRecordset(CDBFTableDef* pDBFTable = NULL);
BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlag = TG_DBF_USE_SHARED);
void Close();
// Attributes
public:
BOOL IsOpen() const;
BOOL IsBOF() const;
BOOL IsEOF() const;
BOOL IsDeleted() const;
CTDbfString GetName();
CTDbfString GetDBFilePath();
CTime GetDateCreated();
CTime GetDateLastUpdated();
long GetRecordCount();
// Operations
public:
// Cursor operations
void MoveNext();
void MovePrev();
void MoveFirst();
void MoveLast();
void Move(long lRecNumber);
long GetAbsolutePosition();
void SetAbsolutePosition(long lOffsetRec);
// edit buffer operations
virtual void AddNew();
virtual void Edit();
virtual void Update();
virtual void CancelUpdate();
virtual void Delete();
virtual void Undelete();
// locking
BOOL LockRecord();
BOOL UnlockRecord();
// field operations
virtual COleVariant GetFieldValue(LPCTSTR lpszName);
virtual COleVariant GetFieldValue(int nIndex);
virtual long GetFieldValue(LPCTSTR lpszName,CString& sVal);
virtual long GetFieldValue(LPCTSTR lpszName,double& dVal);
virtual long GetFieldValue(LPCTSTR lpszName,float& dVal);
virtual long GetFieldValue(LPCTSTR lpszName,int& nVal);
virtual long GetFieldValue(int nIndex,CTDbfString& sVal);
virtual long GetFieldValue(int nIndex,double& dVal);
virtual long GetFieldValue(int nIndex,int& nVal);
virtual long GetFieldValue(const char* lpszName, COleVariant& varValue);
virtual long GetFieldValue(int nIndex, COleVariant& varValue);
virtual void SetFieldValue(const char* lpszName, const COleVariant& varValue);
virtual void SetFieldValue(int nIndex, const COleVariant& varValue);
virtual void SetFieldValue(LPCTSTR lpszName,LPCTSTR pszVal);
virtual void SetFieldValue(LPCTSTR lpszName,double dVal);
virtual void SetFieldValue(LPCTSTR lpszName,int nVal);
virtual void SetFieldValue(int nIndex,const char* pszVal);
virtual void SetFieldValue(int nIndex,double dVal);
virtual void SetFieldValue(int nIndex,int nVal);
// Recordset operations
// virtual void Requery();
short GetFieldCount();
// Overridables
public:
virtual CString GetDefaultDBName();
// for recordset field exchange
// virtual void DoFieldExchange(CDBFFieldExchange* pFX);
// Implementation
public:
BOOL ChangeOpenFlag(UINT nNewFlag);
virtual ~CDBFRecordset();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
CDBFTableDef* m_pTableDef;
CDBFFields m_DBFFields;
protected:
int m_nOpenType;
BOOL m_bBOF;
BOOL m_bEOF;
long m_nCurTableRecN;
UINT m_nLockMode;
UINT m_nLockType;
UINT m_nEditMode;
virtual void ThrowDBFException(long nError = NO_TG_DBF_ERROR);
BOOL FormatString(const COleVariant& varValue,CTDbfString& Val);
private:
DBF_UCHAR* m_pData;
};
//{{AFX_INSERT_LOCATION}}
#endif // !defined(_DBFRECORDSET_H__INCLUDED_)