Filtrare dati su maschera a 2 o più condizioni tramite InputBox

Anonimo
2015-01-16T11:16:11+00:00

Buongiorno a tutti (ho già creato sulla maschera principale diversi criteri di ricerca, appoggiandomi ad un altra maschera che fa questo e funziona benissimo), anche per mancanza di spazio sulla maschera dove effettuare il filtraggio dei dati di mio interesse, desidero tarmite una Inputbox poter decidere il filtraggio solo ed esclusivamente basandomi su due campi della mia maschera che si chiamano Matricola e Cognome_e_Nome.

Ho creato il codice sottostante che mi permette di filtrare solo su un campo, vi chiedo di poterlo fare basando il criterio di filtro sui due campi de quo in base a quanto si inserisce nella inputbox.

Cioè ottenere (chiedo a voi esperti se ciò si possa fare con la InputBox)  in base a quello che inserisco nella InputBox (si tratta sempre di dati stringa) filtrare i dati basando il criterio di filtro nel campo corrispondente.

Io non riesco a creare un codice che faciliti questo, l'ho in mente, penso che per voi esperti si fattibile e che per facilitarvi meglio la comprensione di quanto vi richiedo gentilemente vi dice che  Il campo Matricola è semore composto da 6 cifre ed una lettera finale es. 888555A;123466R e cosi via, quindi penso che per poter far capire al codice che, inserendo questi caratteri alfanumerici il campo su cui basare il filtro è il campo Matricola.

Spero di essere stato chiaro nella descrizione e comprensibile.

Ho scelto l'opzione della InputBox poichè l'ho ritenuta più utile al mio Db ( ha controlli bloccati all'apertura del Form , quindi utilizzare altro metodo di filtro mi obbligherebbe e sbloccare il controllo e poi proseguire con altre operazion eecc.).

questo è il codice che ho ncreato.

Private Sub cmdFiltra_Click()

Dim Ricerca As String

  Ricerca = InputBox("Inserisci il dato da Filtrare")

  Me.Filter = "[Matricola] = Ricerca"

  Me.FilterOn = True

End Sub

Vi chiedo inoltre se ci sia la possibilità di inserire del codice che mi avvisi che il dato da filtrare non esite.

Ringrazio tutti coloro che vorranno aiutarmi in questo.

Ciao, Nicola.

P.S. Ho effettuato varie ricerce nel forum ma non ho trovato domande uguali alla mia richiesta di aiuto.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2015-01-16T14:56:03+00:00

Ho leggermente modificato il tuo codice ma non l'ho testato:

Option Compare Database

Option Explicit

Private Sub cmdFiltra_Click()

  Dim Ricerca As String

  Dim varReturn As Variant

  Dim varReturn1 As Variant

  Ricerca = InputBox("Inserisci il dato da Filtrare")

  Ricerca = Trim(Ricerca)                            ' elimina spazi in eccesso

  If Ricerca <> "" Then                              ' se è stato digitato qualcosa

     If IsNumeric(Mid(Ricerca, 1, 6)) = False Then   ' che non è numerico nei primi 6 caratteri

        varReturn1 = DLookup("Cognome_e_Nome", "TblAnagrafica", "[Cognome_e_Nome] =  '" & Ricerca & "'")

        If Not IsNull(varReturn1) Then

           Me.Filter = "[Cognome_e_Nome] = '" & Ricerca & "'"

           Me.FilterOn = True

        Else

           MsgBox "Record Non Trovato", vbInformation, "Assenza del dato Filtrato"

        End If

     Else

        varReturn = DLookup("Matricola", "TblAnagrafica", "[Matricola] =  '" & Ricerca & "'")

        If Not IsNull(varReturn) Then

           Me.Filter = "[Matricola] =  '" & Ricerca & "'"

           Me.FilterOn = True

        Else

            MsgBox "Record Non Trovato", vbInformation, "Assenza del dato Filtrato"

        End If

     End If

  End If

End Sub

Mimmo

La risposta è stata utile?

0 commenti Nessun commento

11 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-01-16T15:43:06+00:00

    Si certo Mimmo ed è scritto cosi Cognome e Nome :tipo testo 150 caratteri.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-01-16T15:34:33+00:00

    In tabella tblAnagrafiza esiste il campo Cognome_e_Nome?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-01-16T15:14:01+00:00

    Ciao Mimmo che piacere vedere sistemato il mio codice, ti ringrazio nuovamente, comunque il codice sembra  (con tante prove che ho fatto, ho verificato bene tutti i dati inseriti nella INputBox) non funzionare con la ricerca del nome e cognome, mentre per tutti il resto risponde benissimo. 

    Dimmi se ti devo dare maggiori informazioni per poter individuare prima possibile la causa.

    Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-01-16T14:46:19+00:00

    Mimmo, ho testato il tuo codice, te lo posto, ma alle due righe remmate ( quando inserisco nella INPUTBOX la matricola oppure il Cognoe e Nome) mi dà il seguente errore: Errore di run-time 424 necessario oggetto.

    Private Sub cmdFiltra_Click()

    Dim Ricerca As String

    Ricerca = InputBox("Inserisci il dato da Filtrare")

    If IsNumeric(Left(Ricerca, 5)) Then

    If DFirst("Matricola", "TblAnagrafica", "[Matricola] = '" & Ricerca & "'") Is Null Then ' errore segnalato

          MsgBox "Matricola inesistente !", vbInformation 

       Else 

            Me.Filter = "[Matricola] = '" & Ricerca & "'" 

       End If

    Else 

       If DFirst("Cognome_e_Nome", "TblAnagrafica", "[Cognome_e_Nome]= '" & Ricerca & "'") Is Null Then 'errore segnalato

          MsgBox "Nominativo inesistente !", vbInformation 

       Else 

            Me.Filter = "[Cognome_e_Nome] = '" & Ricerca & "'" 

       End If 

    End If

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento