Patch level : 12.00 nopatch

Files correlati     :
Commento            :
Migliorate le get tipizzate dei report
This commit is contained in:
Alessandro Bonazzi 2023-04-12 09:37:41 +02:00
parent f56d66acc5
commit 656929078c
2 changed files with 71 additions and 9 deletions

View File

@ -572,7 +572,7 @@ class TDummy_recordset : public TRecordset
virtual void requery() {}
virtual unsigned int columns() const { return 0; }
virtual const TRecordset_column_info& column_info(unsigned int column) const { return *((TRecordset_column_info*) nullptr); }
virtual const TVariant& get(unsigned int column) const { return TVariant(); }
virtual const TVariant& get(unsigned int column) const { return get_tmp_var(); }
public:
@ -686,6 +686,66 @@ const TString& TRecordset::get_string_zerofilled(const char* field, const int ze
return get_string(field);;
}
const TString& TRecordset::get_string(const char* field) const
{
int col = find_column(field);
if (col < 0)
return get(field).as_string();
else
return get(find_column(field)).as_string();
};
int TRecordset::get_int(const char* field) const
{
int col = find_column(field);
if (col < 0)
return get(field).as_int();
else
return get(find_column(field)).as_int();
};
long TRecordset::get_long(const char* field) const
{
int col = find_column(field);
if (col < 0)
return get(field).as_int();
else
return get(find_column(field)).as_int();
};
bool TRecordset::get_bool(const char* field) const
{
int col = find_column(field);
if (col < 0)
return get(field).as_bool();
else
return get(find_column(field)).as_bool();
};
real TRecordset::get_real(const char* field) const
{
int col = find_column(field);
if (col < 0)
return get(field).as_real();
else
return get(find_column(field)).as_real();
};
TDate TRecordset::get_date(const char* field) const
{
int col = find_column(field);
if (col < 0)
return get(field).as_date();
else
return get(find_column(field)).as_date();
};
const TVariant& TRecordset::get_var(const char* name) const
{
const TVariant* var = (const TVariant*)_var.objptr(name);
@ -1040,7 +1100,7 @@ bool select_custom_file(TFilename& path, const char* ext, const char* library)
path = sheet.row(-1).get(0);
path.ext(ext);
ok = path.custom_path();
}
}
}
return ok;

View File

@ -21,8 +21,10 @@ struct TRecordset_column_info : public TObject
void copy(const TRecordset_column_info & i) { _name = i._name; _width = i._width; _pos = i._pos; _type = i._type; }
virtual TObject* dup() const { return new TRecordset_column_info(*this); }
TRecordset_column_info(const TRecordset_column_info & i) {copy(i);}
TRecordset_column_info(const char * name, int width, TFieldtypes type, int pos = 0) : _name(name), _width(width), _pos(pos), _type(type) {};
TRecordset_column_info(const TRecordset_column_info & i) { copy(i); }
TRecordset_column_info() : _width(0), _pos(0), _type(_alfafld) {}
};
@ -106,13 +108,13 @@ public: // Absolutely needed methods
virtual unsigned int columns() const pure;
virtual const TRecordset_column_info& column_info(unsigned int column) const pure;
virtual const TRecordset_column_info& add_column_info(const TRecordset_column_info& c) {return c; }
const TString& get_string(const char* field) const { return get(find_column(field)).as_string(); };
const TString& get_string(const char* field) const;
const TString& get_string_zerofilled(const char* field, const int zero_filled) const;
int get_int(const char* field) const { return get(find_column(field)).as_int(); }
long get_long(const char* field) const { return get(find_column(field)).as_int(); }
bool get_bool(const char* field) const { return get(find_column(field)).as_bool(); }
real get_real(const char* field) const { return get(find_column(field)).as_real(); }
TDate get_date(const char* field) const { return get(find_column(field)).as_date(); }
int get_int(const char* field) const;
long get_long(const char* field) const;
bool get_bool(const char* field) const;
real get_real(const char* field) const;
TDate get_date(const char* field) const;
virtual const TVariant& get(unsigned int column) const pure;