Doppia condizione where in una select di codice VBA

Anonimo
2018-11-30T12:44:54+00:00

Buongiorno a tutti.

Ho necessità di visualizzare alcuni record di una tabella che ne contiene moltissimi utilizzando come filtri 5 caselle combinate che possono o meno essere valorizzate al momento di applicare il codice quale evento sull'evento click di un pulsante.

La tabella che contiene i record si chiama [Scheda corso], la maschera che visualizza i dati si chiama [Cerca corsi] e nell'intestazione della maschera ho creato alcune combo e un pulsante.

Due delle combo si chiamano CboCommittente e CboSottoarea.

Il codice applicato all'evento SuClick è il seguente:

Private Sub PlsClean_Click()

Dim CorsoCercato As String

CorsoCercato = "SELECT * From [Scheda corso] WHERE [Struttura proponente] Like '*" & CboCommittente.Value & "*';"

[Form_Cerca corsi].RecordSource = CorsoCercato

[Form_Cerca corsi].Requery

End Sub

Fin qui funziona perché c'è una sola condizione where,

ma se volessi anche un AND 

WHERE [Sottoarea di intervento] Like '*" & CboSottoarea.Value & "*'

quale dovrebbe essere la sintassi?

Ci sto sbattendo la testa....

Cesare

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
2018-12-03T10:34:42+00:00

Ciao,

prova con:

    strCorsoCercato=""

   IF Len(Me!CboCommittente.Value & "") > 0 Then

       strCorsoCercato= strCorsoCercato & "AND [Struttura proponente] Like '*" & Me!CboCommittente.Value & "*' "

   End If

   If  Len(Me!CboSottoarea.Value & "") > 0  Then

     strCorsoCercato= strCorsoCercato &  "AND [Sottoarea di intervento] Like '*" & Me!CboSottoarea.Value & "*' "

   End If  

   If Len(srCorsoCercato) > 0 Then

     strCorsoCercato = "SELECT * FROM [Scheda corso] WHERE " & Mid(strCorsoCercato,5,Len(strCorsoCercato)

   Else

     strCorsoCercato = "SELECT * FROM [Scheda corso]"

   End If

   Me.RecordSource = strCorsoCercato

Ciao Mimmo

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2018-12-03T10:29:01+00:00

    Grazie Karl.

    C'era un errore nella definizione della seconda comboBox.

    Ora funziona tutto

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-12-03T09:33:42+00:00

    E purtroppo (come prima) non funziona neanche se si imposta soltanto la seconda condizione.

    Sembra proprio che non gli piaccia.

    Cesare

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-12-03T09:27:15+00:00

    Ciao Karl.

    Ti ringrazio per la risposta.

    Purtroppo non funziona ancora. 

    Va bene soltanto se inserisco un valore nella prima combo. Se provo a farlo nella seconda, non funziona più.

    Proprio come prima.

    Cesare

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2018-11-30T13:43:39+00:00

    Salve,

    prova con

    Dim strCorsoCercato As String

    strCorsoCercato = _

        "SELECT * " & _

        "FROM [Scheda corso] " & _

        "WHERE [Struttura proponente] Like '*" & Me!CboCommittente.Value & "*' " & _

        "AND [Sottoarea di intervento] Like '*" & Me!CboSottoarea.Value & "*'"

    Me.RecordSource = strCorsoCercato

    Lascia perdere la riga con Requery che chiama i dati per la seconda volta siccome (ri)assegnare il RecordSource è già l'aggiornamento più forte. Per ottimizzarlo potresti anche fare una prova se una combo ha dati per decidere se serve nel WHERE.

    La risposta è stata utile?

    0 commenti Nessun commento