18 #include "hk_column.h"
59 virtual void set_name(
const hk_string& n,
bool registerchange=
true);
60 virtual hk_string name(
void);
61 enum enum_tablemodes {mode_normal,mode_createtable,mode_altertable,mode_disabled,mode_insertrow,mode_deleterow,mode_unknown};
68 enum_tablemodes mode(
void);
74 void setmode_insertrow(
void);
83 void setmode_normal(
void);
89 void setmode_createtable(
void);
96 void setmode_altertable(
void);
109 bool alter_column(
const hk_string& col,
const hk_string* name=NULL,
hk_column::enum_columntype* newtype=NULL,
long* size=NULL,
const hk_string* defaultvalue=NULL,
const bool* primary=NULL,
const bool* notnull=NULL);
114 bool delete_column(
const hk_string& col);
119 bool create_table_now(
void);
125 bool alter_table_now(
void);
129 bool create_view_now(
void);
130 bool alter_view_now(
void);
139 virtual bool goto_row(
unsigned long r);
140 bool while_goto_row(
void)
const;
147 bool goto_first(
void);
153 bool goto_last(
void);
159 bool goto_next(
void);
165 bool goto_previous(
void);
169 bool goto_random(
void);
173 unsigned long row_position(
void);
177 unsigned long max_rows(
void);
188 bool set_accessmode(enum_accessmode);
189 enum_accessmode accessmode(
void)
const;
199 bool while_enabling(
void)
const;
204 bool while_disabling(
void)
const;
210 bool set_enabled(
bool e);
214 bool is_enabled(
void)
const;
219 bool is_readonly(
void)
const;
223 void set_readonly(
bool r);
229 list<hk_column*>* columns(
void);
230 list<hk_string>* columnnames(
void);
235 hk_column* column_by_name(
const hk_string& c);
244 hk_column* column_by_name(
const hk_string& c,
int colnumber);
250 int columnname_occurances(
const hk_string& colname);
266 bool set_sql(
const hk_string& s,
bool rawsql=
false,
bool registerchange=
true);
267 virtual bool set_query(
hk_qbe*,
bool registerchange=
true);
268 hk_string sql(
void)
const;
269 bool is_rawsql(
void);
273 hk_string backendsql(
void)
const;
279 list<hk_string> fields;
284 list<indexclass>* indices(
void);
285 bool index_exists(
const hk_string&);
290 bool drop_index(
const hk_string& i);
299 bool create_index(
const hk_string& name,
bool unique, list<hk_string>& fields);
304 bool alter_index(
const hk_string& name,
bool unique,list<hk_string>& fields);
308 enum enum_dependingmodes {depending_nohandle,depending_standard,depending_change,depending_delete,depending_changedelete};
322 enum_dependingmodes dependingmode(
void);
335 bool set_depending_on(
hk_datasource* d,
bool react_on_data_changes=
false,enum_dependingmodes mode=depending_standard);
338 void set_depending_on_is_left_join(
bool,
bool registerchange=
true);
339 bool depending_on_is_left_join(
void);
343 bool depending_on_react_on_data_changes(
void);
347 list<hk_string>* depending_on_thisfields(
void);
351 list<hk_string>* depending_on_masterfields(
void);
359 bool set_depending_on_presentationdatasource(
long d,
bool react_on_data_changes=
false,enum_dependingmodes mode=depending_standard,
bool registerchange=
true);
360 long depending_on_presentationdatasource(
void);
368 void add_depending_fields(
const hk_string& this_ds_field,
const hk_string& master_ds_field,
bool registerchange=
true);
372 void clear_depending_fields(
bool registerchange=
true);
379 void set_ignore_changed_data(
void);
380 bool ignore_changed_data(
void)
const;
390 void set_filter(
const hk_string& f,
bool registerchange=
true);
391 hk_string filter(
void);
396 void set_temporaryfilter(
const hk_string&f);
397 hk_string temporaryfilter(
void);
398 void set_use_temporaryfilter(
bool use);
399 bool use_temporaryfilter(
void);
403 void set_internalfilter(
const hk_string&f);
404 hk_string internalfilter(
void);
405 void set_use_internalfilter(
bool use);
406 bool use_internalfilter(
void);
414 void clear_filter(
bool registerchange=
true);
423 void set_sorting(
const hk_string& s,
bool registerchange=
true);
424 hk_string sorting(
void);
425 void set_temporarysorting(
const hk_string& s);
426 hk_string temporarysorting(
void);
427 void set_use_temporarysorting(
bool use);
428 bool use_temporarysorting(
void);
435 void clear_sorting(
bool registerchange=
true);
443 void set_automatic_data_update(
bool u);
444 bool is_automatic_data_update(
void);
446 void set_sqldelimiter(
const hk_string&);
452 p_datetimeformat=datetime;
456 hk_string dateformat(
void)
const {
return p_dateformat;}
457 hk_string datetimeformat(
void)
const {
return p_datetimeformat;}
458 hk_string timeformat(
void)
const {
return p_timeformat;}
496 void savedata(ostream& s,
bool saveall=
true);
500 void loaddata(xmlNodePtr definition,
bool loadsql=
true);
521 bool datasource_used(
void)
const;
527 virtual void dump_data() ;
536 virtual bool delete_rows(
unsigned long from,
unsigned long to,
bool check_depending_datasources=
true,
enum_interaction c=interactive);
541 void transaction_begin(hk_string name=
"");
546 void transaction_commit(hk_string name=
"");
552 void transaction_rollback(hk_string name=
"");
558 void set_blockvisiblesignals(
bool v);
559 bool blockvisiblesignals(
void);
564 void set_blockserversignals(
bool);
565 bool blockserversignals(
void);
570 void set_blockdatasourcesignals(
bool);
571 bool blockdatasourcesignals(
void);
575 void save_datasourcedefinition(ostream& s);
579 bool load_datasourcedefinition(xmlNodePtr definition,
bool use_xmltablename=
true ,
bool ask=
true);
584 void set_position(
int x,
int y,
bool registerchange=
true);
588 void set_size(
int width,
int height,
bool registerchange=
true);
591 int width(
void)
const;
592 int height(
void)
const;
594 int designwidth()
const;
595 int designheight()
const;
596 void automatic_position_datasource(
void);
598 list<hk_datasource*>* dependinglist(
void);
602 bool previous_enable_problems(
void)
const;
604 list <referentialclass>* referenceslist(
void);
609 bool drop_reference(
const hk_string&);
612 hk_string fieldorigin(
const hk_string&);
613 hk_string totalfieldorigin(
const hk_string&);
614 void reset_changed_data(
void);
615 bool has_changed(
void)
const;
619 hk_string systemcolumnname(
const hk_string& n);
621 static void set_enablefunction(voidfunction*,
long counter);
623 bool depending_on_datasource_deleterow_ok(
void);
624 bool depending_on_datasource_before_delete_row(
void);
625 bool depending_on_datasource_updaterow_ok(
void);
626 bool check_store_changed_data();
627 void set_progressdialog(progress_dialogtype* progressdialog);
628 progress_dialogtype* progressdialog(
void)
const;
629 void set_progressinterval(
int);
630 int progressinterval(
void)
const;
647 virtual void driver_specific_transaction_begin(hk_string);
648 virtual void driver_specific_transaction_commit(hk_string);
649 virtual void driver_specific_transaction_rollback(hk_string);
650 virtual unsigned long driver_specific_max_rows(
void){
return 0;}
651 virtual bool driver_specific_set_accessmode(enum_accessmode){
return true;}
652 virtual bool driver_specific_batch_enable(
void){
return false;}
653 virtual bool driver_specific_batch_disable(
void){
return false;}
654 virtual bool driver_specific_batch_goto_next(
void){
return false;}
655 virtual bool driver_specific_batch_goto_previous(
void){
return false;}
661 virtual bool driver_specific_disable(
void){
return false;}
669 virtual bool driver_specific_goto_row(
unsigned long r);
670 virtual hk_column* driver_specific_new_column(
void){
return NULL;}
671 virtual bool driver_specific_update_data(
void){
return true;}
672 virtual bool driver_specific_delete_data_at(
unsigned long){
return true;}
673 virtual bool driver_specific_insert_data(
void){
return true;}
674 virtual bool driver_specific_create_table_now(
void){
return false;}
675 virtual bool driver_specific_alter_table_now(
void){
return false;}
676 virtual bool driver_specific_create_view_now(
void);
677 virtual bool driver_specific_alter_view_now(
void);
679 virtual void driver_specific_before_drop_table(
void){}
680 virtual void filelist_changes(listtype t);
681 virtual list<indexclass>* driver_specific_indices(
void){
return NULL;}
682 virtual bool driver_specific_drop_index(
const hk_string& i);
683 virtual bool driver_specific_create_index(
const hk_string& name,
bool unique,list<hk_string>& fields);
684 virtual void before_connection_disconnects(
void);
690 virtual bool driver_specific_load_view(){
return false;}
691 virtual void driver_specific_create_viewsql(){}
693 virtual bool driver_specific_drop_reference(
const hk_string& );
694 virtual void driver_specific_referenceslist(
void);
697 void depending_on_datasource_row_change(
bool take_changed_data=
false);
698 void depending_on_datasource_data_has_changed(
void);
699 void depending_on_datasource_after_store_changed_data(
void);
700 void depending_on_datasource_insertmode(
void);
701 void depending_on_datasource_before_update_row(
void);
702 void depending_on_datasource_after_update_row(
void);
703 void reload_data(
bool take_changed_data=
false);
704 void create_actual_row_where_statement(
void);
705 hk_string create_row_where_statement_at(
unsigned long int position,
bool withwhere=
true);
706 void create_new_sql_statement(
bool take_changed_data=
false);
707 hk_string whole_datasource_where_statement(
bool take_changed_data=
false);
708 void print_sql(
void);
712 bool p_primary_key_used;
713 bool p_ignore_changed_data;
714 void clear_columnlist(
void);
715 void clear_modecolumnlists(
void);
716 void clear_visiblelist(
void);
717 void parse_sql(
void);
721 unsigned long p_counter;
723 list<hk_column*>* p_columns;
731 hk_string defaultvalue;
736 list<class_altercolumns> p_altercolumns;
737 list<hk_string> p_deletecolumns;
738 list<hk_column*> p_newcolumns;
739 list<hk_string> depending_this_fields;
740 list<hk_string> depending_master_fields;
752 fieldname=o.fieldname;
771 list <fieldoriginclass> fieldpart;
772 list <pair<hk_string,hk_string> > tablepart;
778 void parse_fieldpart(
void);
779 void parse_tablepart(
void);
782 hk_string p_actual_row_where;
783 bool p_automatic_data_update;
785 hk_string p_datetimeformat;
786 hk_string p_dateformat;
787 hk_string p_timeformat;
788 hk_string p_sql_delimiter;
791 bool p_depending_on_is_left_join;
794 void set_has_changed(
void);
795 void set_has_not_changed(
void);
796 hk_string delimit_identifier(
const hk_string&);
797 static voidfunction* p_enablefunction;
799 static long p_enablefunctioncounter;
800 void inform_before_row_change(
void);
801 void inform_visible_objects_batch_goto_next(
void);
802 void inform_visible_objects_batch_goto_previous(
void);
803 void inform_visible_objects_before_store_changed_data(
void);
804 void inform_visible_objects_after_store_changed_data(
void);
805 void inform_visible_objects_row_change(
void);
806 void inform_visible_objects_row_add(
void);
807 void inform_visible_objects_row_delete(
void);
808 void inform_visible_objects_before_insert_row(
void);
809 void inform_before_enable(
void);
810 void inform_before_disable(
void);
811 void inform_visible_objects_ds_disable(
void);
812 void inform_visible_objects_ds_enable(
void);
813 void inform_depending_ds_goto_row(
void);
814 void inform_depending_ds_store_data(
void);
815 void inform_depending_ds_data_has_changed(
void);
816 void inform_depending_ds_after_store_changed_data(
void);
817 void inform_depending_ds_before_update_row(
void);
818 void inform_depending_ds_after_update_row(
void);
819 void inform_depending_ds_disable(
void);
820 void inform_depending_ds_enable(
void);
821 void inform_depending_ds_insertmode(
void);
822 void inform_visible_objects_new_columns_created(
void);
823 void inform_visible_objects_before_columns_deleted(
void);
824 void inform_visible_objects_insertmode(
void);
825 void inform_when_table_structure_changes(
void);
826 void inform_when_indexlist_changes(
void);
827 void execute_visible_object_script_before_update(
void);
828 void execute_visible_object_script_after_update(
void);
829 void execute_visible_object_before_row_change(
void);
830 void execute_visible_object_after_row_change(
void);
831 void execute_visible_object_before_delete(
void);
832 void execute_visible_object_after_delete(
void);
833 void execute_visible_object_before_insert(
void);
834 void execute_visible_object_after_insert(
void);
837 list<hk_datasource*> p_dependinglist;
838 enum_tablemodes p_mode;
839 list<referentialclass> p_references;
841 bool is_newreferencename(
const hk_string&);
842 hk_string replace_dates(
const hk_string&);
845 hk_string p_original_sql;
846 unsigned long p_length;
848 list<hk_dsvisible*> p_visibles;
850 bool p_depending_on_datasource_react_on_changed_data;
851 void mark_visible_objects_as_not_handled(
void);
852 void set_columns_tableorigin(
void);
853 hk_string columntablepart(
const hk_string&);
enum_accessmode
Definition: hk_datasource.h:187
represents a particular database on the SQL Server
Definition: hk_database.h:48
void set_name(const hk_string &n)
Definition: hk_presentation.cpp:684
enum_columntype
Definition: hk_column.h:93
virtual void driver_specific_after_copy_table()
Definition: hk_datasource.h:689
base class for visible widgets without column data connection
Definition: hk_dsvisible.h:31
virtual list< hk_column * > * driver_specific_columns(void)
Definition: hk_datasource.h:668
void set_size(unsigned int x, unsigned int y, unsigned int w, unsigned int h, bool registerchange=true)
Definition: hk_visible.cpp:159
enum_interaction
Definition: hk_class.h:60
Definition: hk_datasource.cpp:31
Definition: hk_datasource.h:724
Definition: hk_definitions.h:226
virtual void loaddata(xmlNodePtr definition)
Definition: hk_presentation.cpp:306
void before_source_vanishes(void)
Definition: hk_presentation.cpp:452
virtual void savedata(ostream &s)
Definition: hk_presentation.cpp:277
enum_dependingmodes
Definition: hk_datasource.h:308
represents a resultquery or a table of a database.
Definition: hk_datasource.h:45
void set_datetimeformat(const hk_string &datetime, const hk_string &date, const hk_string &time)
Definition: hk_datasource.h:450
base class for multidatasource based classes like forms and reports
Definition: hk_presentation.h:40
Definition: hk_datasource.h:274
Definition: hk_datasource.h:761
long presentationnumber(void) const
Definition: hk_datasource.h:516
virtual bool driver_specific_enable(void)
Definition: hk_datasource.h:660
Base class for all kind of queries.
Definition: hk_data.h:26
Action query (i.e. ALTER TABLE) with no result.
Definition: hk_actionquery.h:29
Definition: hk_datasource.h:742
represents one column of a datasource.
Definition: hk_column.h:34
bool p_casesensitive
Definition: hk_datasource.h:642
void set_designsize(unsigned int width, unsigned int height, bool registerchange=true)
Definition: hk_presentation.cpp:480