Aggiuta funzione-membro pre_format e pre_write

git-svn-id: svn://10.65.10.50/trunk@5483 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
sauro 1997-10-29 14:03:26 +00:00
parent ea24bfa9be
commit 9830e2f49f
2 changed files with 17 additions and 9 deletions

View File

@ -555,7 +555,9 @@ int TFile_text::_autosave(TRelation& rel, const TRecord_text& rec, TTracciato_re
{ {
valore = rec.row(i); valore = rec.row(i);
// formatta il campo del file di testo secondo le specifiche del campo su file isam // formatta il campo del file di testo secondo le specifiche del campo su file isam
const TRectype& rel_rec = rel.curr(field.file()); // preformat_field(rel,field,rec,valore);
preformat_field(field,valore);
const TRectype& rel_rec = rel.curr(field.file());
TFieldtypes tipo_campo = rel_rec.type(field.name()); TFieldtypes tipo_campo = rel_rec.type(field.name());
switch(tipo_campo) switch(tipo_campo)
{ {
@ -588,6 +590,7 @@ int TFile_text::_autosave(TRelation& rel, const TRecord_text& rec, TTracciato_re
field.write(valore, rel);//faccio una write sulla relazione del fieldref field.write(valore, rel);//faccio una write sulla relazione del fieldref
} }
} }
pre_write(rel,rec);
int err = rel.write(); int err = rel.write();
if (err == _isdupkey || err ==_isreinsert) if (err == _isdupkey || err ==_isreinsert)
err = rel.rewrite(); err = rel.rewrite();

View File

@ -149,17 +149,22 @@ class TFile_text : public TObject
int _typefield;//posizione ove trovare la chiave nel record a lunghezza variabile int _typefield;//posizione ove trovare la chiave nel record a lunghezza variabile
protected: protected:
//effettua operazioni personalizzate dall'applicazione sul record_text
// <cur> è il cursore della relazione
// <rec> è il record da modificare
// <val> contiene il messaggio da modificare e/o caircare nel record
// <str> conterrà il risultato dell'operazione
virtual void validate(TCursor& cur, TRecord_text &rec, TToken_string &val, TString& str){}
const int fdecimal(const TTracciato_campo &tc ) const; const int fdecimal(const TTracciato_campo &tc ) const;
const char falign(const TTracciato_campo &tc ) const; const char falign(const TTracciato_campo &tc ) const;
const char ffiller(const TTracciato_campo &tc ) const ; const char ffiller(const TTracciato_campo &tc ) const ;
const TString& fpicture(const TTracciato_campo &tc ) const; const TString& fpicture(const TTracciato_campo &tc ) const;
//effettua modifiche particolari dal cursore al record_text
// <cur> è il cursore della relazione
// <rec> è il record da modificare
// <val> contiene il messaggio da modificare e/o caircare nel record
// <str> conterrà il risultato dell'operazione
virtual void validate(TCursor& cur, TRecord_text &rec, TToken_string &val, TString& str){}
//effettua modifiche particolari al valore da assegnare ad un campo dell'isamfile
//virtual void preformat_field(TRelation& rel,const TFieldref&field,const TRecord_text& rec,TString &str) {}
virtual void preformat_field(const TFieldref&field,TString &str) {}
//effettua modifiche sui record della relazione prima di effettuarne la write
virtual void pre_write(TRelation& rel,const TRecord_text& rec) {}
public: public:
TFile_text(const char* file_name, const char* config_name); TFile_text(const char* file_name, const char* config_name);
virtual ~TFile_text(); virtual ~TFile_text();
@ -209,8 +214,8 @@ public:
//caricamento automatico della relazione dal record_text corrente //caricamento automatico della relazione dal record_text corrente
int autosave(TRelation& rel) {return autosave(rel, *_current); }; int autosave(TRelation& rel) {return autosave(rel, *_current); };
//caricamento automatico della relazione definita nel tracciato dal record_text //caricamento automatico della relazione definita nel tracciato dal record_text
int autosave(int mainfile, const TRecord_text& rec); int autosave(int mainfile, const TRecord_text& rec);
int _autosave(TRelation& rel, const TRecord_text& rec, TTracciato_record& tr ); int _autosave(TRelation& rel, const TRecord_text& rec, TTracciato_record& tr );
int read(TRecord_text & rec);//legge da file di testo il record_text int read(TRecord_text & rec);//legge da file di testo il record_text
int read(){return read(*_current);}//legge da file di testo il record_text corrente int read(){return read(*_current);}//legge da file di testo il record_text corrente
//carica nel record_text il campo alla posizione <ncampo> con il valore <val> già formattato //carica nel record_text il campo alla posizione <ncampo> con il valore <val> già formattato