163 lines
3.3 KiB
C++
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_)
|