Query con iif

di il
27 risposte

27 Risposte - Pagina 2

  • Re: Query con iif

    19/04/2024 - fogliolina ha scritto:


    ho capito bene la funziona valuta il primo argomento e se è null restituisce il secondo argomento,

    ripeto: non avrai MAI null come annualità e/o stato pratica. hai creato un bug.

  • Re: Query con iif

    19/04/2024 - sihsandrea ha scritto:


    Forse mi sono espresso male…

    condizioni che hai inserito:

    stato pratica….. tradotto: se campo stato pratica è vuoto allora mostra tutto altrimenti mostra per stato pratica.

    domanda: c'e' la possibilità che stato pratica sia vuoto? suppongo di no!

    allora la if deve solo prevedere il caso in cui serve uno specifico stato pratica.

    supponendo che la combo attinge ad una tabella statiavanzamento con:

    id       stato

    0         tutti

    1         inserita

    2         in elaborazione

    3         completata

    se combo<> tutti statopratica=combo

    diverso il discorso per l'annualità che non credo contenga null o ''

    supposto che sia un campo testo,

    se editboxannualità <>'' allora annualità=editbox

    in entrambi i casi: se hai un valore unico da cercare si attiva il filtro altrimenti è come se non ci fosse filtro.

    il filtro lo attivi al cambiamento valore della combo per lo stato

    all'evento click dell'editbox per l'annualità

    per l'editbox: premendo invio controlli 

    a) il testo è ''

    b) il testo è un anno valido

    se una delle due è verificata lanci il filtro altrimenti mandi un messaggio ‘il valore editbox non è un anno valido!’

    porti editbox a '' o all'ultimo valore inserito e non fai il requery.

    il problema è che nella tabella non ho id 0 stato tutti

    inizialmente era la soluzione che avevo pensato, inserisco nella tabella un record per tutti e nel criterio faccio il controllo se è stato scelto tutti o se uno stato scelto uno in particolare…. ma non posso perchè quella tabella non è una tabella creata per questa combo, inoltre viene anche utilizzata per alimentare una combo in un'altra maschera dove l'utente cambia lo stato della pratica in base alla sua elaborazione, quindi nella combo gli uscirebbe anche tutti e non va bene

    ho avuto “un'illuminazione” in questo momento… vediamo se è una buona illuminazione… questa combo non la devo basare sulla tabella esistente, ma nella creazione fare l'immissione personalizzata e creare quindi lì le opzioni da far visualizzare… 

    così facendo viene usato il filtro o meno in base alla scelta tutti o di uno stato specifico

    ora provo

  • Re: Query con iif

    19/04/2024 - sihsandrea ha scritto:


    19/04/2024 - fogliolina ha scritto:


    ho capito bene la funziona valuta il primo argomento e se è null restituisce il secondo argomento,

    ripeto: non avrai MAI null come annualità e/o stato pratica. hai creato un bug.

    null ce l'ho se l'utente non seleziona nulla dalla combo per stato pratica e se non inserisce un valore per l'annualità

  • Re: Query con iif

    19/04/2024 - fogliolina ha scritto:


    19/04/2024 - sihsandrea ha scritto:


    19/04/2024 - fogliolina ha scritto:


    ho capito bene la funziona valuta il primo argomento e se è null restituisce il secondo argomento,

    ripeto: non avrai MAI null come annualità e/o stato pratica. hai creato un bug.

    null ce l'ho se l'utente non seleziona nulla dalla combo per stato pratica e se non inserisce un valore per l'annualità

    Una combo che preleva da tabella non ha null forse testo=''

    Ma inserire un record ‘tutti’ o fare l'sql con union “”, “”, “”

  • Re: Query con iif

    Allora ho sostituito la combo nella maschera e ora la combo ha i valori immessi manualmente e non più prelevati dalla tabella, così ho potuto inserire anche la voce tutti

    nella query adesso devo inserire il criterio che se è stato specificato tutti non deve filtrare le pratiche, mentre se è stato scelto uno stato deve prelevare solo le pratiche che soddisfano il criterio

    il problema però è che l'iif vuole argomento sia per true che per false, quindi se scrivo iif([Forms]![maschera_report]![statoPratica]<>"Tutti"; [Forms]![maschera_report]![statoPratica]….   poi devo scrivere cosa fare se è tutti…

  • Re: Query con iif

    19/04/2024 - sihsandrea ha scritto:


    19/04/2024 - fogliolina ha scritto:


    19/04/2024 - sihsandrea ha scritto:


    19/04/2024 - fogliolina ha scritto:


    ho capito bene la funziona valuta il primo argomento e se è null restituisce il secondo argomento,

    ripeto: non avrai MAI null come annualità e/o stato pratica. hai creato un bug.

    null ce l'ho se l'utente non seleziona nulla dalla combo per stato pratica e se non inserisce un valore per l'annualità

    Una combo che preleva da tabella non ha null forse testo=''

    Ma inserire un record ‘tutti’ o fare l'sql con union “”, “”, “”

    null non è quello che preleva dalla tabella, ma il valore della combo se l'utente non seleziona nulla nella combo

  • Re: Query con iif

    19/04/2024 - fogliolina ha scritto:


    nella query adesso devo inserire il criterio che se è stato specificato tutti non deve filtrare le pratiche, mentre se è stato scelto uno stato deve prelevare solo le pratiche che soddisfano il criterio

    Se <> tutti allora combo… basta.

    Non se = tutti

    Solo se la combo seleziona una voce da filtrare il criterio viene considerato e tutti non è un valore da filtrare.

    19/04/2024 - fogliolina ha scritto:


    null non è quello che preleva dalla tabella, ma il valore della combo se l'utente non seleziona nulla nella combo

    Se la tabella è associata ad una lista la combo ha come item il primo valore anche se testo=''

    Appena selezioni una voce allora item=testo.

    Ergo se vuoi usare il valore del testo allora combo.testo

    Se dai il componente senza specificare il testo allora prende l'item associato (il primo record della tabella associata) per cui non sarà mai null.

    La combo, oltre all'assiciazione alla tabella permette di scrivere testo libero anche ‘’ ma in questo vaso devi specificare il testo non l'item. 

  • Re: Query con iif

    19/04/2024 - sihsandrea ha scritto:

    Se <> tutti allora combo… basta.

    non si può… nella query uso la funzione iif che argomento obbligatorio sia per true che per false

  • Re: Query con iif

    19/04/2024 - fogliolina ha scritto:


    19/04/2024 - sihsandrea ha scritto:

    Se <> tutti allora combo… basta.

    non si può… nella query uso la funzione iif che argomento obbligatorio sia per true che per false

    Iif <>tutti; combo; stato=not null;

    Ah questo acces…

    Passa a delphi!

  • Re: Query con iif

    Forse se posti il file di access, su un sito di condivisione, riusciamo a capire veramente qualche cosa.

    Quello che ti avevo suggerito deve funzionare.

  • Re: Query con iif

    20/04/2024 - Stifone ha scritto:


    Forse se posti il file di access, su un sito di condivisione, riusciamo a capire veramente qualche cosa.

    Quello che ti avevo suggerito deve funzionare.

    È possibile utilizzare la funzione Nz per restituire zero, una stringa di lunghezza zero (" ") o un altro valore specificato quando Variant è Null. Ad esempio, puoi utilizzare questa funzione per convertire un valore Null in un altro valore e impedirne la propagazione attraverso un'espressione.

    Sintassi

    NZ ( variante [ , valore se nullo ] )

    Ma se mette:

    filtro1 “pratica amministrativa” e filtra…

    Filtro1 “pratica commerciale” e filtra…

    Filtro1 “” e non filtra è perché non ci sono record con tioo pratica non valorizzato (null)

    Nz non servirà mai…

    Filtro2 “inserita” e filtra…

    Filtro2 “inlavorazione” e filtra…

    Filtro2 “” e non filtra… idem come sopra.

    Filtro3  “2000” e filtra…

    Filtro3. “2024” e filtra…

    Filtro3 “” e non filtra… idem come sopra.

    In soldoni: non ha campi null. In base alla descrizione microsoft di cui sopra, Nz non viene richiamato mai perché non troverà MAI campi null.

    Default senza filtro:

    Iif (combo=tutti, campo<>null, campo=combo)

    Oppure

    Iif (combo=tutti, campo<>'ciao', campo=combo)

    Default con filtro:

    Iif (combo<>tutti, campo=combo, campo<>null)

    Oppure

    Iif (combo<>tutti, campo=combo, campo<>'ciao')

  • Re: Query con iif

    Per includere tutti:

    https://www.youtube.com/watch?v=PSo-UeCp3ak

  • Re: Query con iif

    22/04/2024 - sihsandrea ha scritto:


    Per includere tutti:

    https://www.youtube.com/watch?v=PSo-UeCp3ak

    grazie, utilissimo. ora vedo come applicarlo al mio caso visto che il mio caso è un po' diverso, io ho una maschera con la combo e cliccando sul pulsante invio mi apre un report. 

    ora studio un po' e cerco di capire come adattare il tutto al mio caso

    grazie

Devi accedere o registrarti per scrivere nel forum
27 risposte