Uso di like in un filtro

di il
3 risposte

Uso di like in un filtro

Ciao a tutti,
devo filtrare i record presenti in una sottomaschera in base alla ragione sociale.
Per fare questo utilizzo due text box nella maschera principale in cui inserisco il carattere che utilizzerò per filtrare i record (es. scelta1 "c" scelta2 "e")
In sostanza il filtro dovrebbe restituire tutti i record compresi tra le lettere "c" e "e"
Per fare questo pensavo bastasse scrivere:

Dim scelta1, scelta2, str As String
scelta1 = Me.TxtDaLett.Value
scelta2 = Me.TxtALett.Value
Me.UnderFrm_PerAssegnazioneOperatori.Form.Filter = "[Ragione Sociale]>=' " & scelta1 & " ' " & "AND" & [Ragione Sociale]<=' " & scelta2 & " ' "
Me.UnderFrm_PerAssegnazioneOperatori.Form.FilterOn = True
Peccato che così facendo restituisce solo i record che iniziano con la lettere "c" e "d" ignorando misteriosamente quelli con la lettera "e".
E qui già non capisco: perchè l'operatore <= funziona solo come minore e non anche come uguale?

Allora ho provato ad utilizzare l'operatore LIKE:

Dim scelta1, scelta2, str As String
scelta1 = Me.TxtDaLett.Value
scelta2 = Me.TxtALett.Value
str = "LIKE  [" & scelta1 & "]*"
Me.UnderFrm_PerAssegnazioneOperatori.Form.Filter = "[Ragione Sociale]='" & str & "'"
Me.UnderFrm_PerAssegnazioneOperatori.Form.FilterOn = True
Il codice non mi da errori ma il filtro non restituisce nulla

In buona sostanza come utilizzo LIKE nel filtro o comunque come posso filtrare i dati in modo che mi restituisca tutto l'intervallo che richiedo (es. dalla lettera A alla lettera D)

Grazie per l'aiuto

Massimo

3 Risposte

  • Re: Uso di like in un filtro

    Se devi estrapolare tutte le Ragioni Sociali la cui INIZIALE è compresa tra C-E devi usare un PATTERN nel LIKE...
    https://support.office.com/en-us/article/use-wildcards-in-queries-and-parameters-in-access-ec057a45-78b1-4d16-8c20-242cde582e0b

    Ti suggerisco di imparare ad usare la Finestra Immediata per provare queste cose... [CTRL+G] si apre una finsetra sotto la parte del codice...!

    Qui scrivi per capire:
    
    ? "Albero" LIKE "A*" 
    Vero
    Ora devi allargare la corrispondenza...!
    
    ? "Banale" LIKE "[C-E]*"
    False
    ? "Canale" LIKE "[C-E]*"
    True
    ? "Fanale" LIKE "[C-E]*"
    False
    Credo sia molto chiaro come si usa....
  • Re: Uso di like in un filtro

    Grazie Alex, risolto!
    Una curiosità però che non riesco a capire:
    perchè l'operatore >= funziona perfettamente mentre <= funziona solo per la parte "minore di" e non "minore e uguale di"

    Grazie

    Massimo
  • Re: Uso di like in un filtro

    Come ti ho detto DEVI fare i test nella finestra immediata, ti accorgeresti che sicuramente stai sbagliando la PREMESSA.
    Esempio:
    
    ? "AB" <= "AC"
    Vero
    
    ? "AC" <= "AC"
    Vero
    
    ? "AD" <= "AC"
    Falso
    ' <----------------Attenzione a QUESTE---------------------<
    ? "ACA" <= "AC"
    Falso
    ? "ABA" >= "AC"
    Falso
    
    Hai riflettuto che in caso di stringhe differenti nel Numero di CHARS... non potrà essere UGUALE ma solo MAGGIORE o MINORE...?

    Quindi mostraci esattamente le stringhe che NON rispettano il confronto.
Devi accedere o registrarti per scrivere nel forum
3 risposte