Newsgroup: it.comp.lang.visual-basic
Titolo: crescita spropositata di un MDB

Salve a tutti.
Ho un database access 2002 contenente una sola tabella di circa 400.000
record.
Su questa tabella devo fare un update di massa, inserendo in un campo
testo un valore letto da un altro record.
Ho fatto per questo un piccolo programma ( VB6, DAO ).
Praticamente apro un recordset ( lato server ) e faccio un loop
aggiornando il valore di una colonna in base ad alcuni criteri.
Il problema è che il file MDB, originariamente di circa 50 Mb, alla fine
del processo è risultato essere 1,4 Gb !!!!!
Ricompattando il database è tornato ad essere di circa 50 Mb.
Quello che è strano è che se io faccio una query tipo
UPDATE <tabella> SET <campo> = <valore>
il file aumenta solo di qualche Mb ( da 50 a 57 circa )
Si può evitare una simile anomalia? Qualcuno sa spiegarmi questa
differenza di comportamento per fare la stessa operazione ??
NOTA:
Per fare l'aggiornamento uso
...
tb.edit
tb(campo)=valore
tb.update
...
Purtroppo non posso utilizzare una istruzione UPDATE perchè non c'è una
chiave univoca e rischio di modificare record sbagliati.
Dovrei aggiungere un campo Contatore, renderlo chiave primaria, modificare
il programma per eseguire un UPDATE sul record con quella chiave e alla
fine eliminare il campo contatore......
GRAZIE.
Moreno
---------------------------------------------------------------------
Questo articolo e` stato inviato via web dal servizio gratuito 
http://www.bismark.it/Newsgroup
 segnala gli abusi ad 
st...@bismark.it

 chiave e alla fine eliminare il campo contatore......
:-?
ciaociao

 
Della serie: non so se mi rendo conto di quello che dico!
:-)
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 maxx
ciaociao


-- 
Il Wodkino Nazionale č a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Quotefix e altro:
http://www.martek.it/go.asp?portamia=4
Usr: ICLVB Pw: amici

 ciaociao


 ciaociao


 >
---------------------------------------------------------------------


 2) Certo che apro TABLE... è l'unico modo che ho per mantenere i
CUT
mica vero
ci puoi far molto!
usiamo le peculiarità di Access!!!
c'ho i record e son li e devo congelarli in questo ordine!!!!
con ALTER TABLE ti fai un campo RecID ad esempio
e setti AUTONUMBER (contatore) NewValues=Increment
OPLA'
1  2 3 4 5 6 7 8 9 ...eccoli numerati da access!
Certo che se cancelli un record e lo riaggiungi  tutto si sputtana!(fa parte
della definizione di conattore di access...il numero "bruciato" non te lo
riassegna...a meno che non elimini il campo e lo ricrei!)
allora devi prevedere altri metodi...una tabellina di supporto che punta ai
record giusti nell'altra tabella!
ma perchè questo casino?
se non han bevuto i proprietari di questi dati...
..saranno ordinati per nome e cognome...o per data..per data e ora di
rilevazione...o per area geografica????!!!!
Ma che cavolo di dati sono?
Sono senza nessun ordine logico? mah!???!!!
-- 
Il Wodkino Nazionale è a : 
www.martek.it


 fino a quando non trovo un altro record di tipo testata
caz moreno lo vedo ora!
grrrrrrrr
Allora ...per lavorare bene....
DEVI FARTI 2 TABELLE
    la tabella TESTATA
    e quella DETTAGLIO!
Relazione UNO A MOLTI
1 testata<--->molti dettagli
Poi ti fai una funzione che MANGIA il file di testo
    SCAN del file
    04----> riempio tabella testata
   genero la chiave la meorizzo la tengo li!
   05---->fa parte del dettaglio
    la chiave della testata č quella che mi identifica il dettaglio
    la memorizzo
    trovo i dati li memorizzo
    etc etc fino ad EOF!!!
Cosa ottieni alla fine?
2 tabelle gerarchicamente strutturate...umanamente organizzate.....con un
senso ed una logica...e MOLTO MOLTO manutenibile!!!
Si tratta solo di scrivere una funzione che mangi il file e lo digerisca!
NON č facile ma neanche impossibile........
č un problema tipico da mainframe codesto!
Io avevo un AS400 che sparava file molto simili da un programma cobol!
Anche io mi son scritto una funzione che lo digeriva e lo sparava su varie
tabelle di Access !
:-)
Buon Natale
-- 
Il Wodkino Nazionale č a : 
www.martek.it


 Sono senza nessun ordine logico? mah!???!!!
---------------------------------------------------------------------


 Sono senza nessun ordine logico? mah!???!!!
---------------------------------------------------------------------


 Ricompattando il database è tornato ad essere di circa 50 Mb.
Di che tipo e' il campo che aggiorni?
-- 
Samuele Battarra
prova il mio newsreader:
http://news-navigator.sourceforge.net

 Ricompattando il database è tornato ad essere di circa 50 Mb.
Di che tipo e' il campo che aggiorni?
Un tempo notai che con alcuni tipi (mi pare campi binari e stringa
a lunghezza variabile), ad ogni update anziche' un update effettivo
access cancellava il record e ne scriveva uno nuovo con i dati modificati.
