Errore 2185 su ricerca non trovato

di il
9 risposte

Errore 2185 su ricerca non trovato

Sto implementando una campo di testo per fare delle ricerche.

Trova il record tutto ok mentre se non trova il record da errore 21 85 e poi la funzione ricerca non funziona più'.

La funzione ricerca che utilizzo

Public Function ricerca_key(key, filtro_sql)
On Error GoTo errHandler
With CodeContextObject
.Form.AllowEdits = True
If Len(.Form.Controls("ricerca").Text) > 0 Then
Select Case key
Case Is = 32  ' code space
.Form.Controls("ricerca").Value = .Form.Controls("ricerca").Value & " "
End Select
  .Form.Filter = filtro_sql
  .Form.FilterOn = True
  .Form.Controls("ricerca").SelStart = Len(.Form.Controls("ricerca").Value)
Else
.Form.Requery
End If
End With
Exit Function
errHandler:
If Err.Number = "2185" Then
Exit Function
End If
MsgBox Err.Number & " - " & Err.Description, vbOKOnly, "Error ..."
End Function

9 Risposte

  • Re: Errore 2185 su ricerca non trovato

    È normale. Se intercetta l'errore 2185 c'è l'istruzione exit function. 

  • Re: Errore 2185 su ricerca non trovato

    Ad ogni modo ci sono cose strane in questo codice.

  • Re: Errore 2185 su ricerca non trovato

    Se vuoi risolvere il problema, senza perdere tempo, è necessario che posti un file di esempio.

  • Re: Errore 2185 su ricerca non trovato

    Temo che l'errore 2185 possa emergere in seguito ad un Criterio NON COERENTE, in questo caso l'utilizzo della gestione errori fa poco da sola… nel senso che non capirai perchè…!

    Stampa la stringa che passi alla funzione(funzione inutile e sbagliata usa l'evento KeyPress anche perchè KEY dovrebbe ritornare alla funzione chiamante.. in quanto potrebbe essere invalidato il Key usando Key=0 byRef)

    Il Requery non servassolutamente perchè lo usi…? Già quando attivi FilterOn viene generato il requery in modo nativo…

    Insomma hai fatto tutto in modo molto pasticciato…

  • Re: Errore 2185 su ricerca non trovato

    In una maschera  vengono richiamati tutti gli utenti in base ad una query poi il codice sotto è come richiamo la funzione ricerca da una casella di teasto non associata:

    Private Sub ricerca_KeyUp(KeyCode As Integer, Shift As Integer)
     ricerca_key KeyCode, "[ID] LIKE '*" & Me.Ricerca.Text & "*' OR [UTENTE] LIKE '*" & Me.Ricerca.Text & "*'"
    End If
    End Sub

    Ricordo che se l'utente viene trovato funziona

  • Re: Errore 2185 su ricerca non trovato

    Io eviterei Requery se non trovi nulla…!

    Private Sub ricerca_KeyUp(KeyCode As Integer, Shift As Integer)
    	Dim sWH	As String
    	sWH="[ID] LIKE '*" & Me.Ricerca.Text & "*' OR [UTENTE] LIKE '*" & Me.Ricerca.Text & "*'"
    	with Me.RecordsetClone
    		.FindFirst sWH
    		If Not .NoMatch then	
    			Me.Filter=sWH
    			Me.FilterOn=True
    		End If
    	End With
    End Sub
  • Re: Errore 2185 su ricerca non trovato

    08/07/2024 - lucavalentino ha scritto:


    Private Sub ricerca_KeyUp(KeyCode As Integer, Shift As Integer)
     ricerca_key KeyCode, "[ID] LIKE '*" & Me.Ricerca.Text & "*' OR [UTENTE] LIKE '*" & Me.Ricerca.Text & "*'"
    End If
    End Sub

    Ricordo che ricerca_key è una funzione esterna che si trova ad inizio discussione

  • Re: Errore 2185 su ricerca non trovato

    08/07/2024 - lucavalentino ha scritto:


    08/07/2024 - lucavalentino ha scritto:


    Private Sub ricerca_KeyUp(KeyCode As Integer, Shift As Integer)
     ricerca_key KeyCode, "[ID] LIKE '*" & Me.Ricerca.Text & "*' OR [UTENTE] LIKE '*" & Me.Ricerca.Text & "*'"
    End If
    End Sub

    Ricordo che ricerca_key è una funzione esterna che si trova ad inizio discussione

    Quella funzione è scritta male ed usata peggio… per come è scritta addirittura direi che è inutile sia esterna dal momento che poi VINCOLI alla presenza del controllo “RICERCA”… che invece potresti fare all'interno della Form…!

    Sei poi stato costretto a gestire il Key=32 per il semplice fatto che non hai passato il parametro come Riferimento… è tutto veramente assurdo ed inutile…!

    Quindi sul fatto sia “scritta fuori” se vuoi ne possiamo parlare tecnicamente… ma a prescindere da questo… cosa ci vuole ad adattarla dal momento che lavora sul CodeContextObject…?

    Nulla, il codice che ti ho passato è da copia/incollare, invcece di usare il [Me] sul RecordsetClone userai il CodeContextObject

  • Re: Errore 2185 su ricerca non trovato

    Forse non è la miglior soluzone però ho risolto così

    Prima nel With CodeContextObject recupero il nome del for cosi maschera = .Form.name poi su errore 2185 eseguo tale codice

    errHandler:
    If Err.Number = "2185" Then
    Forms(maschera).FilterOn = False
    Forms(maschera).Form.Controls("ricerca") = Null
    Forms(maschera).Form.Controls("ricerca").SetFocus
    End If
    end Function
Devi accedere o registrarti per scrivere nel forum
9 risposte