Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65

    [ACCESS] Baco di query su tabelle che richiamano un valore di un campo = Null

    Ho scoperto una cosa strana se inserisco i criteri direttamente in una query parametrica che richiama i campi da una tabella.

    Mettiamo di avere una tabella:
    Nome Cognome
    Paolo
    Marco Rossi

    Mettiamo di inserire un criterio nel campo Cognome di una query richiamata da un form:
    Like Nz([forms]![RICERCA]![Cognome],"*")

    La query elencherà erroneamente solo un record corrispondente a
    Marco Rossi
    perchè Paolo non è stato inserito il dato cognome.

    E' un problema che ho io sul mio computer o è un baco mostruoso di Access?
    O c'è un modo per ovviare alla mancata elencazione del record?
    Grazie

  2. #2
    ciao... non è un bug... e non è tantomeno colpa del tuo pc...
    il campo in cui manca il cognome ha un valore ben preciso: Null
    puoi tirare fuori i campi Null solo specificandoli... altrimenti dovresti fare così:
    Inserisci nei campi in cui non metti nulla (Null) una stringa vuota('') così anche se userai like funzionerà ugualmente....
    I database... la mia passione + o -

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    Avevo pensato anch'io di fare come mi suggerisci.
    Però vorrei capire se è possibile risolvere il problema senza cercare dei surrogati.

    cmq grazie

  4. #4
    Utente di HTML.it L'avatar di Mychy
    Registrato dal
    Oct 2000
    Messaggi
    794
    oppure inserisci or Null nella query, ma non credo che sia la cosa migliore

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    In che senso inserisci il Null nella query?
    pootresti darmi più indoicazioni?

    Io ho provato con le condizioni qui sotto indicate ma non c'è verso ....
    Like IIf(IsEmpty([forms]![RICERCA]![Nome]);[nome];"*" & [forms]![RICERCA]![Nome] & "*")
    Like IIf(IsNull([forms]![RICERCA]![Nome]);[nome];"*" & [forms]![RICERCA]![Nome] & "*")

  6. #6
    L'unica soluzione che ho trovato perfettamente funzionante è ricorrere alla funzione nz([campo],valore alternativo). Questa funzione analizza il valore di [campo] e nel caso di valore null restituisce il valore alternativo, nel tuo caso potresti mettere un valore stringa vuota "", oppure un testo descrittivo del tipo "[nessun valore]", ecc. Ti assicuro che questa funzione è una vera bomba. Attenzione al contesto dove la usi: nel modulo di evento va scritta con la virgola nz([campo],valore alternativo), come parametro in SQL va scritta col punto e virgola nz([campo];valore alternativo)

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    E' una vera bomba nel senso che se la uso mi tagliano i "maroni" dal momento mi fa cannare tutte le query. Se fai attenzione (ed è la prima cosa che ho notato quando l'ho usata per la prima volta) ignora completamente i valori Null in una tabella: ovvero se in una campo della tabella non inserisci nulla (del resto non tutti i dati di una tabella sono obbligatori da compilare) la query non ti restituisce il record.

    Se si usa un solo campo di una form per costruire una semplice query con un parametro, usando
    [Forms]![RICERCA]![Cognome] Or [Forms]![RICERCA]![Cognome] Is Null
    si risolve il problema.
    Ma per un motore di ricerca con 40 parametri diversi bisogna inevitabilmente risolvere costruendo la query in VBA.

    Grazie cmq per lo sforzo, ho apprezzato veramente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.