Iif in query su campo calcolato

di il
11 risposte

Iif in query su campo calcolato

Ciao a tutti ho un problema forse semplice forse difficile , per me molto difficile.

in una maschera faccio vedere dei risultati da una query.

mi esce q.ta acquistata e q.ta venduta e un campo calcolato che mi fa la differenza e mi fa vedere i prodotti in casa sia a zero che quelli presenti. e tutto funziona.

poi ho messo un pulsante di opzione che mi dice di non farmi vedere i risultati uguali a zero ma solo quelli con quantita presente.

nella query ho messo un campo espressione che fa il calcolo dicendo  quntita venduta - quantia acquistata e lui funziona facendomi vedere la differenza.

nei criteri ho messo un iif che dice se il pulsante opzione è selezionato fammi vedere solo quelli senza la presenza dello zero oppure tutti

tutto funziona ma quando apro la maschera oppure clicco sul pulsante mi compare un pop up che mi dice IMMETTERE IL VALORE NEL CAMPO, io non faccio nulla faccio solo ok è tutto funziona ma non capisco come dire al campo calcolato di prendere quel valore senza farmi uscire la finestra.

la mia situazione è questa

campo calcolato si chiama :    NettoCasa: [NDettOrdRitiro].[QtaCasa]-Nz([N-QuerySommaVendtia].[SommaDiQuantitaVEN])

in criteri ho messo: IIf([Maschere]![N-Magazzino]![zero]=Vero;[NettoCasa]>0;[NettoCasa] Is Not Null) Or >0

so che l'errore è che dovrei dire dove si trova [NettoCasa] ma come faccio a dirlo? ([zero] è il nome del mio pulsante opzione)

quando lo faccio in una tabella normale di solito ho: 

- campo: QtaCasa

- tabella: NDettOrdRitiro

ma nel caso del campo calcolato non ho il valore della tabella e quindi lui non capisce.

spero di essere stato chiaro e vi ringrazio per l'aiuto

