Newsgroup: it.comp.lang.visual-basic
Titolo: MDB e fregatura!!!!!!!!!

sto iniziando a imparare ADO e SQL. mi sto imbattendo in diversi problemini.
in alcuni successivi mess ve li esporrò. per ora sentite qua.
avevo un piccolo mdb con 5 record in tutto, su cui facevo le prove di
lettura/scrittura.
volevo fare unaprova di velocità, e inserire 10mila record con insert into,
per vedere quanto ci metteva. ci ha messo un papocchio di tempo...
::))))))))
ilfile mdb da 48 Kb è diventato 388 Kb, e fin qui tutto bene. dopodiche ho
fatto un delete di tutti i campi che avevo aggiunto prima (che quindi
passavano da 10005 a 5), e (udite udite) le dimensioni dei file mdb sono
rimaste di 388 Kb... che cavolo significa?????????????????????????? come si
evita uno sconcio simile??
MarioH

 wrote in message
97hiod$pai76$1...@ID-70152.news.dfncis.de...


 evita uno sconcio simile??
la soluzione e' compattare il db con CompactDatabase
se usi DAO il metodo e' incluso nella libreria di DAO
se usi ADO devi includere un riferimento a JRO ed utilizzare
il metodo CompactDatabase
--
Fibia "Sakamoto" FBI
E-mail: 
fibi...@hotmail.com
ICQ UIN 63586057
Sito Personale: 
http://www.geocities.com/fibiafbi
VB Simple: 
http://vbsimple.virtualave.net
Membro #25 delle Mitiche Brigate Takahashi sezione Sud

 Type=4"
scusa mi spieghi meglio cosa significa compattare un db? poi bisogna
scompattarlo?? (non ridete...)
un'altra cosa. perche nel codice che hai postato ci sono 2 nomi di db?
ah dimenticavo la cosa piu importante... hai messo "4.0" per Jet. come
faccio a sapere se ho la 4.0 o un'altra? non ne capisco molto, io finora ho
sempre scritto 3.51 e ha funzinoato...
mario

scompattarlo?? (non ridete...)
Eheh, la M$ ha avuto un'altra bella trovata con gli MDB.
Le dimensioni di un mdb possono solo crescere!
Cioè, quello che tu cancelli o modifichi in realtà non viene eliminato dal
db!
Viene solo marcato come eliminiato/modificato.
Addirittura credo (ma non ho provato) che anche i record modificati in
realtà non vengano sovrascritti, ma segnati come eliminati e il nuovo record
appeso in fondo.
Poi sta a te di tanto in tanto (meglio spesso) compattarlo, cioè eliminare
tutti i buchi che il jet si è lascito in giro.
Occhio: con DB di grosse dimensioni (e parlando di access è un
bell'eufemismo) se non si compatta si rischia il decadimento di prestazioni
e la corruzione del file.
La seconda la si rischia anche con DB di grosse dimensioni in genere (oltre
i 50MB si entra nella zona gialla, oltre i 100 è allarme rosso, oltre i 150
è follia pura).
A me avevano fatto lavorare su un MDB da 350Mb in multiutenza... progetto
fallito miseramente proprio a causa dell'mdb: crash del jet ogni 10
minuti...
Con una precisazione: la compattazione può avvenire solo se chi la fa ha
l'unica connessione attiva.
Ciao

ommioddio che notiziaccia...
senti posso chiederti un consiglio? io sto iniziando ora a lavorare con i
db. so che i file MDB di access sono in fondo buoni, mi ci sto trovando
bene. sto imparando ADO e SQL. devo usare SEMPRE Jet per lavorrae con ADO e
SQL su un file MDB?
per archivi piu grossi, che cosa mi consigli? e posso continuare ad usare,
su altri tipi di archivi (DBF,...) cmq ADO e SQL?
grazie mille
MarioH

mi spiego meglio. vorrei sapere cosa hanno di diverso i file DBF, perche non
sono mai riuscito a vederne uno... ::)))))

 sono mai riuscito a vederne uno... ::)))))
