#ifndef __ODBCRSET_H #define __ODBCRSET_H #ifndef __RECSET_H #include #endif class TODBC_recordset : public TRecordset { TString _dsn, _usr, _pwd, _dir; TString _sql; TRecnotype _first_row, _pagesize, _items, _current_row, _cursor_pos; TArray _page; TArray _column; bool _columns_loaded; protected: XVT_ODBC connection() const; void reset(); const TArray* row(TRecnotype n); public: virtual TRecnotype items() const; virtual unsigned int columns() const; virtual const TRecordset_column_info& column_info(unsigned int c) const; virtual bool move_to(TRecnotype pos); virtual TRecnotype current_row() const; virtual void requery(); virtual const TString& query_text() const; virtual const TString& driver_version() const; virtual const TVariant& get(unsigned int c) const; virtual const TVariant& get(const char* name) const; // Callbacks int on_get_items(int argc, char** values, char** columns); int on_get_columns(int argc, char** values, char** columns); int on_get_rows(int argc, char** values, char** columns); void set(const char* sql); long exec(const char* sql); bool connect(const char* dsn, const char* usr = "", const char* pwd = "", const char* dir = ""); TODBC_recordset(const char* sql); virtual ~TODBC_recordset(); }; #endif