IIf nidificata testo diventa campo

di il
9 risposte

IIf nidificata testo diventa campo

Buongiorno,
scusate il titolo del post ma non sapevo proprio come riassumere il mio problema.
Ho una Maschera sotto di essa c'è una query di raggruppamento.
Tra i vari campi c'è il campo PRODOTTO che è un campo NUMERICO. es: 3258001 3258002 3255001 etc
Tra le varie caselle di testo della maschera ne voglio una che in base al numero prodotto associato a quel record visualizzato mi restituisca un testo.
vi riporto quindi la iif che ho messo:
=IIf([PRODOTTO] Between 3255001 And 3255012;“AGRARIO”;
or IIf([PRODOTTO] Between 3257100 And 3257101;“MISE”;
or IIf([PRODOTTO] Between 3258001 And 3259105;“STANDARD”;)))

Al salvataggio non mi da alcun errore ma rientrando nella iif la stessa risulta modificata in automatico in :
=IIf([PRODOTTO] Between 3255001 And 3255012;[“AGRARIO”];"" Or IIf([PRODOTTO] Between 3257100 And 3257101;[“MISE”];"" Or IIf([PRODOTTO] Between 3258001 And 3259105;[“STANDARD”];"")))
Mettendomi quindi le parentesi quadre nel TESTO che volevo mi visualizzasse.

Va da se che comunque sia la prima iif che la seconda mi restituiscono "Nome?" e non comprendo…
Se faccio un sinfolo IIF (senza nidificarlo) funziona ma se nidifico allora mi restituisce NOME?

