Newsgroup: it.comp.lang.visual-basic
Titolo: la ricerca ad indici mi sputtana tutto il db?!?

Ok,
ho inserito un indice nel mio db e la ricerca funziona, trovo
fisicamente tutti i record che ho inserito. C' è solo un piccolissimo
effetto collaterale che...mi ha sputtanato tutto l' ordine dei record!
Se vado al primo o all' ultimo record del mio db, quello che vedo non
corrisponde con quelli che sono in relarà il primo e l' ultimo record,
quindi...credo che tutti i record hanno perso la loro posizione
originale, non stanno come li ho inseriti io. A trovarli li trovo, ma
ogni volta questi cambiano posizione :)) Da quel poco che so, il mio
programma avrebbe dovuto ordinare i recordo secondo CourseID...non è
che io cambiando l' indice di ircerca, mettendo titolo, forzo in
qualche modo l' ordinamento della tabella? Lui così non ci capoisce
più una mazza e ogni volta mi sbatte i record di qua e di la...bhò,
voi che dite?

 wrote in message
39a010fb...@news.libero.it...


 voi che dite?
be', se ho capito quello che dici, e' assolutamente normale. gli indici
servono *esattamente* a questo. grazie agli indici, il concetto di posizione
di una scheda (record) all'interno di un archivio (file, table, recordset,
ecc.) e' assolutamente mutevole -- grazie al cielo.
se tu inserisci 3 schede
# - AUTORE - TITOLO
----------------------
1 - AAAAAA - ZZZZZZZ
2 - DDDDDD - FFFFFFFFF
3 - BBBBBBB - CCCCCCCCC
l'ordine normale di visualizzazione, in mancanza di chiavi primarie o altro,
e' proprio questo.
se pero' indicizzi, p.e., su autore+titolo, vedrai (si spera):
1 - AAAAAA - ZZZZZZZ
3 - BBBBBBB - CCCCCCCCC
2 - DDDDDD - FFFFFFFFF
se su titolo+autore:
3 - BBBBBBB - CCCCCCCCC
2 - DDDDDD - FFFFFFFFF
1 - AAAAAA - ZZZZZZZ
la cosa fondamentale e' che all'autore BBBBBBBB corrisponda *sempre* il
titolo CCCCCCC, ecc. -- il che, p.e., se si ordina in excel senza badare
all'area selezionata, non succede. il simpatico programma microsoft puo'
assegnare tranquillamente un titolo a un autore che non e' il suo...
il punto e': gli indici servono a sveltire il lavoro, non ti costringono a
cercare dentro *tutto* l'archivio. cercare solo "AAA" all'inizio di una
stringa consente molta piu' velocita' che cercare lo sottostringa "AAA" in
una qualsiasi posizione nel campo per *tutte* le schede.
non solo: se ottieni un recordset da una query tipo "where autore like
'*AAA*'" hai in linea di massima solo un sottoinsieme dell'archivio. con
l'indice puoi tenere aperto tutto l'archivio (io ci ho provato con un db
access con 4 milioni di record, e va abbastanza tranquillo e beato anche su
dei p1/250) e posizionarti man mano sulle schede che ti servono, senza dover
fare in continuazione delle query.
svantaggi degli indici:
1. spazio. questo era un problema soprattutto tempo fa. ma anche adesso, se
indicizzi su campi lunghi dei db grandi, sono decine e decine di mb che se
ne vanno.
2. non sono supportati da molti dbms. lo standard, purtroppo, e' sql.
se come penso stai usando dao, guarda bene la guida alla voce seek. ado
credo che ancora supporti gli indici poco e niente.
ciao, a.
--
andrea dot palazzi at tin dot it
free vb/sw: 
http://www.comune.modena.it/cittadini/apal/html/

 che io cambiando l' indice di ircerca, mettendo titolo, forzo in
Da come la descrivi non e' successo nulla di strano (o forse ho capito male
io)
facciamo il caso di un db riempito con la seguenbte sequenza
ID    Nome
1      PAPERINO
2      TOPOLINO
3      GAMBADILEGNO
se poi riesegui una query riordinando per Nome alfabetico crescente ottieni
3     GAMPADILEGNO
1     PAPERINO
2     TOPOLINO
Il primo record e' diventato il 3° inserito e l'ultimo record e' diventato
il 2° inserito
Ho capito bene ? :-)
Ciao stefano