#ifndef __ODBCREAD_H
#define __ODBCREAD_H

#include <afxdb.h>

class ODBCRead: public CDatabase {
    // Data members
private:
    CString       m_strTable;
    CString       m_strColumn;
    CString       m_strCondition;
    CString       m_strSQL;
    CString       m_strCountRecords;
    CDatabase     m_database;
    // Simple error-handling mechanism
    unsigned int  NUM_ERRS, ERR_DATA_TYPE, ERR_NUM_RECORDS, ERR_INTERNAL;
    CString*      m_ErrorMessage;

protected:
    CString       m_strFile;
    CString       m_strDriver;
    CString       m_strConnect;

public:
    long          n;    // Number of data
    long          m;    // Number of variables
    double*       data; // Array of n * m data values
    bool          fail; // Flag that if true warns of unsuccessful call
   
    // Member functions
private:
    long          countRecords(void);

protected:
    void          read(void);
    virtual void  connectString(void) = 0;

public:
    void          info(bool always = false); 
    // Constructor
    ODBCRead(CString strFile, CString strTable, CString strColumn, CString strCondition);
    // Destructor
    ~ODBCRead(void);
};

#include "ODBCDSN.h"
#include "ODBCDSNless.h"

#endif // __ODBCREAD_H
