- Aggiunto CHECK presenza del tracciato letto su file testo
- Corretta la gestione dl default per i file dei Fieldref (ora prende il main della relazione su cui si scrive/legge) - Spostate funzioni di formattazione dalla sezione public a protected git-svn-id: svn://10.65.10.50/trunk@5490 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
27c611a099
commit
83a91f61f2
include
@ -237,10 +237,6 @@ void TFile_text::set_rec_parm(TConfig& config, const char* section)
|
||||
{
|
||||
TFieldref field;
|
||||
field = obj;
|
||||
if (field.file()==0 && tmprel )
|
||||
{
|
||||
field.set_file(tmprel->lfile().num());
|
||||
}
|
||||
tc.set_field(field);
|
||||
continue;
|
||||
}
|
||||
@ -310,7 +306,7 @@ void TFile_text::set_rec_parm(TConfig& config, const char* section)
|
||||
|
||||
}
|
||||
tr->set_relation(tmprel);
|
||||
//aggiungo il tracciato record all'assoc_array dei tracciati record
|
||||
//aggiungo il tracciato record all'assoc_array dei tracciati record
|
||||
_tracciati_record.add(sectkey, tr);
|
||||
}
|
||||
|
||||
@ -413,13 +409,14 @@ int TFile_text::read(TRecord_text& rec)
|
||||
TString tipo = buffer.mid(_typepos, _typelen);
|
||||
tipo.trim();
|
||||
rec.set_type(tipo);//istanzio il tipo del record text
|
||||
TTracciato_record& tr = *t_rec(tipo);
|
||||
TTracciato_record* tr = t_rec(tipo);
|
||||
CHECK(tr,"Tipo di tracciato record non riconosciuto");
|
||||
//ora che ho il tracciato record devo scandire i tracciati campo e caricare il record text
|
||||
TArray& a_tc = tr.tracciati_campo();
|
||||
TArray& a_tc = tr->tracciati_campo();
|
||||
int items = a_tc.items();
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TTracciato_campo& tc = tr.get(i);
|
||||
TTracciato_campo& tc = tr->get(i);
|
||||
int pos = tc.position();
|
||||
int len = tc.length();
|
||||
lavoro = buffer.mid(pos, len);
|
||||
@ -518,7 +515,9 @@ void TFile_text::_autoload(TRecord_text& rec, TCursor& cur , TTracciato_record&
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TTracciato_campo& tc = tr.get(i);
|
||||
const TFieldref& field = tc.field();
|
||||
TFieldref field = tc.field();
|
||||
if (field.file()==0)
|
||||
field.set_file(rel.lfile().num());
|
||||
if (!field.name().empty())
|
||||
campo = field.read(rel);
|
||||
TString message = tc.message();
|
||||
@ -567,9 +566,11 @@ int TFile_text::_autosave(TRelation& rel, const TRecord_text& rec, TTracciato_re
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
const TTracciato_campo& tc = tr.get(i);
|
||||
const TFieldref& field = tc.field();
|
||||
TFieldref field(tc.field());
|
||||
if (field.name().not_empty())
|
||||
{
|
||||
if (field.file()==0)
|
||||
field.set_file(rel.lfile().num());
|
||||
valore = rec.row(i);
|
||||
// formatta il campo del file di testo secondo le specifiche del campo su file isam
|
||||
// preformat_field(rel,field,rec,valore);
|
||||
@ -600,7 +601,7 @@ int TFile_text::_autosave(TRelation& rel, const TRecord_text& rec, TTracciato_re
|
||||
}
|
||||
break;
|
||||
default:
|
||||
valore = format_field(tc, valore);//formatta il campo secondo le specifiche del record
|
||||
valore = format_field(tc, rel.lfile().num(), valore);//formatta il campo secondo le specifiche del record
|
||||
break;
|
||||
}
|
||||
|
||||
@ -716,9 +717,9 @@ TString& TFile_text::format_textfield(const TTracciato_campo& tc, TString& campo
|
||||
}
|
||||
|
||||
//Formatta la stringa in base al field del file isam
|
||||
TString& TFile_text::format_field(const TTracciato_campo& tc, TString& campo)
|
||||
TString& TFile_text::format_field(const TTracciato_campo& tc, short lfile, TString& campo)
|
||||
{
|
||||
const TRectype record(tc.field().file());
|
||||
const TRectype record(tc.field().file() ? tc.field().file() : lfile);
|
||||
|
||||
int length = tc.field().len(record);
|
||||
if (!fpicture(tc).blank())
|
||||
|
@ -158,6 +158,14 @@ protected:
|
||||
void _autoload(TRecord_text& rec, TCursor& cur , TTracciato_record& tr );
|
||||
// @cmember caricamento automatico della relazione definita nel tracciato dal record_text
|
||||
int _autosave(TRelation& rel, const TRecord_text& rec, TTracciato_record& tr );
|
||||
|
||||
// @cmember formatta la data
|
||||
void format_date(const TDate& data, const TString& form, TString& data_str);
|
||||
// @cmember formatta il campo secondo il suo tracciato
|
||||
TString& format_textfield(const TTracciato_campo& tc, TString& campo);
|
||||
// @cmember formatta il campo secondo il suo tracciato
|
||||
TString& format_field(const TTracciato_campo& tc, short lfile, TString& campo);
|
||||
|
||||
//effettua modifiche particolari dal cursore al record_text
|
||||
// <cur> è il cursore della relazione
|
||||
// <rec> è il record da modificare
|
||||
@ -231,11 +239,6 @@ public:
|
||||
//scarica dal record_text il campo di nome <name>
|
||||
const TString& get_field(const TRecord_text& rec, const char* name);
|
||||
|
||||
void format_date(const TDate& data, const TString& form, TString& data_str);//formatta la data
|
||||
// @cmember formatta il campo secondo il suo tracciato
|
||||
TString& format_textfield(const TTracciato_campo& tc, TString& campo);
|
||||
// @cmember formatta il campo secondo il suo tracciato
|
||||
TString& format_field(const TTracciato_campo& tc, TString& campo);
|
||||
};
|
||||
|
||||
#endif //__FILETEXT_H
|
Loading…
x
Reference in New Issue
Block a user