PDA

Visualizza la versione completa : Indici ed ADO


pusolo
24-10-2002, 10:54
Ragazzi,

io utilizzo come database microsoft access, sto iniziando ad utilizzare il metodo ado in vb però mi sono accorto che il provider ole db 3.51 e 4.0 non supporta l'interfaccia index, però sulle tabelle per effettuare delle ricerche molto + veloci gli indici vengono inseriti sia come chiave primaria che come chiavi secondarie.

La mia domanda è questa: si può utilizzare ado e gli indici che uno crea su access e come si deve fare?

C'è qualcuno che mi può dare una mano anche facendomi vedere qualche riga di programmazione?

Grazie mille e ciao a tutti

ddies
24-10-2002, 11:39
Cioè???

Se tu fai delle query su db access si arrangia il motore jet a chiedere aiuto agli indici che hai definito nel db.

Devi stare accorto tu nelle query in modo da fare delle condizioni di WHERE che siano compatibili con gli indici che hai definito

Gigi84
24-10-2002, 17:35
Ti ha gia risposto Sebamix in un post precedente..

devi aprire una tabella con l'opzione adcmdTableDirect,
impostare la proprietà index del recordset appena aperto:
tuorst.index = "NomeIndice"
e poi usare il metodo seek(che effettuerà le ricerche sul\i campo\i indicizzato\i)

tuorst.Seek "valore da cercare",opzioni di ricerca

se il valore non è stato trovato il recordset sarà su EOF

:ciauz: :ciauz:

pusolo
24-10-2002, 18:40
Grazie della risposta,
ti volevo chiedere se mi potevi far vedere come posso scrivere il codice della seek sotto ado, tu mi hai detto che devo fare così: tuorst.Seek "valore da cercare",opzioni di ricerca
mi puoi fare su esempio e cosa sono le opzioni di ricerca?

ciao

Gigi84
24-10-2002, 23:25
dall'MSDN per le opzioni di ricerca



recordset.Seek ValoriChiave, OpzioneSeek

Parametri

ValoriChiave Matrice di valori VARIANT. Un indice consiste di una o più colonne; la matrice contiene un valore da confrontare con ciascuna delle colonne corrispondenti.

OpzioneSeek Valore SeekEnum che specifica il tipo di confronto da effettuare tra le colonne dell'indice e i corrispondenti ValoriChiave. Può essere una delle seguenti costanti di confronto:

Costante Descrizione
adSeekAfterEQ Cerca una chiave nella stessa posizione di ValoriChiave o nella posizione immediatamente successiva.

adSeekAfter Cerca una chiave nella posizione immediatamente successiva a ValoriChiave.
adSeekBeforeEQ Cerca una chiave nella stessa posizione di ValoriChiave o nella posizione immediatamente precedente.
adSeekBefore Cerca una chiave nella posizione immediatamente precedente a ValoriChiave.
adSeekFirstEQ Cerca la prima chiave uguale a ValoriChiave.
adSeekLastEQ Cerca l'ultima chiave uguale a ValoriChiave.

Osservazioni

Utilizzare il metodo Seek insieme alla proprietà Index se il relativo provider supporta indici sull'oggetto Recordset. Determinare se il provider supporta indici con il metodo Supports (adIndex).

Se Seek non trova la riga richiesta, non si verificano errori e la riga viene spostata alla fine del file. Impostare la proprietà Index all'indice desiderato prima di eseguire il metodo.

Questo metodo può essere utilizzato soltanto quando la proprietà CursorLocation dell'oggetto Recordset ha un valore diverso da adUseClient.


esempio l'indice si chiama indice1 e fa riferimento ad un campo IDOrdine



rst.Index = "indice1"

IdDaCercare = "01001"

rst.movefirst

rst.seek iDDaCercare,adSeekFirstEQ 'così è un findfirst di dao
list1.additem rst("IDOrdine")

do until rst.eof
rst.seek iDDaCercare,adSeekAfter 'così è un findnext di dao
if not rst.eof then list1.additem rst("IDOrdine")
loop


riempi una listbox con i valori trovati.
ad occhio dovrebbe andare.. boh..


ciao!!
:ciauz: :ciauz:

pusolo
25-10-2002, 10:11
Grazie mille delle spiegazioni e dell'esempio, sono chiare, ora le metto in pratica e poi ti farò sapere.

ciao

Loading