Filtro multiplo textbox su maschera

di il
9 risposte

Filtro multiplo textbox su maschera

Ciao a tutti, ho il seguente problema:

ho creato una maschera continua basata su una query, quello che voglio fare ora è pigiando un pulsante, filtrare dei record tramite delle textbox; le textbox sono precisamente tre.
Ovviamente devo riuscire a filtrare compilandole tutte a tre o solo alcune.

Il codice che ho inserito sul pulsante è il seguente:


Private Sub Cerca_Click()

Dim strFiltro As String

strFiltro = vbNullString

If Len(Me.ricerca_codice & vbNullString) > 0 Then
strFiltro = strFiltro & "codice = " & Me.ricerca_codice & " AND "
End If

If Len(Me.ricerca_descrizione & vbNullString) > 0 Then
strFiltro = strFiltro & "descrizione='" & Me.ricerca_descrizione & "' AND "
End If

If Len(Me.ricerca_fornitore & vbNullString) > 0 Then
strFiltro = strFiltro & "ragione_sociale='" & Me.ricerca_fornitore & "' AND "
End If


If Len(strFiltro) > 0 Then
Me.FilterOn = False
Me.Filter = strFiltro
Me.FilterOn = True
Else
Me.FilterOn = False
End If

End Sub




mi da errore in questa parte del codice:
Me.Filter = strFiltro

qualcuno mi sa dire dove sbaglio.

Grazie infinite.

9 Risposte

  • Re: Filtro multiplo textbox su maschera

    Il codice va inserito usando i tag del codice... dell'editor del 3d vedi un button con scritto CODE.... usalo.

    Dando per scontato non vi siano anche errori di sintassi credo tu non abbia nemmeno provato a fare debug della stringa perché è estremamente evidente dove sia il problema.
    Peraltro in questo metodo di strutturare il filtro che forse hai trovato nel forum manca proprio un pezzo che avrebbe evitato il problema...

    Se fai un Debug.Print della stringa capisci immediatamente.
  • Re: Filtro multiplo textbox su maschera

    Forse il 3° rigo riporta
    strFiltro = vbNullString
    da lì in poi tutte le If valutano un Len(...) sempre =0, quindi non riesci mai ad assegnare ciò che desideri.
    Penso che quella istruzione vada tolta.
  • Re: Filtro multiplo textbox su maschera

    OsvaldoLaviosa ha scritto:


    ...
    da lì in poi tutte le If valutano un Len(...) sempre =0, ...
    No, valutano un Len di varie textbox, non di strFiltro. La costruzione fino ad un certo punto è "da manuale", pure troppo, nel senso che probabilmente è stata presa senza capirla. Manca l'operazione di "pulizia" della variabile strFiltro da un qualcosa di troppo. Il Debug.Print indicato da @Alex evidenzia subito cosa c'è da togliere e di conseguenza come farlo.
    Si tratta comunque di un argomento trattato svariate volte.
  • Re: Filtro multiplo textbox su maschera

    Philcattivocarattere ha scritto:


    No, valutano un Len di varie textbox, non di strFiltro.
    Maledizione...hai ragione: scusate!

    Me.ricerca_codice è numerico? Se sì...ma non è che poi il problema nasce dal fatto che si vanno a concatenare numeri e stringhe (incautamente) e questo potrebbe creare qualche problema?
  • Re: Filtro multiplo textbox su maschera

    OsvaldoLaviosa ha scritto:


    ...Me.ricerca_codice è numerico? Se sì, la prima sintassi da me indicata come errata, forse è corretta.
    Probabilmente, ma questo solo chi ha a disposizione i dati reali può saperlo.

    OsvaldoLaviosa ha scritto:


    Ma non è che poi il problema nasce dal fatto che si vanno a concatenare numeri e stringhe (incautamente) e questo potrebbe creare qualche problema?
    Osvaldo, ti perdi in un bicchiere d'acqua. Quello che Pippo_012 vuole fare è "ordinaria amministrazione".
    Ovviamente ogni criterio si costruisce con consapevolezza dei delimitatori: quali sono e quando servono.
    Il vero difetto di quel codice è che non si è previsto che la stringa filtro così creata conterrà un qualcosa di troppo che, in quanto tale, deve essere eliminato prima di essere applicato come WhereCondition valida.
    Usando questi termini "If Len(strWH) > 0 Then" con un motore di ricerca il gioco è fatto.
  • Re: Filtro multiplo textbox su maschera

    OsvaldoLaviosa ha scritto:


    Philcattivocarattere ha scritto:


    No, valutano un Len di varie textbox, non di strFiltro.
    Maledizione...hai ragione: scusate!

    Me.ricerca_codice è numerico? Se sì...ma non è che poi il problema nasce dal fatto che si vanno a concatenare numeri e stringhe (incautamente) e questo potrebbe creare qualche problema?
    Osvaldo.... prova a guardare con attenzione la costruzione del criterio.... Non ti pare abbia un pezzo di troppo....? Alla fine....
    Prova ad esempio ad ipotizzare solo 1 criterio.... Non vedi che il concatenatore logico AND non viene rimosso.... come invece facevo io negli esempi da cui è stato copiato questo stralcio di codice....
  • Re: Filtro multiplo textbox su maschera

    OK Phil e @Alex, avete ragione. Non ho capito a quale codice precedente @Alex si riferisce (non importa), ma ricordo molto bene il "trucchetto" di rimuovere parte di stringa superflua in altre occasione capitate anche a me (corrette/suggerite proprio da @Alex).
    Correggetemi se sbaglio: si potrebbe utilizzare un Replace o un Left/Right ben congeniato...adesso mi sfuggono i dettagli.
    Scusate se mi sono intromesso errando a ripetizione.
  • Re: Filtro multiplo textbox su maschera

    OsvaldoLaviosa ha scritto:


    OK Phil e @Alex, avete ragione. ...adesso mi sfuggono i dettagli.
    Clicca qui: e guarda i primi risultati dove puntano.
  • Re: Filtro multiplo textbox su maschera

    OsvaldoLaviosa ha scritto:


    OK Phil e @Alex, avete ragione. Non ho capito a quale codice precedente @Alex si riferisce (non importa), ma ricordo molto bene il "trucchetto" di rimuovere parte di stringa superflua in altre occasione capitate anche a me (corrette/suggerite proprio da @Alex).
    Correggetemi se sbaglio: si potrebbe utilizzare un Replace o un Left/Right ben congeniato...adesso mi sfuggono i dettagli.
    Scusate se mi sono intromesso errando a ripetizione.
    Osvaldo non sono trucchetti.... ma banalissima applicazione logica.
    Se le cose non si capiscono ma si imparano a memoria allora è evidente che si perdono i dettagli addirittura 1+2 sembra diverso da 2+1... ma fa sempre 3
Devi accedere o registrarti per scrivere nel forum
9 risposte