Che istruzione devo usare?

di
Anonimizzato12258
il
2 risposte

Che istruzione devo usare?

Salve,

sono un principiante e ho un problema con access 2003

io ho un campo "Richieste" in una query

devo sommarle e fino qui ok creo "somma Richieste"

poi devo dire

se la somma supera 80 tu non contare le ore in eccesso, fermati a 80
se invece la somma è minore di 80 dammi la somma esatta

Come posso fare: ho provato con IIF ma forse sbaglio concettualmente

Grazie in anticipo per la pazienza e l'aiuto

2 Risposte

  • Re: Che istruzione devo usare?

    È corretto l'uso della IIf, devi soltanto impostare bene la sintassi:
    IIf(espressione somma<80;espressione somma;80)
    La IIf ha 3 campi:
    nel 1° scrivi l'espressione di somma comparata <80
    nel 2° calcola espressione quando è vera
    nel 3° scrivi soltanto 80 quando l'espressione è falsa
  • Re: Che istruzione devo usare?

    Credo che la cosa sia molto più complessa di quanto si possa intravedere se ho colto...!

    Ipotizza di avere 3 Records...(semplifico) in base a quale CRITERIO sommi i campi per controllare <80...?
    Sommi ordinando per ChiavePrimaria....?
    
    Id  Valore
    1   60
    2   19
    3   20
    Se raggruppi devi OMETTERE il campo ID prima di tutto, e la somma sarà 99, se al campo SOMMA applichi il CRITERIO <80 non otterrai alcun RECORDS in quanto il criterio è applicato alla SOMMA di tutto che da 99.

    In tutti i casi aggregando poi perdi l'identificativo dei CONTRIBUENTI della somma, quindi non puoi recuperare quali sono i RECORDS... cosa che credo sia diversa dalla richiesta.

    Credo che quello che serve a te sia una cosa molto complessa da ricavare e dubito lo si possa fare con una semplice Query.

    Tuttavia è possibile io abbia frainteso...

    Nel mio pensiero, devi prima di tutto definire il CRITERIO di ordinamento, Access non può andare a caso, e su questo creare una sorta di SOMMA PROGRESSIVA.
    Quando la Somma progressiva non rispetta il criterio... ricavi il Campo Chiave e filtri i dati per CAMPO CHIAVE... quindi ripendendo l'esempio iniziale
    
    Id  Valore    
    1   60
    2   19
    3   20
    La somma progressiva otterrai che la somma è <80 fino al Record con ID=3, quindi andrai a Filtrare
    
    SELECT * FROM Tabella WHERE ID<3
    La somma progressiva si ottiene via VBA, oppure inserendo nella Query un campo Calcolato che vada a sommare tutti i RECORDS con ID<IDCORRENTE, tuttavia questo a te non credo serva...
    Da VBA invece ricavi il campo ID LIMITE e lo usi come Criterio.

    Se non ho capito prova a rispiegarci...
Devi accedere o registrarti per scrivere nel forum
2 risposte