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