SQL - Where condizionale

Anonimo
2014-12-09T10:38:53+00:00

Buongiorno a tutti,

vorrei creare una query dipendente dai campi di una maschera. In particolare, la query dovrebbe filtrare una tabella in base a uno (o più) campi della maschera.

Ho pensato di mettere nella clausula WHERE della query qualcosa del tipo "Q_F_Persone.Classificazione=Forms!F_InvioSpam.Classificazione"; ed effettivamente funziona.

Il problema è che se io non scelgo nulla nella casella combinata della maschera (Forms!F_InvioSpam.Classificazione), giustamente la query restituisce una tabella vuota, poiché tutti gli elementi hanno una classificazione. Vorrei, invece, che non scegliendo nulla la query restituisse tutti gli elementi della tabella, indipendentemente dalla loro "classificazione".

E' possibile?

Grazie,

Raul

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

16 risposte

Ordina per: Più utili
  1. Anonimo
    2014-12-09T13:01:42+00:00

    Uhm... perdonami, ma non ho ben capito cosa mi hai suggerito, per una mia limitata conoscenza di visual basic.

    qdf.Parameters(0) mi restituisce "Errore di compilazione, impossibile trovare il metodo o il membro dei dati"

    Che parametro dovrei passare? di che si tratta? E perché senza mettere il criterio like nz il codice funziona correttamente?

    Perdona le mie domande forse banali, ho cercato dei riferimenti in cui capirne di più ma per ora non ho trovato granché...

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-12-09T13:00:28+00:00

    ....dim qdf as dao.querydefs... meglio dim qdf as dao.querydef...

    ciao! Sandro

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-12-09T12:42:34+00:00

    ciao Raul,

    devi passare il parametro come da errore di runtime che trovi come nalla collection parameters come (0) se non ne hai altri...

    prova in questo modo, spero sia corretto, non l'ho provato...in caso facci sapere...!

    Dim rst1 As dao.Recordset

    dim qdf as dao.querydefs

    Set qdf = DBEngine(0)(0).QueryDefs("Q_Invio_Email")

    qdf.Parameters(0) = Me.tuoControlloMaschera

    Set rst 1= qdf.OpenRecordset(dbOpenDynaset)

    ti consiglio di speficifare che si tratta di un dao,recordset, per ado è sempre recordset l'oggetto, quindi meglio esplicitarlo.

    ciao!

    Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-12-09T11:03:03+00:00

    Fantastico Sandro,

    non conoscevo like nz! Funziona alla perfezione!

    Ora però mi si presenta un secondo problema: vorrei utilizzare all'interno di un codice VBA, e quindi uso le istruzioni seguenti:

    Dim db As Database

    Dim rst1 As Recordset

    Set db = CurrentDb

    Set rst1 = db.OpenRecordset("Q_Invio_Email", dbOpenDynaset)

    Quando chiamo il codice, però, viene restituito l'errore seguente:

    Errore di Runtime '3061':

    Parametri insufficienti. Previsto 1.

    Eppure se io apro la query "a mano, l'elenco è corretto.

    Dove sbaglio?

    Grazie di nuovo,

    Raul

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2014-12-09T10:45:44+00:00

    ciao Raul,

    like nz(Forms!F_InvioSpam.Classificazione;"*")

    nei criteri della query,

    facci sapere!

    ciao,Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento