Files correlati : Ricompilazione Demo : [ ] Commento : Riportate le patch fino alla 172 git-svn-id: svn://10.65.10.50/trunk@12526 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			173 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#ifndef __RECORDSET_H
 | 
						|
#define __RECORDSET_H
 | 
						|
 | 
						|
#ifndef __ISAM_H
 | 
						|
#include <isam.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __SHEET_H
 | 
						|
#include <sheet.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __VARIANT_H
 | 
						|
#include <variant.h>
 | 
						|
#endif
 | 
						|
 | 
						|
struct TRecordset_column_info : public TObject
 | 
						|
{
 | 
						|
  TString _name;   // Table.Column
 | 
						|
  int _width;
 | 
						|
  TFieldtypes _type;
 | 
						|
};
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TRecordset
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
enum TRecordsetExportFormat { fmt_unknown, fmt_html, fmt_text, fmt_silk, fmt_campo };
 | 
						|
 | 
						|
class TRecordset : public TObject
 | 
						|
{
 | 
						|
  TAssoc_array _var;
 | 
						|
  TString_array _varnames;
 | 
						|
 | 
						|
protected:
 | 
						|
  bool save_as_html(const char* path);
 | 
						|
  bool save_as_silk(const char* path);
 | 
						|
  bool save_as_text(const char* path);
 | 
						|
  bool save_as_campo(const char* path);
 | 
						|
  
 | 
						|
  void find_and_reset_vars();
 | 
						|
  void parsed_text(TString& sql) const;
 | 
						|
 | 
						|
public: // Absolutely needed methods
 | 
						|
  virtual TRecnotype items() const pure;
 | 
						|
  virtual bool move_to(TRecnotype pos) pure;
 | 
						|
  virtual TRecnotype current_row() const pure;
 | 
						|
 | 
						|
  virtual bool move_first() { return move_to(0); }
 | 
						|
  virtual bool move_prev() { return move_to(current_row()-1); }
 | 
						|
  virtual bool move_next() { return move_to(current_row()+1); }
 | 
						|
  virtual bool move_last() { return move_to(items()-1); }
 | 
						|
  virtual bool bof() const { return current_row() <= 0; }
 | 
						|
  virtual bool eof() const { return current_row() >= items(); }
 | 
						|
  
 | 
						|
  virtual unsigned int columns() const pure;
 | 
						|
  virtual const TRecordset_column_info& column_info(unsigned int column) const pure;
 | 
						|
  virtual const TVariant& get(unsigned int column) const pure;
 | 
						|
 | 
						|
  virtual const TString_array& variables() const { return _varnames; }
 | 
						|
  virtual const TVariant& get_var(const char* name) const;
 | 
						|
  virtual bool set_var(const char* name, const TVariant& var, bool create = false);
 | 
						|
  virtual bool ask_variables(bool all);
 | 
						|
 | 
						|
  virtual const TString& query_text() const; 
 | 
						|
  virtual int find_column(const char* column_name) const;
 | 
						|
  virtual const TVariant& get(const char* column_name) const;
 | 
						|
  virtual const TToken_string& sheet_head() const;
 | 
						|
 | 
						|
  virtual bool save_as(const char* path, TRecordsetExportFormat fmt = fmt_unknown);
 | 
						|
  virtual ~TRecordset() { }
 | 
						|
};
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TSQL_recordset
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TSQL_recordset : public TRecordset
 | 
						|
{
 | 
						|
  TString _sql;
 | 
						|
 | 
						|
  TRecnotype _first_row, _pagesize, _items, _current_row;
 | 
						|
  TArray _column;
 | 
						|
  TArray _page;
 | 
						|
 | 
						|
protected:
 | 
						|
  void reset();
 | 
						|
  void parsed_sql_text(TString& sql) const;
 | 
						|
 | 
						|
public: // TRecordset
 | 
						|
  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;
 | 
						|
  virtual bool set_var(const char* name, const TVariant& var, bool create = false);
 | 
						|
  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, char** columns);
 | 
						|
  const TArray* row(TRecnotype n);
 | 
						|
 | 
						|
  TSQL_recordset(const char* sql);
 | 
						|
  virtual ~TSQL_recordset() { }
 | 
						|
};
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TISAM_recordset
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TISAM_recordset : public TRecordset
 | 
						|
{
 | 
						|
  TString _use;
 | 
						|
  
 | 
						|
  TRelation* _relation;
 | 
						|
  TCursor* _cursor;
 | 
						|
  TArray _column;     // Column infos
 | 
						|
  
 | 
						|
protected:
 | 
						|
  TCursor* cursor() const;
 | 
						|
  TRelation* relation() const;
 | 
						|
 | 
						|
  void reset();
 | 
						|
  TVariant& get_tmp_var() const;
 | 
						|
  virtual const TVariant& get(int logic, const char* field) const;
 | 
						|
 | 
						|
public:
 | 
						|
  void set(const char* use);
 | 
						|
  virtual TRecnotype items() const;
 | 
						|
  virtual bool move_to(TRecnotype pos);
 | 
						|
  virtual TRecnotype current_row() const;
 | 
						|
  virtual unsigned int columns() const;
 | 
						|
  virtual const TRecordset_column_info& column_info(unsigned int c) const;
 | 
						|
  virtual const TVariant& get(unsigned int column) const;
 | 
						|
  virtual const TVariant& get(const char* column_name) const;
 | 
						|
  virtual bool set_var(const char* name, const TVariant& var, bool create = false);
 | 
						|
  virtual const TString& query_text() const { return _use; }
 | 
						|
 | 
						|
  TISAM_recordset(const char* use);
 | 
						|
  virtual ~TISAM_recordset();
 | 
						|
};
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TRecordset_sheet
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TRecordset_sheet : public TSheet
 | 
						|
{
 | 
						|
  TRecordset& _query;
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual void get_row(long r, TToken_string& row);
 | 
						|
  virtual long get_items() const;
 | 
						|
 | 
						|
public:
 | 
						|
  TRecordset_sheet(TRecordset& sql);
 | 
						|
};
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// Utility
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
bool select_custom_file(TFilename& path, const char* ext);
 | 
						|
const TString& logic2table(int logic_num);
 | 
						|
int table2logic(const TString& name);
 | 
						|
 | 
						|
#endif
 | 
						|
 |