9 Risposte

  • Re: IIf nidificata testo diventa campo

    Considera che ogni IIf vuole sempre ParteVera e ParteFalsa, quindi, se quei Between contemplano TUTTE le casistiche, non devi scrivere tutto il terzo IIf, ma assegnare solo l'ultimo valore relativo a ParteFalsa. In altre parole
    =IIf([PRODOTTO] Between 3255001 And 3255012;“AGRARIO”;IIf([PRODOTTO] Between 3257100 And 3257101;“MISE”;“STANDARD”))
  • Re: IIf nidificata testo diventa campo

    Ora mi funziona tutto così :
    =IIf([PRODOTTO] Between 3258001 And 3259105;"STANDARD";IIf([PRODOTTO] Between 3255001 And 3255012;"AGRARIO";IIf([PRODOTTO] Between 3257100 And 3257101;"MISE")))
    Ora mi si pone davanti un altro problema.
    ho una casella combinata con vari valori :
    B.T/M.T 24_NO_MCC_1
    B.T/M.T 24_NO_MCC_2
    B.T/M.T 24_NO_MCC_3
    B.T/M.T 24_SI_MCC_1
    B.T/M.T 24_SI_MCC_2
    B.T/M.T 24_SI_MCC_3
    SOVV_BANC_NO_MCC_1
    SOVV_BANC_NO_MCC_2
    SOVV_BANC_SI_MCC_1
    SOVV_BANC_SI_MCC_2

    la discrimina che vorrei fare in base al [PRODOTTO] di sopra è filtrare la casella combinata in base al [PRODOTTO]. cOSì HO PENSATO AD UNA IIF :
    IIf([PRODOTTO] Between 3258001 And 3258065;[FORMATECNICA]="*NO_MCC*";0)
    In sostanza gli voglio dire che se il PRODOTTO è tra quei numeri allora mi devi restituire tutte le voci della casella combinata che hanno dentro nel testo "NO_MCC"

    ma non va… ho anche provato :
    IIf([PRODOTTO] Between 3258001 And 3258065;[FORMATECNICA] Like "*NO_MCC*";0)
    ma nulla
  • Re: IIf nidificata testo diventa campo

    Nella ParteVera e ParteFalsa di una IIf si mette generalmente un valore "fisso"...faccio veramente fatica a concepire una "espressione"...mi sembra ovvio che ti dia problemi.

    alessandro.vitale ha scritto:


    In sostanza gli voglio dire che se il PRODOTTO è tra quei numeri allora mi devi restituire tutte le voci della casella combinata che hanno dentro nel testo "NO_MCC"
    Fai confusione nell'interpretare una IIf. Una IIf RESTITUISCE/IMPOSTA un valore che sta scritto in ParteVera o ParteFalsa, ma non va a "ripescare" valori. Non ti serve la IIf.
    Non ho capito quello che vuoi fare se non vedo l'intera disposizione dei dati compresi quelli numerici (3258001...ecc...).
  • Re: IIf nidificata testo diventa campo

    Ciao,
    ho difficoltà a comprendere cosa e come riportarti la struttura dei dati che intendo "lavorare".
    Dimmi cosa vuoi sapere che ti risponderò punto per punto.
    Cerco però di anticiparti.
    Il campo Prodotto (Campo Numerico) sta dentro una tabella che si chiama [Tabella Principale].
    La Maschera dove voglio fare questi IIF ha sotto una Query che ha come tabelle al suo interno anche la Tabella Principale di cui sopra.

    Ora… nella maschera ho una casella combinata che mi elenca alcune voci : BT-MT_NO_MCC_1 etc etc.. quelle che ti ho elencato sopra.
    Poi…. ciascun PRODOTTO (il numero 3258001 es) corrisponde ad un tipo di garanzia (e sarebbe il primo IIF.. quello che poi mi ha funzionato) e corrisponde anche alla descrizione se è SI MCC o NO MCC.
    ho quindi una tabella così composta:
    Campo1: BT-MT_NO_MCC_1 oppure BT-MT_SI_MCC_1
    Campo2: percentuale di commissione (ma questo a noi non interessa)
    Campo3 che si chiama MCC: NO oppure SI

    Ovviamente alla prima voce BT-MT_NO_MCC_1 corrisponderà il valore in MCC : NO mentre alla seconda voce BT-MT_SI_MCC_1 corrisponderà il valore in MCC : SI.

    La casella combinata ha questa origine riga:
    SELECT COMMISSIONI.FORMATECNICA, COMMISSIONI.TIPOGARANZIA, COMMISSIONI.MCC FROM COMMISSIONI WHERE (((COMMISSIONI.TIPOGARANZIA)=FORMS![MSC DISPOSIZIONI]!COMBOGARANZIATIPO) And ((COMMISSIONI.MCC)=IIf([Tabella Principale].PRODOTTO Between 3258001 And 3258065,[mcc]="NO",0))); 
  • Re: IIf nidificata testo diventa campo

    alessandro.vitale ha scritto:


    B.T/M.T 24_NO_MCC_1
    B.T/M.T 24_NO_MCC_2
    B.T/M.T 24_NO_MCC_3
    B.T/M.T 24_SI_MCC_1
    B.T/M.T 24_SI_MCC_2
    B.T/M.T 24_SI_MCC_3
    SOVV_BANC_NO_MCC_1
    SOVV_BANC_NO_MCC_2
    SOVV_BANC_SI_MCC_1
    SOVV_BANC_SI_MCC_2
    In questo recordset di dati non vedo alcun nesso con i valori invocati dai Between...
  • Re: IIf nidificata testo diventa campo

    OsvaldoLaviosa ha scritto:


    alessandro.vitale ha scritto:


    B.T/M.T 24_NO_MCC_1
    B.T/M.T 24_NO_MCC_2
    B.T/M.T 24_NO_MCC_3
    B.T/M.T 24_SI_MCC_1
    B.T/M.T 24_SI_MCC_2
    B.T/M.T 24_SI_MCC_3
    SOVV_BANC_NO_MCC_1
    SOVV_BANC_NO_MCC_2
    SOVV_BANC_SI_MCC_1
    SOVV_BANC_SI_MCC_2
    In questo recordset di dati non vedo alcun nesso con i valori invocati dai Between...
    Il nesso glielo do io nel senso che gli dico di prendere tutti i valori in FORMATECNICA in cui il campo MCC è NO se il PRODOTTO è compresa tra...
  • Re: IIf nidificata testo diventa campo

    alessandro.vitale ha scritto:


    una tabella che si chiama [Tabella Principale]
    Aiuto! Mi vengono i brividi quando leggo denominazioni di tabelle come questa.
    Siamo sicuri che hai uno scenario tabelle "normalizzato"?
    Di conseguenza, non è che potresti gestire quello che hai in testa in maniera più semplice/fluida/normalizzata?
    Tutta la descrizione/spiegazione che hai fornito, per quanto dettagliata, mi suona ancora molto arabo rispetto a come (normalizzatamente parlando) sono abituato a pensare tabelle e campi...
  • Re: IIf nidificata testo diventa campo

    Il mio DB ha subito un'evoluzione…
    risulta normalizzato per metà nel senso che le ultime tabelle e componenti di un DB sono normalizzate mentre le prime presentano "SPAZI" che non consentono la normalizzazione altrimenti dovrei andare a stravolgere le query etc...
    Purtroppo è così e non ho rimedi.. se non rifare tutto.
  • Re: IIf nidificata testo diventa campo

    Se per "SPAZI" ti riferisci alle denominazioni di tabelle, campi (con gli spazi) ecc...non sarebbe questo il problema.
    Se il database non è normalizzato anche le query hanno un sapore diverso...e trovo del tutto normale stravolgerle. Continuando sulla strada che avresti intrapreso rischi di renderti sempre meno compensibile agli utenti del forum (infatti non ci ho capito più nulla), affatichi le elaborazioni di Access abituato a manipolare le tabelle secondo altra logica, ecc...ecc...
Devi accedere o registrarti per scrivere nel forum
9 risposte