Patch level : 12.0 nopatch

Files correlati     :
Commento        :

aggiunti metodi per verificare e  aggiornare se il valore è cambiato.
This commit is contained in:
Alessandro Bonazzi 2021-06-29 11:04:13 +02:00
parent d56c40040c
commit 9f06f16f5a
2 changed files with 68 additions and 0 deletions

View File

@ -3243,6 +3243,22 @@ void TRectype::init(int logicnum)
init_memo(RECORD_NON_FISICO);
}
bool TRectype::changed(const char* fieldname, const char* val, const char* compare_to)
{
const TString & value = get(fieldname);
return (value != compare_to) && (value != val);
}
bool TRectype::update(const char* fieldname, const char* val, const char* compare_to)
{
const bool val_changed = changed(fieldname, compare_to);
if (val_changed)
put(fieldname, val);
return val_changed;
}
TRectype::TRectype(int logicnum)
: _memo_data(NULL)
{

View File

@ -310,6 +310,58 @@ public:
virtual word class_id() const { return CLASS_RECTYPE; }
virtual bool is_kind_of(word id) const { return id == class_id() || TSortable::is_kind_of(id); }
// @cmember verifica se è cambiato il contenuto del campo <p fieldname> in formato int
bool changed(const char* fieldname, int val, const char* compare_to = "~~") { TString s; s << val; return changed(fieldname, s, compare_to); }
bool changed_if_full(const char* fieldname, int val) { return changed(fieldname, val, ""); }
// @cmember verifica se è cambiato il contenuto del campo <p fieldname> in formato long
bool changed(const char* fieldname, long val, const char* compare_to = "~~") { TString s; s << val; return changed(fieldname, s, compare_to); }
bool changed_if_full(const char* fieldname, long val) { return changed(fieldname, val, ""); }
// @cmember verifica se è cambiato il contenuto del campo <p fieldname> in formato word
bool changed(const char* fieldname, word val, const char* compare_to = "~~") { TString s; s << val; return changed(fieldname, s, compare_to); }
bool changed_if_full(const char* fieldname, word val) { TString s; s << val; return changed(fieldname, s, ""); }
// @cmember verifica se è cambiato il contenuto del campo <p fieldname> in formato data
bool changed(const char* fieldname, const TDate& val, const char* compare_to = "~~") { return changed(fieldname, val.string(), compare_to); }
bool changed_if_full(const char* fieldname, const TDate& val) { return changed(fieldname, val, ""); }
// @cmember verifica se è cambiato il contenuto del campo <p fieldname> in formato boolean
bool changed(const char* fieldname, bool val, const char* compare_to = "~~") { return changed(fieldname, val ? "X" : "", compare_to); }
bool changed_if_full(const char* fieldname, bool val) { return changed(fieldname, val, ""); }
// @cmember verifica se è cambiato il contenuto del campo <p fieldname> in formato reale
bool changed(const char* fieldname, const real& val, const char* compare_to = "~~") { return changed(fieldname, val.string(), compare_to); }
bool changed_if_full(const char* fieldname, const real& val) { return changed(fieldname, val, ""); }
// @cmember verifica se è cambiato il contenuto del campo <p fieldname> in formato valuta
bool changed(const char* fieldname, const TCurrency& val, const char* compare_to = "~~") { return changed(fieldname, val.string(), compare_to); }
bool changed_if_full(const char* fieldname, const TCurrency& val) { return changed(fieldname, val, ""); }
// @cmember verifica se è cambiato il contenuto del campo <p fieldname> (non tipizzata)
bool changed(const char* fieldname, const char* val, const char* compare_to = "~~");
bool changed_if_full(const char* fieldname, const char* val) { return changed(fieldname, val, ""); }
// @cmember Setta il contenuto del campo <p fieldname> in formato int se è cambiato
bool update(const char* fieldname, int val, const char* compare_to = "~~") { TString s; s << val; return update(fieldname, s, compare_to); }
bool update_if_full(const char* fieldname, int val) { return update(fieldname, val, ""); }
// @cmember Setta il contenuto del campo <p fieldname> in formato long se è cambiato
bool update(const char* fieldname, long val, const char* compare_to = "~~") { TString s; s << val; return update(fieldname, s, compare_to); }
bool update_if_full(const char* fieldname, long val) { return update(fieldname, val, ""); }
// @cmember Setta il contenuto del campo <p fieldname> in formato word se è cambiato
bool update(const char* fieldname, word val, const char* compare_to = "~~") { TString s; s << val; return update(fieldname, s, compare_to); }
bool update_if_full(const char* fieldname, word val) { return update(fieldname, val, ""); }
// @cmember Setta il contenuto del campo <p fieldname> in formato data se è cambiato
bool update(const char* fieldname, const TDate& val, const char* compare_to = "~~") { return update(fieldname, val.string(), compare_to); }
bool update_if_full(const char* fieldname, const TDate& val) { return update(fieldname, val, ""); }
// @cmember Setta il contenuto del campo <p fieldname> in formato boolean se è cambiato
bool update(const char* fieldname, bool val, const char* compare_to = "~~") { return update(fieldname, val ? "X" : "", compare_to); }
bool update_if_full(const char* fieldname, bool val) { return update(fieldname, val, ""); }
// @cmember Setta il contenuto del campo <p fieldname> in formato reale se è cambiato
bool update(const char* fieldname, const real& val, const char* compare_to = "~~") { return update(fieldname, val.string(), compare_to); }
bool update_if_full(const char* fieldname, const real& val) { return update(fieldname, val, ""); }
// @cmember Setta il contenuto del campo <p fieldname> in formato valuta se è cambiato
bool update(const char* fieldname, const TCurrency& val, const char* compare_to = "~~") { return update(fieldname, val.string(), compare_to); }
bool update_if_full(const char* fieldname, const TCurrency& val) { return update(fieldname, val, ""); }
// @cmember Setta il contenuto del campo <p fieldname> (non tipizzata) se è cambiato
bool update(const char* fieldname, const char* val, const char* compare_to = "~~");
bool update_if_full(const char* fieldname, const char* val) { return update(fieldname, val, ""); }
// metodi per aggiornare se cambiato
// @cmember Costruttore Costruisce un record staccato da un file.
// Sarebbe meglio utilizzare una delle altre due
TRectype(int logicnum);