Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 1 su 1

[ACCESS] Query - Selezionare tutti i Record se il Criterio Nullo

  1. #1
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Capita di dover scrivere Queries che comprendano PARAMETRI riferiti a Controlli presenti in Maschere, la situazione pi evidente l'uso di COMBOBOX per la selezione di Criteri.
    SELECT * FROM T1
    WHERE [CampoX]=Forms!NomeForm!NomeCombo
    
    Nel caso in cui la Combo abbia valori NULLI la query restituirebbe tutti i record corrispondenti, probabilmente ZERO, ma spesso si vorrebbe venissero mostrati tutti come se il Criterio non fosse inserito.

    Per ovviare a questo comportamento, che non un'errore, si pu scrivere diversamente il predicato SQL
    SELECT *
    FROM T1
    WHERE [CampoX]=Forms!NomeForm!NomeCombo OR Forms!NomeForm!NomeCombo IS NUll;
    
    Questo predicato valido per tutti i Tipi di Campo(Date,Numeri,Testo...) ed evita il Casting dei dati che avverrebbe con l'uso del LIKE ...."*"

    Chiaramente applicabile anche con HAVING.

    La spiegazione tecnica del predicato si ottiene sostituendo ai 2 Criteri messi in OR LOGICO il valore logico risultante:
    SELECT *
    FROM T1
    WHERE FALSE OR TRUE;
    
    La logica Booleana dice che [FALSE OR TRUE] = TRUE quindi come definire la selezione di TUTTI i records senza un criterio.



    Tuttavia vorrei far notare che l'ottimizzazione delle Queries una cosa seria che purtroppo nessuno degli utenti di Access fa, e che richiede la valutazione dei piani di esecuzione delle Queries per capire quale predicato venga eseguito con minor impatto ad ogni passata.
    Ci sono predicati SQL che obbligano JET ad effettuare N Volte esecuzioni parziali del predicato ed a valutarne il risultato in un ulteriore passaggio, e questo accade per ogni RECORD.
    Il risultato avere Queries LENTE e non si capisce il perch, e spesso si incolpa, per incompetenza, Access(JET) come motore di DB non performante...!
    Ultima modifica di @Alex; 30-08-2011 16:39 
    ℹ️ Leggi di pi su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Selezionare tutti i record di una query se il criterio nullo
    Da luca013 nel forum Microsoft Access
    Risposte: 16
    Ultimo Post: 31-05-2017, 08:57
  2. query con criterio nullo
    Da francesco606 nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 05-11-2016, 17:53
  3. Risposte: 7
    Ultimo Post: 23-06-2015, 15:14
  4. dlookup, criterio e valore nullo
    Da CESABAS nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 17-09-2014, 09:13
  5. Risposte: 2
    Ultimo Post: 05-12-2011, 14:46