Riportate modifiche dalla R9702:
1.113.2.7 ed 1.113.2.8, relative alla conversione dei tracciati record nel caso di variazione della lunghezza del campo. git-svn-id: svn://10.65.10.50/trunk@5416 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
053c2b9a8f
commit
7fa73a982c
@ -2105,7 +2105,7 @@ int TSystemisamfile::update(
|
||||
i0->fhnd=DB_open((const char*)tmpfname,0, TRUE);
|
||||
if (i0->fhnd < 0 ) err=get_error(i0->fhnd);
|
||||
TFilename fname(filename());
|
||||
TString s(80);
|
||||
TString s(80), fld_name, fld_val;
|
||||
s.format("Aggiornamento archivio %s", (const char*) fname);
|
||||
TProgind p(nitems ? nitems : 1, s, TRUE, TRUE, 70);
|
||||
int nflds = curr().items();
|
||||
@ -2122,8 +2122,29 @@ int TSystemisamfile::update(
|
||||
nrec.zero();
|
||||
ni++;
|
||||
for (j = 0; j < nflds; j++)
|
||||
if (nrec.exist((const TString&) fld[j]))
|
||||
nrec.put((const TString&) fld[j], get((const TString&) fld[j]));
|
||||
{
|
||||
fld_name = (TString&) fld[j];
|
||||
if (nrec.exist((fld_name)))
|
||||
{
|
||||
fld_val = get(fld_name);
|
||||
// Se il campo e' di tipo stringa ed e' stato accorciato, tronca il contenuto,
|
||||
// per evitare segnalazioni inutili in conversione. Nel caso di campo numerico
|
||||
// viene "zappato"
|
||||
// Questo trattamento non viene effettuato per i campi data
|
||||
// perchè la get() restituisce una data formattata e quindi
|
||||
// di lunghezza maggiore, ciò provoca una "zappatura" indiscriminata
|
||||
// di tutti i campi data (fa pure rima) L.A.
|
||||
TFieldtypes fld_type = nrec.type(fld_name);
|
||||
if (fld_type != _datefld)
|
||||
{
|
||||
const int l1 = nrec.length(fld_name);
|
||||
const int l2 = fld_val.len();
|
||||
if ( l1 < l2)
|
||||
fld_val.cut(fld_type == _alfafld ? l1 : 0);
|
||||
}
|
||||
nrec.put(fld_name, fld_val);
|
||||
}
|
||||
}
|
||||
if (lcf)
|
||||
makelc((TRectype &)nrec);
|
||||
browse_null(nrec.string(),DB_reclen(i0->fhnd));
|
||||
|
Loading…
x
Reference in New Issue
Block a user