|
|
#ifndef _ADSDATASOURCE_H_
#define _ADSDATASOURCE_H_
//#define ROWS 10L
#define ROWS 1L
typedef struct _tagSEARCHPREF { TCHAR szSource [ MAX_PATH ]; TCHAR szQuery [ 2048 ]; TCHAR szAttributes [ MAX_PATH ]; TCHAR szScope [ MAX_PATH ]; TCHAR szUserName [ 2 * MAX_PATH ]; TCHAR szPassword [ MAX_PATH ]; BOOL bEncryptPassword; BOOL bUseSQL; int nAsynchronous; int nDerefAliases; int nSizeLimit; int nTimeLimit; int nAttributesOnly; int nScope; int nTimeOut; int nPageSize; int nChaseReferrals; } SEARCHPREF;
class CADsDataSource: public CObject { public: CADsDataSource( ); ~CADsDataSource( );
public: /*void SetQueryParameters( CString& strSource,
CString& strQuery, CString& strAttributes, CString& strScope, CString& strUserName, CString& strPassword, BOOL bEncryptPassword, BOOL bUseSQL );*/
void SetQueryParameters( SEARCHPREF* pSerachPref );
virtual int GetColumnsCount ( int nRow ); virtual BOOL GetValue ( int nRow, int nColumn, CString& ); virtual BOOL GetValue ( int nRow, CString& strColumn, CString& ); virtual BOOL GetADsPath ( int nRow, CString& ); virtual BOOL GetColumnText ( int nRow, int nColumn, CString& ); BOOL Refresh ( void ); virtual BOOL RunTheQuery ( void );
protected: DBORDINAL m_nColumnsCount; int m_nAddOne;
BOOL m_bNoQuery; BOOL m_bNoMoreData;
int m_nFirstRow; int m_nLastRow; int m_nCurrentRow;
ULONG m_cRows; ULONG m_cColumns; CString m_strAttributes;
/*CString m_strSource;
CString m_strQuery; CString m_strScope; CString m_strPassword; CString m_strUserName; BOOL m_bEncryptPassword; BOOL m_bUseSQL;*/
CStringArray m_ADsPath; SEARCHPREF* m_pSearchPref; };
/*typedef struct tagData {
void *obValue; DATE dateValue; ULONG obLength; LARGE_INTEGER aLargeInteger; ULONG status; } Data;*/
typedef struct tagData { union { void *obValue; double obValue2; }; ULONG obLength; ULONG status; } Data;
class CADsOleDBDataSource: public CADsDataSource { public: CADsOleDBDataSource( ); ~CADsOleDBDataSource( );
public: HRESULT SetQueryCredentials( IDBInitialize* pInit, ICommandText* pCommand );
virtual int GetColumnsCount ( int nRow ); virtual BOOL GetValue ( int nRow, int nColumn, CString& ); virtual BOOL GetADsPath ( int nRow, CString& ); virtual BOOL GetColumnText ( int nRow, int nColumn, CString& ); virtual BOOL RunTheQuery ( void );
private: void DestroyInternalData ( void ); BOOL AdvanceCursor ( void ); BOOL CreateAccessorHelp ( void ); BOOL BringRowInBuffer ( int nRow ); CString ExtractData ( int ); void ReadADsPath ( void );
private: Data* m_pData;
IRowset* m_pIRowset; IMalloc* m_pIMalloc; IAccessor* m_pAccessor; IColumnsInfo* m_pIColsInfo; HROW* m_hRows;
HACCESSOR m_hAccessor; DBCOLUMNINFO* m_prgColInfo; DBBINDSTATUS* m_pBindStatus; OLECHAR* m_szColNames; };
class CADsSearchDataSource: public CADsDataSource { public: CADsSearchDataSource( ); ~CADsSearchDataSource( );
public: virtual int GetColumnsCount ( int nRow ); virtual BOOL GetValue ( int nRow, int nColumn, CString& ); virtual BOOL GetValue ( int nRow, CString& rColumn, CString& ); virtual BOOL GetADsPath ( int nRow, CString& ); virtual BOOL GetColumnText ( int nRow, int nColumn, CString& ); virtual BOOL RunTheQuery ( void );
private: void DestroyInternalData ( void ); HRESULT CreateSearchInterface( ); BOOL BringRowInBuffer ( int nRow ); BOOL ReadColumnNames ( int nRow ); HRESULT SetQueryPreferences ( ); HRESULT SetSearchPreferences ( ); HRESULT SetAttributesName ( ); void ReadADsPath ( void );
private: IDirectorySearch* m_pSearch; ADS_SEARCH_HANDLE m_hSearch; CStringArray m_strColumns; /*BOOL m_bAsynchronous; //ADS_SEARCHPREF_ASYNCHRONOUS
BOOL m_bDerefAliases; //ADS_SEARCHPREF_DEREF_ALIASES
int m_nSizeLimit; //ADS_SEARCHPREF_SIZE_LIMIT
int m_nTimeLimit; //ADS_SEARCHPREF_TIME_LIMIT
BOOL m_bAttributesOnly; //ADS_SEARCHPREF_ATTRIBTYPES_ONLY
CString m_strScope; //ADS_SEARCHPREF_SEARCH_SCOPE
int m_nTimeOut; //ADS_SEARCHPREF_TIMEOUT
int m_nPageSize; //ADS_SEARCHPREF_PAGESIZE*/
};
#endif
|