Newsgroup: it.comp.appl.access
Titolo: Ricerca in una tabella

Non riesco ha fare un ricerca in una tabella con Visual Basic.
Ecco i seguenti modi che ho utilizzato per fare una ricerca in un campo
di una tabella. Nessuno dei tre funziona:
1) si blocca perchè non trova la proprietà NoMatch
Sub TrovaImpiegato()
    Dim dbs As Database, tdf As TableDef
    Dim rst As Recordset, idx As Index
    Dim fldDataFesta As Field
    ' Restituisce il riferimento al database corrente.
    Set dbs = CurrentDb
    ' Restituisce il riferimento alla tabella.
    Set tdf = dbs.TableDefs!Festività
    ' Crea il nuovo indice.
    Set idx = tdf.CreateIndex("CercaData")
    ' Crea e accoda i campi di indice.
    Set fldDataFesta = idx.CreateField("DatatFesta", dbText)
    idx.Fields.Append fldDataFesta
    ' Accoda oggetto Index.
    tdf.Indexes.Append idx
    ' Apre oggetto Recordset di tipo tabella.
    Set rst = dbs.OpenRecordset("Festività")
    ' Imposta indice corrente al nuovo indice.
    rst.Index = idx.Name
    ' Specifica il record da ricercare.
    rst.Seek "=", "25/12/00"
    If rst.NoMatch Then
        Debug.Print "Ricerca non riuscita."
    Else
        Debug.Print "Ricerca riuscita."
End If
    rst.Close
    Set dbs = Nothing
End Sub
2) non funziona perchè non trova la funzione FindFirst
Function TrovaPaese() As Integer
    Dim dbs As Database, rst As Recordset
    Dim DataFesta As String
    ' Restituisce il riferimento al database corrente.
    Set dbs = CurrentDb
    ' Crea un oggetto Recordset di tipo dynaset.
    Set rst = dbs.OpenRecordset("Festività", dbOpenDynaset)
    DataFesta = "25/12/00"
    rst.FindFirst "DataFestività = '" & DataFesta & "'"
    If rst.NoMatch Then
        TrovaPaese = False
    Else
        TrovaPaese = True
    Debug.Print rst!CodFesta
    End If
    rst.Close
    Set dbs = Nothing
End Function
3) non funziona perchè la stringa strSQL non viene riconosciuta come
argomento di OpenRecordset
Sub OrdiniUK()
    Dim dbs As Database, rst As Recordset
    Dim strSQL As String
    ' Restituisce il riferimento al database corrente.
    Set dbs = CurrentDb
    strSQL = "SELECT * FROM Festività WHERE [DataFestività] =
'25/12/00'"
    Set rst = dbs.OpenRecordset(strSQL)
    rst.MoveLast
    Debug.Print rst.RecordCount
    rst.Close
    Set dbs = Nothing
End Sub


Se Datafesta e' un campo di tipo Data
prova a proteggerlo con #
 rst.FindFirst "DataFestività = #" & DataFesta & "#"
Inoltre prova con Format(DataFesta,"dd/mm/yy")
Ciao. ElioP.

Continuo a non riuscire a fare una ricerca in una tabella attraverso
VisualBasic.
Di seguito riporto la procedura utilizzata e l'errore che si verifica.
Function TrovaPaese() As Integer
    Dim dbs As Database, rst As Recordset
    Dim DataFesta As Date
    ' Restituisce il riferimento al database corrente.
    Set dbs = CurrentDb
    ' Crea un oggetto Recordset di tipo dynaset.
    Set rst = dbs.OpenRecordset("Festività", dbOpenDynaset)
    DataFesta = #12/5/2000#
    rst.FindFirst "DataFestività = " & DataFesta
    If rst.NoMatch Then
        TrovaPaese = False
    Else
        TrovaPaese = True
    Debug.Print rst!CodFesta
    End If
    rst.Close
    Set dbs = Nothing
End Function
In riferimento alla proprietà FindFirst si verifica l'Errore di
compilazione: Impossibile
trovare il metodo o il membro dei dati.
La procedura dovrebbe essere corretta perchè l'ho ricopiata dall'esempio
dell'help in
linea, probabilmente manca qualche componente a Visual Basic. Come posso
risolvere il
problema in modo semplice?
Grazie.

 trovare il metodo o il membro dei dati.
Generalmente questo errore si verifica quando non viene
trovato nel recordset il nome del campo specificato come
parametro sul .FindFirst, nel tuo caso "DataFestivitą ",
verifica sulla tabella se ci sono differenze di digitazione.
    Paolo