dbf = database file
e' il formato che si e' diffuso con dBase3 e successivi (db1 credo si
chiamasse vulcan, db2 dovrebbe essere una cosa ibm), che sono passati da
ashton tate a borland a non so chi adesso.
sono molto diffusi nel mondo dos perche' erano utilizzabili, se usati in
modo standard, da dBase, clipper, foxpro, e credo altri programmi. tant'e'
che si parla di linguaggi xBase. clipper per esempio partiva dal linguaggio
dbase, ma introduceva varianti (col 5 cominciava ad assomigliare al c), ed
essendo compilato (exe) non richiedeva runtime come dbase, essendo quindi
piu' leggero, senza royalties, e dannatamente piu' veloce. piu' veloce
ancora mi dicono fosse foxpro. agli exe dbase c'e' arrivato tardi, e questo
l'ha abbastanza segato. poi hanno cercato di mettere fuori le versioni
windows e visuali (visual objects per clipper, vdbase, ecc.), e hanno
modificato il formato per metterci dentro ole e giochini vari. ma ormai
access aveva abbastanza spazzato il campo. peccato perche' dbf era ormai un
formato standard, come un doc o un xls di adesso.
attualmente credo li mantenga chi deve gestire un db con vari programmi,
alcuni vb, alcuni clipper o dbase ecc. -- pero' ci sono limitazioni: la
velocita' di clipper era dovuta in gran parte a un formato di indici (ntx,
mentre quelli di db3 = .ndx e db4 .mdx) che non a caso vb non supporta.
inoltre la geatione dei record cancellati e la compattazione, molto carenti
in vb per i dbf.
questioni di marketing, non certo d'informatica. traine le tue conclusioni
su come si affossa un mondo...
un dbf equivale in sostanza a una tabella di access. tant'e' che se in vb
vuoi usare dei dbf, come database devi dirgli la _directory_ dove stanno i
dbf, e come recordsource di ogni datacontrol ogni singolo dbf. in access,
allo stesso modo, se vuoi importare dei dbf devi creare un db vuoto, andare
in tabelle, poi fare importa *.dbf e uno per volta beccarti su i dbf.
se vuoi vederne, se il tuo indirizzo e' buono posso ripescarne uno e
mandartelo. ma vedresti giusto una tabella. norton commander aveva un dbf
viewer molto comodo per dare occhiate veloci. esistono dei dbf viewer share
per win, prova a cercarli con altavista.
anche le norton utilities avevano in effetti una comodita': mi e' capitato
di recuperare un dbf sputtanato ma che aveva ancora l'header (descrizione
del formato tabella, all'inizio del file) integro. alla fine lo riavevo
tutto salvo qualche record. in access se va in vacca una tabella e access
non riesce a recuperarla per conto suo...
...saluti
(ą la skunk)
ciao, a.

ok grazie mille... hai mai pensato di mettere su un'enciclopedia
dell'informatica???? ::))))))
cmq credo che conoscere la struttura dei MDB sia piu che sufficiente....
un' ultima cosina. per database giganteschi (di 100 mb ad es.) MDB va ancora
bene?

 bene?
io sono arrivato a 650 mb su 3 tabelle, e su un portatile con dao non faceva
una piega. con ado non saprei.
ciao, a.

 ha scritto nel messaggio
news:97l8sk$pn8gt$1...@ID-70152.news.dfncis.de...

Il Jet 4.0 (Access) gestisce database fino a 2 Gb. Dopo questa dimensione
devi passare ad un SQL Server.
Il massimo che mi è capitato finora è un database da 1,7 Gb (tabella unica),
e ADO (con MS Access come Provider) non ha fatto una piega.
Byee
Zeross

 una piega. con ado non saprei.
io su un db di circa 15000 records (2 MB) lancio quattro query di
aggiornamento da un file da floppy ed il db e' diventato magicamente
270 MB (follia pura)
hmmm veramente buono. 2 MB + 1 file da 1,5 MB  = 270 MB
continuo a chiedermi perche' non uso Interbase


 continuo a chiedermi perche' non uso Interbase
stai usando unicode ?

 stai usando unicode ?
VB utilizza sempre unicode
come si specifica il formato del testo in un mdb?
convertendolo con StrConv e poi scrivendolo nel db?


 convertendolo con StrConv e poi scrivendolo nel db?
veramente mi sembrava fosse una caratteristica di access2k, che anche per
questo cerco di evitare.
prova a cercare nella guida, direi di aver letto, quando e' uscito, che si
potesse scegliere. ma forse mi sbaglio.
ciao, a.

 potesse scegliere. ma forse mi sbaglio.
beh, e' la prima volta che lo sento
indaghero'.. cmq uso mdb versione access 97
e sono pesantissimi


 e sono pesantissimi
alt. io uso il 97 e queste robe non le fa. a meno che...
per evitare crolli stupidi e controlli reiterati, io i campi testo di solito
li setto tutti a 255, anche se devono contenere solo i byte. se inserisco
15k schede con record che ne hanno 100, access fa (direi, sulla base delle
prove):
    15ooo * 255 * 100 = 382.500.000 (spero)
se pero' nei campi ci scrivi solo 1 byte, al primo pack le dimensioni
diventano completamente diverse.
d'altronde, quando fai addnew, lui _deve_ allocare tutto lo spazio previsto.
non potrebbe fare altrimenti. e' solo quando i dati glieli hai consegnati
che puo' ragionarci sopra.
per curiosita', dopo un pack quanto diventa il tuo db ?
se si riduce molto, puoi vedere di modificare la struttura dell'mdb e
ridurre dove puoi. cambia parecchio, anche se aumenti i rischi (se metti fld
= int e ci piazzi un long -> crash).
ciao, a.