PDA

Visualizza versione completa : ricerca in vb


pina
24-07-2001, 10.36.41
Ho un problemino con il pulsante ricerca:
Ecco il codice :
Private Sub Ricerca_Click()
'ricerca un nome all'interno del database
Dim nomedacercare As String
nomedacercare = InputBox$("immettere il nome da cercare:", "ricerca nel database")
If nomedacercare <> "" Then
'esegue la ricerca solo se stato immesso un nome.
Database.Recordset.Index = "nome"
Database.Recordset.Seek "=", nomedacercare
If Database.Recordset.NoMatch Then
Database.Recordset.MoveFirst
Database.Refresh
'il nome cercato non stato trovato
MsgBox "nome non trovato.", vbInformation, Me.Caption
End If
End If
End Sub

Sul pulsante ricerca clikkandoci mi apre la finetra x digitare il nome da cercare e fatto ok
mi da il seguente errore
errore di run-time 3015
'nome' non un indice di questa tabella. esaminare l'insieme indexes
dell'oggetto tavledef x determinare i nomi di indice validi
e la riga di codice sbagliata :Database.Recordset.Index = "nome"
Su un database di Microsoft Jet, stato richiamato il metodo Update o CancelUpdate ma prima
di scrivere dati in un record non stato utilizzato il metodo AddNew o Edit.

Cosa devo fare?
Grazie

Liam
25-07-2001, 20.52.16
Ti premetto che non ho un'esperienza pluriennale con Ado e simili, per penso che il tuo problema sia che non hai creato prima l'indice. Un esempio potrebbe essere questo:

Dim tb as tabledef
Dim id as index
set tb = database.tabledefs("tabella")
set id = tb.createindex("NomeIndice")

'poi devi scegliere i campi sui quali deve lavorare l'indice
'ad esempio

id.createfield("Cognome")

'e cos via poi accodi l'indice alla tabella

tb.indexes.append id
tb.indexes.refresh


Dopo aver eseguito queste righe il tuo codice dovrebbe funzionare, ovviamente come database.index devi mettere in questo caso "NomeIndice". Spero di non aver dimenticato niente.

Ciao ciao ;)

pina
28-07-2001, 11.01.54
Scusa la mia ignoranza, ma tutto questo codice dove devo inserirlo? All'interno del pulsante ricerca? Grazie!

Liam
28-07-2001, 12.19.39
Puoi inserirlo sia nella routine del pulsante di ricerca che prima, la cosa pi comoda forse metterlo nella stessa routine dove ti sei creata il database e il recordset. Comunque la cosa importante che quando premi il pulsante ricerca il codice sia gi eseguito (o venga eseguito nella stessa routine, appunto) - scusa il giro di parole

Liam
29-07-2001, 12.23.13
Ah scusa di nuovo manca qualcosa nel codice: mi ero dimenticato di accodare il campo: la riga dove c' scritto id.createfield("Cognome") sostituiscila con id.fields.append id.createfield("Cognome) senn non funziona. Poi ripensandoci il codice forse meglio che lo inserisci fuori dal pulsante di ricerca, altrimenti ti viene generato un errore che puoi intercettare.

Te l'avevo detto che ero un po' arrugginito :D:D

Ciao ciao ;)

pina
30-07-2001, 09.58.27
fuori dove?

Liam
30-07-2001, 12.13.32
Ad esempio in un modulo poi fai un tasto provvisorio "Crea Indice" lo esegui, poi non hai pi bisogno di richiamare la funzione perch l'indice viene accodato in maniera permanente al database.

Ciao ciao

pina
31-07-2001, 18.35.01
Questo il codice x creare un indice su
2 campi della tabella ke si trova nel mio database:

Dim tb As tabledef
Dim id As Index
Set tb = Database.tabledefs!tabella
'creazione indice
Set id = tb.createindex("codiceindex")
'primo campo
id.fields.append id.createfield("1campo")
'secondo campo
id.fields.append id.createfield("2campo")
'accodamento dell'indice id nella definizione di tabella
tb.indexes.append id
tb.indexes.Refresh

ma non mi funziona! Sono disperata! :-(
L' errore me lo da nella prima riga!