hk_column Class Reference

represents one column of a datasource. More...

#include <hk_column.h>

Inheritance diagram for hk_column:

Inheritance graph
[legend]
Collaboration diagram for hk_column:

Collaboration graph
[legend]
List of all members.

Public Types

enum  enum_columntype {
  textcolumn, auto_inccolumn, smallintegercolumn, integercolumn,
  smallfloatingcolumn, floatingcolumn, datecolumn, datetimecolumn,
  timecolumn, timestampcolumn, binarycolumn, memocolumn,
  boolcolumn, othercolumn, columnedit, columnbool,
  columncombo
}

Public Member Functions

hk_string name (void) const
void set_name (const hk_string &n)
bool is_readonly (void) const
void set_readonly (bool r)
enum_columntype columntype (void) const
void set_columntype (enum_columntype f)
long size (void)
void set_size (long s)
hk_string columntype_name (void)
bool is_primary (void)
bool set_primary (bool i)
bool is_notnull (void)
hk_string get_delimiter (void)
bool set_notnull (bool i)
bool has_changed (void)
hk_string asstring (bool as_locale=true)
void set_asstring (const hk_string &s, bool registerchange=true)
void set_asstring (const hk_string &s, bool registerchange, bool is_locale)
const char * transformed_asstring (void)
const char * transformed_asstring_at (unsigned long position)
hk_string changed_data_asstring (bool as_locale=true)
void set_asbinary (const struct_raw_data *rd)
const struct_raw_dataasbinary (void)
const struct_raw_dataasbinary_at (unsigned long a)
void set_asbool (bool b)
bool asbool (void)
bool asbool_at (unsigned long a)
bool changed_data_asbool (void)
void set_asinteger (long int s, bool registerchange=true)
long int asinteger (void)
long int asinteger_at (unsigned long)
long int changed_data_asinteger (void)
void set_asdouble (double s, bool registerchange=true)
double asdouble (void)
double asdouble_at (unsigned long)
double changed_data_asdouble (void)
unsigned int fieldnumber (void)
hk_string asstring_at (unsigned long a, bool as_locale=true)
bool is_nullvalue (void)
bool changed_data_is_nullvalue (void)
bool is_nullvalue_at (unsigned long a)
void set_asnullvalue (bool registerchange=true)
long int count (unsigned int from, unsigned int to)
double sum (unsigned int from, unsigned int to)
long int count ()
double sum ()
unsigned int find (unsigned int from, unsigned int to, const hk_string &searchtext, bool wholephrase=false, bool casesensitive=false, bool backwards=false)
unsigned int find (const hk_string &searchtext, bool wholephrase=false, bool casesensitive=false, bool backwards=false)
bool is_findstring (unsigned int pos, const hk_string &searchtext, bool wholephrase=false, bool casesensitive=false)
const struct_raw_datachanged_data (void)
const struct_raw_datatransformed_changed_data (void)
void reset_changed_data (void)
void set_boolvalues (const hk_string &TRUESTRING, const hk_string &FALSESTRING)
hk_string bool_truevalue (void)
hk_string bool_falsevalue (void)
void set_dateformat (const hk_string &df)
hk_string dateformat (void) const
void set_timeformat (const hk_string &tf)
hk_string timeformat (void) const
void set_datetimeformat (const hk_string &dtf)
hk_string datetimeformat (void) const
bool save_to_file (const hk_string &filename)
bool load_from_file (const hk_string &filename)
void save_columndefinition (ostream &)
void load_columndefinition (xmlNodePtr)
hk_datasourcedatasource (void)
void set_allow_autoincwrite (bool r)
bool allow_autoincwrite (void)
bool in_definitionmode (void)
hk_string curval_asstring (void)
double curval_asdouble (void)
long int curval_asinteger (void)
bool curval_asbool (void)
void set_definitionmode (bool def)
hk_string tableorigin (void)

Protected Member Functions

 hk_column (hk_datasource *ds, const hk_string &TRUESTRING, const hk_string &FALSESTRING)
virtual bool driver_specific_asstring (const hk_string &d)
virtual hk_string driver_specific_asstring_at (unsigned long a)
virtual const char * driver_specific_transformed_asstring_at (unsigned long)
virtual const struct_raw_datadriver_specific_asbinary_at (unsigned long a)
virtual bool driver_specific_asbinary (const char *b)
virtual void driver_specific_asbool (bool b)
virtual bool driver_specific_asbool_at (unsigned long a)
virtual bool driver_specific_is_nullvalue_at (unsigned long)
virtual void data_has_changed (void)
void datavisible_add (hk_dsdatavisible *)
void datavisible_remove (hk_dsdatavisible *)

Protected Attributes

