00001 #ifndef __FL_RECORD_DS_H__ 00002 #define __FL_RECORD_DS_H__ 00003 00004 #include <efltk/Fl_Map.h> 00005 #include <efltk/Fl_String.h> 00006 #include <efltk/Fl_Data_Source.h> 00007 #include <efltk/db/Fl_Query.h> 00008 #include <efltk/db/Fl_Database.h> 00009 #include <efltk/Fl_Dialog_DS.h> 00010 #include <efltk/Fl_Variant.h> 00011 00012 class FL_API Fl_Record_DS : public Fl_Dialog_DS { 00013 protected: 00014 Fl_String m_tableName; 00015 Fl_String m_keyField; 00016 Fl_Variant m_keyValue; 00017 bool m_queriesAreBuilt; 00018 Fl_Query *m_selectQuery; 00019 Fl_Query *m_updateQuery; 00020 Fl_Query *m_insertQuery; 00021 Fl_Query *m_saveQuery; 00022 int m_recordCount; 00023 bool m_forceInsert; 00024 00025 virtual bool build_queries(); 00026 00027 public: 00028 Fl_Record_DS(Fl_Database *db=NULL,Fl_String tableName="",Fl_String keyField=""); 00029 ~Fl_Record_DS(); 00030 00032 virtual unsigned record_count() const { return m_recordCount; } 00033 00035 void setup(Fl_Database *db,const Fl_String tableName,const Fl_String keyField); 00036 00038 virtual void database(Fl_Database *); 00039 Fl_Database *database() const; 00040 00041 void table(const Fl_String tname); 00042 Fl_String table() const { return m_tableName; } 00043 00044 void key_field(const Fl_String); 00045 Fl_String key_field() const { return m_keyField; } 00046 00047 void key_value(Fl_Variant); 00048 Fl_Variant key_value() const; 00049 00051 virtual bool load_data(); 00052 virtual bool save_data(); 00053 00057 void force_insert(bool fi=true) { m_forceInsert = fi; } 00058 }; 00059 00060 #endif