Newsgroup: it.comp.lang.visual-basic
Titolo: Indice scomparso

Un mio programma, sviluppato in VB6 e che utilizza un archivio di MS
Access 97, dopo anni di onorato servizio ha presentato un grave errore:
uno degli indici delle numerose tabelle è letteralmente scomparso.
Ho dovuto reimmetterlo manualmente !
La funzione CompactDatabase e nemmeno l'utility della Microsoft "Database
Compact Utility 4.0" non sono state in grado di riparare il guasto.
Fornisco qualche elemento in più per poter orientare meglio chi vorrà
(saprà) rispondermi, essendo (non me lo auguro per lui) passato per
analoga esperienza.
1) Il programma. un EXE di circa 3 MB, è installato su 5 computer su una
LAN.
2) I sistemi operativi dei 5 computer variano da Win95, Win 98 e XP.
3) Recentemente sono stati fatti interventi alla LAN (sostituzione di cavi
e schede).
4) L'archivio (un MDB MS Access 97 di circa 25 MB) è costituito da una
ventina di tabelle, qualcuna delle quali dotata di indici multipli.
5) Il programma utilizza DAO con qualche controllo ADODC e DataGrid.
6) Il programma è frutto di successive trasformazioni, adattamenti ed
aggiornamenti alle normative via via vigenti. Inizialmente è stato
sviluppato in VB4, poi VB5 ed ora VB6 sp5. Sempre con DAO.
Il consiglio "passa ad ADO" o "passa a SQL Server" o "uniforma il sistema
operativo" non può essere preso in considerazione per l'onerosità che
comporterebbe tale modifica ed anche - soprattutto - perche', come già
detto, sostanzialmente il programma ha funzionato per numerosi anni senza
alcun inconveniente gestendo anche archivi di dimensioni ben superiori (34
MB ad esempio).
Grazie per l'attenzione.
Ugo Bottari
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Ugo Bottari wrote:

azzardo, forse dico una cavolata:
è stato fatto anche qualche aggiornamento software? tipo installazione di
access xp o 2000 su una delle macchine? in tal caso potrebbe essere da
aggiornare mdac.
-- 
Paolo Bartolini

 Ho dovuto reimmetterlo manualmente !
Mi č successo piů di una volta.
Succede (da quanto ho visto io) in seguito a una "distruzione" del DB 
causata magari da un PC in rete che viene spento con il collegamento al 
DB attivo o anche solo un problema momentaneo sulla rete.
Il db si rovina e perde alcuni indici e non c'č verso: sono proprio 
persi, anche perchč nella ricostruzione le tabelle risultano avere dei 
record completamente a null o con una serie di "#" e quindi risulta 
impossibile rimettere un indice su tali record.
La nostra soluzione: un DB di comparazione con solo la struttura e una 
funzione che rimette le cose a posto e che fa il log.
Ciao

 funzione che rimette le cose a posto e che fa il log.
quoto tutto
ciaociao

 ciaociao

 (fatto questa mattina.....)
E' importante che venga fatto il log di ciň che *non* č riuscito a 
mettere a posto, in modo da sapere cosa occorre aggiustare a mano.
Ciao

 mettere a posto, in modo da sapere cosa occorre aggiustare a mano.
beh, io salvo tutto, corretti e non...
ciaociao

 aggiornare mdac.
Verificherò
Grazie
Ciao


 funzione che rimette le cose a posto e che fa il log.
Come soluzione non è particolarmente semplice, ma se si deve fare ...
Ovviamente i log devono essere dei normali file di testo, non è vero ?
Ma, secondo la tua esperienza, la "distruzione" avviene solo per gli
indici oppure (come mi pare più probabile) per qualsiasi elemento del db.
Che so: un campo integer che diventa un campo testo o simili ?
Grazie e ciao
Ugo


 Che so: un campo integer che diventa un campo testo o simili ?
O per gli indici o per le tabelle di sistema (in quel caso butti via 
l'mdb, quindi fai copie di backup frequenti).
Ciao

 Marcabru wrote:





Allegria !
Grazie di tutto.