hk_datasourcep_datasource
unsigned int p_fieldnr
bool p_readonly
bool p_driver_specific_delimit_bool
unsigned long p_driver_specific_data_size
char * p_driver_specific_data
char * p_original_new_data
unsigned long p_original_new_data_size
hk_string p_sqltextdelimiter
hk_string p_sqlnulldelimiter
hk_string p_new_data_asstring
hk_string p_true
hk_string p_false
hk_string p_dateformat
hk_string p_timeformat
hk_string p_datetimeformat
hk_string p_driverspecific_dateformat
hk_string p_driverspecific_timeformat
hk_string p_driverspecific_datetimeformat
hk_string p_driverspecific_timestampformat
hk_string p_driverspecific_locale
int p_driverspecific_digits

Friends

class hk_datasource
class hk_dsdatavisible

Detailed Description

represents one column of a datasource.

Version:
Revision
1.54
Author:
Horst Knorr (hk_classes@knoda.org)
represents one column of a datasource. The data of the current row (set in hk_datasource) can be modified by using the functions set_asstring, set_asbool and set_asbinary and read by using the functions asstring, asbool and asbinary.

If the the datasource is in alter or create mode you can change the column definition by using the following functions: set_name, set_columntype, set_size, set_notnull, set_primary


Member Enumeration Documentation

enum hk_column::enum_columntype

used from hk_column to define of what type it is. For details how the different column types are interpreted look up the documentation of your database server and the database driver.

textcolumn : fixed length (usually in SQL defined as CHAR(size))

auto_inccolumn: if the databasedriver supports this columntype it will get a unique number automatically, whenever a new row will be added. Usually a readonly column

smallintegercolumn: a integer range of at least -32768 to 32767

integercolumn: a integer with the maximum range the database server can handle

smallfloatingcolumn: a floating column with a range of at least ????

floatingcolumn: a floating column with the maximum range the database server can handle

datecolumn: a column to keep the day,month and year of a date

datetimecolumn: a column to keep the day,month and year of a date PLUS the hour,minute and second of a time

timecolumn: a column to keep the hour,minute and second of a time.

binarycolumn: a column to store binary data of more or less any size.

memocolumn: a column to store text data of more or less any size.

boolcolumn: a column that has 2 states 'true' or 'false'

othercolumn: a column hk_classes does not know, but tries to handle as good as it can.


Member Function Documentation

hk_string hk_column::name ( void   )  const

name of the column

void hk_column::set_name ( const hk_string &  n  ) 

name of the column. Can just be edited if the datasource is in the mode ALTER or CREATE.

bool hk_column::is_readonly ( void   )  const

Returns:
true if data in this column can be changed. Always false if the datasource is a result_query.

void hk_column::set_readonly ( bool  r  ) 

If the datasource is of type ds_table you can allow or disallow data changes in this column.

hk_column::enum_columntype hk_column::columntype ( void   )  const

If you need the column type as a hk_string use columntype_name to translate.

Returns:
the type of the column of type enum_columntype.

void hk_column::set_columntype ( enum_columntype  f  ) 

can just be edited if the datasource is in the mode ALTER or CREATE.

long hk_column::size ( void   ) 

column length in bytes

void hk_column::set_size ( long  s  ) 

can just be edited if the datasource is in the mode ALTER or CREATE.

hk_string hk_column::columntype_name ( void   ) 

to translate the columntype into a hk_string.

bool hk_column::is_primary ( void   ) 

Returns:
true if this column is part of the primary key (primary index).

bool hk_column::set_primary ( bool  i  ) 

can only be edited if the datasource is in the mode ALTER or CREATE.

bool hk_column::is_notnull ( void   ) 

Returns:
true if this column has to have a value.

hk_string hk_column::get_delimiter ( void   ) 

Returns:
A string value representing the proper delimiter to use.

bool hk_column::set_notnull ( bool  i  ) 

can just be edited if the datasource is in the mode ALTER or CREATE.

bool hk_column::has_changed ( void   ) 

Returns:
true if the value of the column has changed and not yet saved in the database.

hk_string hk_column::asstring ( bool  as_locale = true  ) 

returns the value of this column, type converted to a hk_string. (All columntypes except BINARY).

Parameters:
as_locale if true numbers, times and dates will be displayed in the users localized version

void hk_column::set_asstring ( const hk_string &  s,
bool  registerchange = true 
)

Parameters:
s new value of the column.

const char * hk_column::transformed_asstring ( void   ) 

Columns can contain characters such as \0, \n, ' and so on. Some SQL Servers need to encode this data, so this function delivers the encoded and nonlocalized version.

hk_string hk_column::changed_data_asstring ( bool  as_locale = true  ) 

if new data was inserted with the method asstring and the changes have not yet been stored this method returns the changed data

void hk_column::set_asbinary ( const struct_raw_data rd  ) 

changes the value of the column in native form.(i.e. Binary data)

See also:
load_from_file

const struct_raw_data * hk_column::asbinary ( void   ) 

