// DOVE COMPARE !! SONO STATE FATTE MODIFICHE DA GIANLUCA O GUIDO // !! #include #include #include int numerazione_definitiva( TLocalisamfile& doc ) { TTable tabnum( "NUM" ); TRectype &rec= doc.curr(); doc.read( rec, _lock ); TRectype oldrec( doc.curr() ); tabnum.zero( ); tabnum.put( "CODTAB", rec.get( "CODNUM" ) ); int err = tabnum.read( _lock ); // Modifico la chiave del record passato! rec.put( "NDOC", tabnum.get_long( "I1" ) ); rec.put( "PROVV", "D" ); // !! Matteo, qui non manca qualcosina!? (tipo, che so', la scrittura del record...) if ( err == NOERR ) { // Aggiorno la tabella! tabnum.put( "I1", tabnum.get_long( "I1" ) + 1 ); err = tabnum.rewrite(); } doc.read( rec, _unlock ); // !! che casino! non si può prendere un record, bloccarlo, cambiargli la chiave, // !! riscriverlo e poi sbloccarlo: deve essere letto e duplicato, modificato nella copia // !! con la nuova chiave, scritto e cancellato il vecchio (!)... almeno così dice Guido. // !! occhio! :-) err = tabnum.read( _unlock ); if ( err = NOERR ) { // carico le righe usando la vecchia chiave TRecord_array righe_rec( LF_RIGHEDOC, "NRIGA" ); righe_rec.read( rec ); int last = righe_rec.last_row(); for ( int i = 1; i <= last; i ++ ) { // Le aggiorno con la nuova chiave TRectype &rigarec = righe_rec.row( i, TRUE ); rigarec.put( "PROVV", "D" ); rigarec.put( "NDOC", rec.get( "NDOC" ) ); } righe_rec.write( ); }; return err; };