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:
alex 1997-10-22 12:58:17 +00:00
parent 053c2b9a8f
commit 7fa73a982c

View File

@ -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));