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