110 lines
2.1 KiB
C++
110 lines
2.1 KiB
C++
#if !defined(_DBFMEMCURSORSET_H__INCLUDED_)
|
|
#define _DBFMEMCURSORSET_H__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "DBFRecordset.h"
|
|
|
|
class CDBFMemCursorset : public CDBFRecordset
|
|
{
|
|
DECLARE_DYNAMIC(CDBFMemCursorset)
|
|
|
|
// Constructor
|
|
public:
|
|
CDBFMemCursorset(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();
|
|
|
|
long GetRecordCount();
|
|
|
|
protected:
|
|
DBF_HEAD m_DBFHead;
|
|
|
|
long m_nCurCursorRecN;
|
|
BOOL m_bBOF;
|
|
BOOL m_bEOF;
|
|
|
|
// Operations
|
|
public:
|
|
// Cursor operations
|
|
void MoveNext();
|
|
void MovePrev();
|
|
void MoveFirst();
|
|
void MoveLast();
|
|
void Move(long lOffsetRec);
|
|
|
|
|
|
long GetAbsolutePosition();
|
|
void SetAbsolutePosition(long lPosition);
|
|
|
|
// edit buffer operations
|
|
virtual void AddNew();
|
|
virtual void Edit();
|
|
|
|
virtual void Update();
|
|
virtual void CancelUpdate();
|
|
|
|
virtual void Delete();
|
|
virtual void Undelete();
|
|
virtual void Remove();
|
|
|
|
// Recordset operations
|
|
void Requery();
|
|
BOOL Save();
|
|
|
|
void SetDelete(BOOL bHideDeleteRec = TRUE);
|
|
BOOL GetDelete();
|
|
|
|
void SetFilter(BOOL (FAR * lpfnIsInclude) (DBF_CHAR*, CDBFFields* pDBFFields));
|
|
|
|
void SortByField(int nIndex, BOOL bDesc = FALSE);
|
|
void SortByField(const char* lpszName, BOOL bDesc = FALSE);
|
|
|
|
// Implementation
|
|
public:
|
|
virtual ~CDBFMemCursorset();
|
|
|
|
#ifdef _DEBUG
|
|
virtual void AssertValid() const;
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
#endif
|
|
|
|
|
|
protected:
|
|
virtual void ThrowDBFException(long nError = NO_TG_DBF_ERROR);
|
|
|
|
private:
|
|
|
|
DBF_CHAR* GetRecord(long lRecNumber);
|
|
void GetRecord(long lRecNumber, DBF_CHAR* lpBuffer);
|
|
void SetRecord(long lRecNumber, const DBF_CHAR* lpBuffer);
|
|
|
|
void qsort (int from, int to);
|
|
int compare(const void *elem1, const void *elem2 );
|
|
|
|
DBF_UCHAR* m_pTableData;
|
|
CPtrArray m_RecPtr;
|
|
CPtrArray m_NewRecPtr;
|
|
int m_nSortedField;
|
|
BOOL m_bDesc;
|
|
BOOL m_bShowDeletedRec;
|
|
DBF_CHAR* m_pEditRec;
|
|
DBF_LONG m_lLoadRecord;
|
|
|
|
BOOL (FAR * m_lpfnIsInclude) (DBF_CHAR*, CDBFFields* pDBFFields);
|
|
};
|
|
|
|
//{{AFX_INSERT_LOCATION}}
|
|
#endif // !defined(_DBFMEMCURSORSET_H__INCLUDED_)
|