returns the value of the column as raw data.

See also:
save_to_file.

const struct_raw_data * hk_column::asbinary_at ( unsigned long  a  ) 

returns the value of the column at a specific rowposition as raw data.

void hk_column::set_asbool ( bool  b  ) 

Parameters:
b new value of the column.

bool hk_column::asbool ( void   ) 

returns the value of this column, type converted to a bool. (All columntypes except Binary).

void hk_column::set_asinteger ( long int  s,
bool  registerchange = true 
)

Parameters:
s new value of the column.

void hk_column::set_asdouble ( double  s,
bool  registerchange = true 
)

Parameters:
s new value of the column.

unsigned int hk_column::fieldnumber ( void   ) 

A temporarily given unique number of this row

hk_string hk_column::asstring_at ( unsigned long  a,
bool  as_locale = true 
)

returns the value at a specific position in the column. The row selector will not be changed, so the visible objects will not be informed. Use asstring in combination with hk_datasource::goto_row instead.

unsigned int hk_column::find ( unsigned int  from,
unsigned int  to,
const hk_string &  searchtext,
bool  wholephrase = false,
bool  casesensitive = false,
bool  backwards = false 
)

search for a specific value in a column

Parameters:
from number of the first row where the search has to start. First row is number 0
to number of the last row where the search has to end. Last row is number max_rows-1;
searchtext value as hk_string to look for
wholephrase if false the searchtext is part of columnvalue, if true it has to be an exact match
casesensitive if true a case sensitive compararation is used
backwards searching backwards, default is forward
Returns:
row number if found, max_rows()+1 if not found

unsigned int hk_column::find ( const hk_string &  searchtext,
bool  wholephrase = false,
bool  casesensitive = false,
bool  backwards = false 
)

search from the beginning to the end for searchtext

Parameters:
searchtext value as hk_string to look for
Returns:
row number if found, max_rows()+1 if not found

bool hk_column::is_findstring ( unsigned int  pos,
const hk_string &  searchtext,
bool  wholephrase = false,
bool  casesensitive = false 
)

an internal used function which compares the column value at row number "pos"

const struct_raw_data * hk_column::changed_data ( void   ) 

returns the new data set by a function like asstring(hk_string& n);

const struct_raw_data * hk_column::transformed_changed_data ( void   ) 

returns the new data set by a function like asstring(hk_string& n) in SQL server native form.

void hk_column::reset_changed_data ( void   ) 

set all changed data back to it's default value. Usually you donīt have to call this function

void hk_column::set_boolvalues ( const hk_string &  TRUESTRING,
const hk_string &  FALSESTRING 
)

you have the possibility to set the values which the column will accept as true and false. i.e. 0 and 1 for numeric columns or for text columns yes and no, or true and false.

void hk_column::set_dateformat ( const hk_string &  df  )  [inline]

if the column is of type date, time or datetime you can specify the wished format with this function. See hk_datetime for details.

void hk_column::set_timeformat ( const hk_string &  tf  )  [inline]

if the column is of type date, time or datetime you can specify the wished format with this function. See hk_datetime for details.

void hk_column::set_datetimeformat ( const hk_string &  dtf  )  [inline]

if the column is of type date, time or datetime you can specify the wished format with this function. See hk_datetime for details.

bool hk_column::save_to_file ( const hk_string &  filename  ) 

save the value of this column in a file. Very useful for binary-columns

bool hk_column::load_from_file ( const hk_string &  filename  ) 

changes the value of the column with the content of the file"filename". Very useful for binary columns.

void hk_column::set_allow_autoincwrite ( bool  r  ) 

a column of type autoinc is usually readonly. if allow_autoincwrite is set to true it will be writeable if the database driver supports it

bool hk_column::in_definitionmode ( void   ) 

data type, name and some other metadata can only be changed if the datasource is either in create_mode or alter_mode (or while the datasource enables and automatically creates columns)

Returns:
true if metadata can be modified, else false

hk_string hk_column::curval_asstring ( void   ) 

returns the current value as a string. The difference to asstring is, that it will return the changed_data if the current data was changed by setting the data with e.g. set_asstring()

double hk_column::curval_asdouble ( void   ) 

returns the current value as a floating point number . The difference to asdouble is, that it will return the changed_data if the current data was changed by setting the data with e.g. set_asdouble()

long int hk_column::curval_asinteger ( void   ) 

returns the current value as a integer. The difference to asinteger is, that it will return the changed_data if the current data was changed by setting the data with e.g. set_asinteger()

bool hk_column::curval_asbool ( void   ) 

returns the current value as a boolean value. The difference to asbool is, that it will return the changed_data if the current data was changed by setting the data with e.g. set_asbool()


The documentation for this class was generated from the following files:
Generated on Tue Nov 28 02:48:13 2006 for Databaseconnectionclasses by  doxygen 1.5.0