Generatore di Espressioni Nelle Query, Espressione IIf

Anonimo
2012-02-16T10:58:44+00:00

Se in un campo di una query utilizzando il generatore di espressioni, faccio eseguire un calcolo e scrivo :

Espr1: IIf(AnagraficaBrogliaccio![4]="24/07";6;0)

Il valore che mi restituirà sarà 6 o 0.

Ma se invece di un solo parametro ne inserisco 2 e scrivo la seguente espressione

Espr1: IIf(AnagraficaBrogliaccio![4]="24/07";6;0) Or IIf(AnagraficaBrogliaccio![4]="00/07";6;0)

Il valore che mi restituisce è -1. 

Questo Perché?, .... Sbaglio a scrivere l’espressione? .... Ed in che modo dovrei scrivere l’espressione corretta?

Utilizzando sempre un solo campo della query però.

Grazie Paolo

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-05-17T13:50:18+00:00

Ciao Paolo,

la risposta alla prima domanda è SI

Per la seconda domanda, se per colpi in bersaglio intendi [colpi al centro] + [colpi in sagoma], puoi fare così:


Function fncRisultato(ByVal intColpiTot As Integer, _

    ByVal intColpiCentro As Integer, ByVal intColpiSagoma As Integer) _

    As String

    Select Case intColpiTot

        Case Is < (intColpiSagoma + intColpiCentro)

            fncRisultato = "Hai utilizzato più cartucce di quelle consentite!!!"

        Case 32 '-- LIVELLO DEI COLPI TOTALI DELLA LEZIONE

            Select Case intColpiCentro

                Case 28 To 32

                    fncRisultato = "Ottimo"

                Case 19 To 27

                    fncRisultato = "Buono"

                Case Is < 19

                    Select Case (intColpiCentro + intColpiSagoma)

                        Case Is < 11

                            fncRisultato = "Non Valutabile"

                        Case 11 To 18

                            fncRisultato = "Insufficiente"

                        Case 19 To 32

                            fncRisultato = "Sufficente"

                        Case Else

                            'Do Nothing

                    End Select

                Case Else

                    'Do Nothing

            End Select

        Case 60 '-- LIVELLO DEI COLPI TOTALI DELLA LEZIONE

        ...........................................

        Case XX '-- LIVELLO DEI COLPI TOTALI DELLA LEZIONE

            '.....................

        Case Else

            fncRisultato = "n/a"

    End Select

End Function


Per brevità ho omesso di riscrivere tutta la funzione.

David

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

25 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-05-28T12:44:03+00:00

    In questo caso


         Me("Giudizio") = _

            fncRisultato(Forms("T_Corso_Tiri").Controls _

            ("T_Tiri Sottomaschera").Controls("Cartucce Esplose") _

            , Me("Al Centro"), Me("In Sagoma"))


    David

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2012-05-28T12:13:16+00:00

    Ciao Paolo,

    nel copiare il codice nel post ho dimenticato di cambiare il nome alla maschera principale che nel mio db di test si chiama Bersagli.

    Devi quindi modificarlo in questo modo:


    'Se Giudizio è un controllo non associato

        Forms("T_Corso_Tiri").Controls("Tiri_Anag Sottomaschera").Controls("Giudizio") = _

            fncRisultato(Me![Cartucce Esplose], Me![Al Centro], Me![In Sagoma])


    'Se associato

        Forms("T_Corso_Tiri").Controls("Tiri_Anag Sottomaschera").Controls("Giudizio") = _

            fncRisultato(Me![Cartucce Esplose], Me![Al Centro], Me![In Sagoma])

        Forms("T_Corso_Tiri").Controls("Tiri_Anag Sottomaschera").Form.Dirty = False


    La struttura del codice presuppone:

    • maschera principale che si chiama T_Corso_Tiri
    • sottomaschera T_Tiri Sottomaschera che contiene i tre campi Cartucce Esplose, Al Centro e In Sagoma
    • sottomaschera Tiri_Anag Sottomaschera che contiene il campo Giudizio (che come detto può essere o no associato.
    • Il codice deve essere copiato nell'evento dopo aggiornamento del controllo In Sagoma posizionato sulla sottomaschera T_Tiri Sottomaschera

    In questo modo, nelle prove fatte, dopo la modifica del controllo In Sagoma mi viene correttamente popolato il campo Giudizio. Verifica attentamente i nomi dei controlli che ho utilizzato per farli corrispondere a quelli dei tuoi controlli.

    David

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2012-05-17T07:38:59+00:00

    Ciao Paolo,

    prova a vedere se questa espressione restituisce il risultato cercato:


    =IIf([Cartucce Esplose]=32 And (([Al Centro]+[In Sagoma])<11);"Non Valutabile";IIf([Cartucce Esplose]=32 And (([Al Centro]+[In Sagoma]) Between 11 And 18);"Insufficiente";IIf([Cartucce Esplose]=32 And [Al Centro] Between 19 And 27;"Buono";IIf([Cartucce Esplose]=32 And [Al Centro] Between 28 And 32;"Ottimo";IIf([Cartucce Esplose]=32 And (([Al Centro]+[In Sagoma]) Between 19 And 32);"Sufficiente";"n/a")))))

    --

    David

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  4. Anonimo
    2012-02-16T11:48:10+00:00

    Ciao P.

    al posto di

    IIf(AnagraficaBrogliaccio![4]="24/07";6;0) Or IIf(AnagraficaBrogliaccio![4]="00/07";6;0)

    prova con

    IIf(AnagraficaBrogliaccio![4]="24/07" Or AnagraficaBrogliaccio![4]="00/07";6;0)

    Ciao Mimmo

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento