#ifndef __SQLSET_H
#define __SQLSET_H

#ifndef __RECSET_H
#include <recset.h>
#endif

///////////////////////////////////////////////////////////
// TSQL_recordset
///////////////////////////////////////////////////////////

class TSQL_recordset : public TRecordset
{
  TString _sql;

  TRecnotype _first_row, _pagesize, _items, _current_row;
  TArray _column;
  TArray _page;

protected:
  virtual void reset();
  void parsed_sql_text(TString& sql) const;

public: // TRecordset
  virtual void requery();
  virtual TRecnotype items() const;
  virtual bool move_to(TRecnotype pos);
  virtual TRecnotype current_row() const { return _current_row; }
  virtual unsigned int columns() const;
  virtual const TRecordset_column_info& column_info(unsigned int c) const;
  virtual const TVariant& get(unsigned int column) const;
  const TString& query_text() const { return _sql; }

public:
  void set(const char* sql);

  // Internal use only
  virtual int on_get_items(int argc, char** values, char** columns);
  virtual int on_get_rows(int argc, char** values);
  const TArray* row(TRecnotype n);

  TSQL_recordset(const char* sql);
  virtual ~TSQL_recordset() { }
};

#endif