11 Risposte

  • Re: Iif in query su campo calcolato

    Il quadro non è charissimo…

    Immagino che il criterio sia nella query sul campo [NettoCasa]; in questo caso non devi riportare il nome del campo nel criterio ma solo “>0” o "Is Not Null"

    Non sono un esperto ma credo che la IIf così come scritta non possa funzionare in un criterio

    Prova a usare due criteri in OR senza la IIF

           ( [Maschere]![N-Magazzino]![zero] AND >0) OR (NOT [Maschere]![N-Magazzino]![zero] AND Is Not Null)

    In questo modo se l'Opzione [zero] è selezionata vedi tutti i record per i quali [NettoCasa]>0 altrimenti vedi Tutti i record con [NettoCasa] non nullo compreso lo zero.

  • Re: Iif in query su campo calcolato

    Grazie per la risposta Andre, cosi in effetti funziona, ma facendo come dici tu quando apro la maschera non esce nessun record e i record escono giusti quando fleggo l'opzione. come posso fare per far si che quando apro la maschera mi escano tutti i record solo maggiori di zero. e solo se fleggo l'opzione cambino i risultati.

    grazie in anticipo

  • Re: Iif in query su campo calcolato

    04/03/2023 - francesco34 ha scritto:


    IIf([Maschere]![N-Magazzino]![zero]=Vero;[NettoCasa]>0;[NettoCasa] Is Not Null) Or >0

    Questa riga cosa dovrebbe fare….? Possiamo analizzarla prima di avanzare ipotesi strane…?

    Non Vi sembra errata a prescindere…?

    Spiegacela bene…

  • Re: Iif in query su campo calcolato

    Ma

    AND >0

    che vuol dire?

  • Re: Iif in query su campo calcolato

    Quello che volevo dire era scrivere il criterio così

  • Re: Iif in query su campo calcolato

    Ah… ma bisogna fare attenzione alla sintassi se si scrivono dei comandi e delle istruzioni.

  • Re: Iif in query su campo calcolato

    Grazie a tutti ora funziona ma si sorge un altro problema da quando ho messo il pulsante di opzione, le caselle di ricerca funzionano solo in caso di opazione vero e in caso di opzione su falso la ricerca non funziona piu. secondo voi come mai.?

    come ricerca uso

    Like "*" & [Maschere]![N-Magazzino]![CercaProdotto] & "*"

  • Re: Iif in query su campo calcolato

    come posso inserire immagini che non mi permette di farlo l'editor
  • Re: Iif in query su campo calcolato

    Questa è la query sql che esegue

    WHERE (((Query1clientiRitiro.Ragionesociale) Like "*" & [Maschere]![N-Magazzino]![PresaDa] & "*") AND 
    ((Query2clientiConsegna.Ragionesociale) Like "*" & [Maschere]![N-Magazzino]![SiTrova] & "*") AND 
    ((NDettOrdRitiro.Descrizione) Like "*" & [Maschere]![N-Magazzino]![CercaProdotto] & "*") AND 
    (([Maschere]![N-Magazzino]![zero])=True) AND 
    (([NDettOrdRitiro].[QtaCasa]-Nz([N-QuerySommaVendtia].[SommaDiQuantitaVEN]))>0)) 
    OR ((([Maschere]![N-Magazzino]![zero])=False) AND 
    (([NDettOrdRitiro].[QtaCasa]-Nz([N-QuerySommaVendtia].[SommaDiQuantitaVEN])) Is Not Null));

  • Re: Iif in query su campo calcolato

    09/03/2023 - francesco34 ha scritto:


    come posso inserire immagini che non mi permette di farlo l'editor

    prova a ridurre le dimensioni dell'immagine vedrai che la prende

  • Re: Iif in query su campo calcolato

    09/03/2023 - francesco34 ha scritto:


    le caselle di ricerca funzionano solo in caso di opazione vero e in caso di opzione su falso la ricerca non funziona piu. secondo voi come mai.?

    Ho “riordinato” la tua where così puoi vedere perchè non funziona

    WHERE 
    (
    ((Query1clientiRitiro.Ragionesociale) Like "*" & [Maschere]![N-Magazzino]![PresaDa] & "*") AND 
    ((Query2clientiConsegna.Ragionesociale) Like "*" & [Maschere]![N-Magazzino]![SiTrova] & "*") AND 
    ((NDettOrdRitiro.Descrizione) Like "*" & [Maschere]![N-Magazzino]![CercaProdotto] & "*") AND 
    (([Maschere]![N-Magazzino]![zero])=True) AND 
    (([NDettOrdRitiro].[QtaCasa]-Nz([N-QuerySommaVendtia].[SommaDiQuantitaVEN]))>0)
    ) 
    OR 
    (
    (([Maschere]![N-Magazzino]![zero])=False) AND 
    (([NDettOrdRitiro].[QtaCasa]-Nz([N-QuerySommaVendtia].[SommaDiQuantitaVEN])) Is Not Null)
    );

    quando [zero] è falso non hai proprio scritto altre condizioni …

    Al di là di questo ti giro un consiglio che mi hanno dato giusto due giorni fa.

    Invece di scrivere il predicato SQL con tutte le condizioni all'interno, come hai fatto, è meglio in termini di velocitò e  pulizia lasciare la query di origine dati nuda e comporre il criterio in modo intelligente da codice, magari sull'evento After Update dei vari controlli che utilizzi per filtrare.

    In questo modo la maschera carica molto più velocemente e vai a filtrare solo per i campi che utilizzi al momento

    Una volta composto il criterio filtri la maschera con  

    Me.filter=StrCriterio
    Me.filterOn=true

    Tra le discussioni recenti ce ne sono molte riguardo a come comporre filtri in cascata

Devi accedere o registrarti per scrivere nel forum
11 risposte