Funzione somma.se in Access

di il
12 risposte

Funzione somma.se in Access

Buongiorno ragazzi ,sono un'autodidatta e mi sono cimentato a creare un programmino in Access che mi serve per il mio lavoro ,ma mi sono bloccato e mi servirebbe il vostro aiuto . Un grazie in anticipo .

Ho una due tabelle una query e un report basato sulla query ,nel report ho scritto delle espressioni che mi fanno dei calcoli semplici sulle tabelle ,e fin qui tutto ok ,ora il problema è il seguente :

ho la tabella Ramo e la tabella Pr inc ,e mi serve sommare tutta la tabella Pr inc ma solo se nella tabella Ramo non c'e' il valore 30 (non lo faccio con il comando digita in query perche cmq mi servono tutti ) .
Di sicuro non mi sono espresso in modo tecnico spero vogliate scusarmi .

Ramo Pr in
30 10,00 €
30 10,00 €
42 5,00 €
66 5,00 €
30 10,00 €
10 5,00 €
100 5,00 €
20,00 €

ho fatto questa tabella per spiegarmi meglio ,nella tabella Pr inc devo sommare solo i valori che nella tabella Ramo non sono 30 .

12 Risposte

  • Re: Funzione somma.se in Access

    boxster85 ha scritto:


    Di sicuro non mi sono espresso in modo tecnico spero vogliate scusarmi
    Questo aspetto si vede principalmente nell'oggetto del thread in cui fai riferimento ad una funzione di Excel e ne cerchi l'equivalente in Access.

    boxster85 ha scritto:


    ...
    ho la tabella Ramo e la tabella Pr inc ,e mi serve sommare tutta la tabella Pr inc ma solo se nella tabella Ramo non c'e' il valore 30 (non lo faccio con il comando digita in query perche cmq mi servono tutti ) .
    Quello che vuoi ottenere probabilmente si può fare molto facilmente. Come spesso accade (almeno con me) prima di darti il suggerimento vorrei capire dove ti serve quella somma, solo nel report? Nel piédipagina o nel piédireport? hai qualche subtotale da calcolare? come si chiama il campo da sommare? esiste il relativo controllo associato nel report? Com'è fatta la query sulla quale si basa il report? pubblica la SQL.
    Ah... guarda, sono comparsi alcuni numeri, rispondi solo a quello che non si può capire da quelli ovviamente
  • Re: Funzione somma.se in Access

    SELECT [LISTA CIP].[NOME CIP], [LISTA CIP].[ALIQUOTA RCA], [LISTA CIP].[ALIQUOTA RE], [LISTA ESITO].Ramo, [LISTA ESITO].Polizza, [LISTA ESITO].[Eff App], [LISTA ESITO].Esito, [LISTA ESITO].[Tipo Pag], [LISTA ESITO].[Data Esito], [LISTA ESITO].[Effettivo Pag], [LISTA ESITO].Contraente, [LISTA ESITO].Subag, [LISTA ESITO].[Premio RC], [LISTA ESITO].[C A V], [LISTA ESITO].[Pr Inc], [LISTA ESITO].[Prv INC FUR], [LISTA ESITO].[Prv INF], [LISTA ESITO].[Prv Kasko], [LISTA ESITO].[Prv Assist], [LISTA ESITO].[Targa Veicolo]
    FROM [LISTA CIP] INNER JOIN [LISTA ESITO] ON [LISTA CIP].[CODICE CIP] = [LISTA ESITO].Subag
    GROUP BY [LISTA CIP].[NOME CIP], [LISTA CIP].[ALIQUOTA RCA], [LISTA CIP].[ALIQUOTA RE], [LISTA ESITO].Ramo, [LISTA ESITO].Polizza, [LISTA ESITO].[Eff App], [LISTA ESITO].Esito, [LISTA ESITO].[Tipo Pag], [LISTA ESITO].[Data Esito], [LISTA ESITO].[Effettivo Pag], [LISTA ESITO].Contraente, [LISTA ESITO].Subag, [LISTA ESITO].[Premio RC], [LISTA ESITO].[C A V], [LISTA ESITO].[Pr Inc], [LISTA ESITO].[Prv INC FUR], [LISTA ESITO].[Prv INF], [LISTA ESITO].[Prv Kasko], [LISTA ESITO].[Prv Assist], [LISTA ESITO].[Targa Veicolo]
    HAVING ((([LISTA ESITO].Subag)=[digita Subag]));

    SQL della query è questo .

    Le somme io le ho fatte tutte nel piè di pagina report ma mi manca quest'ultima che chiedo qui . Le altre sono andato facile perche' mi serve la somma di tutto invece nella tabella Pr inc mi serve sommare solo i campi dove nella tabella Ramo corrispondente non c'e' 30 .

    Ramo Pr in
    30 10,00 €
    30 10,00 €
    42 5,00 €
    66 5,00 €
    30 10,00 €
    10 5,00 €
    100 5,00 €

    Per spiegarmi il totale deve essere 12,00 €

    quindi quando faccio l'espressione vorrei dire : =somma (accesstotale Pr inc) * 0,60 solo se il Ramo è diverso da 30
  • Re: Funzione somma.se in Access

    boxster85 ha scritto:


    ...
    SQL della query è questo .
    dove non vedo alcuna tabella Ramo o Pr Inc, vedo una presumibilmente tabella [Lista Esito] (potrebbe essere anche un'altra query, ma non conta) e tra gli altri due campi chiamati [Ramo] e [Pr Inc]
    Sull'uso degli spazi nei nomi di tabelle e campi ti rimando ad una banale ricerca su internet e troverai che seppur tecnicamente ammessi sono da evitare, sempre.
    Ipotizzo quindi che il campo da sommare sia [Pr Inc] quando il campo [Ramo] non è 30.
    In una situazione classica la somma si ottiene in una casella di testo indicando come origine dati
    =Sum([nomedelcampo])
    però in questo caso prende tutto, ovviamente. Ecco che è vero: bisogna escogitare un trucco che dà lo stesso risultato di Somma.Se di Excel.
    Devi fare in modo che quello che sottoponi a sommatoria sia [Ramo] se [Pr Inc] <> 30, zero in caso contrario e questo lo ottieni con una IIf.
    =Sum(IIf(verifica_da_eseguire; parte_vera; parte_falsa))
    La funzione Sum prenderà quindi di volta in volta la parte vera o la parte falsa per fare la sommatoria. Adesso tocca a te scrivere cosa ci va dentro la IIf. Fai attenzione al fatto che a seconda di dove scrivi potresti dover utilizzare la virgola al posto del punto e virgola. Parti con il punto e virgola di separazione, se poi non gli va giù prova con la virgola. Potresti avere anche qualche piccolo aiuto dal genereratore delle espressioni ma a volte crea più grane che benefici.
  • Re: Funzione somma.se in Access

    Scusa ti ho confuso io con tabella e colonna ,cmq mi hai capito bene , si girando su internet avevo ipotizzato iif ma non sono riuscito ad usarlo.
    per adesso credo che mi vada bene anche (se maggiore di 30 )poi in futuro si vedra' .
    Si io faccio un'etichetta e poi faccio genera espressione .
    Talmente che so ciuccio non riesco a completare la seconda espressione che mi hai mandato , verifica da eseguire , parte vera parte falsa .
    Ora provo a scriverla la posto cosi' provo a datri un aiuto ad aiutarmi

    =Sum ([Pr inc)] IIf([Ramo]; >30; <30)) *0,60

    come si scrive in modo corretto ,se si puo' senza fare altro .
  • Re: Funzione somma.se in Access

    boxster85 ha scritto:


    =Sum ([Pr inc)] IIf([Ramo]; >30; <30)) *0,60
    Eh no! (ricorda di usare i tag CODE, quelli che nella barra di formattazione sono rappresentati da </> oppure quota il mio messaggio per vedere come li uso)
    Il concetto sta tutto nella IIf, poi il tutto si mette dentro Sum, quindi qui trattiamo solo questa
    Prendo un esempio da qui https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/iif-function
    IIf(TestMe > 1000, "Large", "Small")
    Come vedi la prima parte è un'espressione di confronto che deve restituire vero/falso. Come deve essere la tua?
    In questo esempio se TestMe è maggiore di 1000 la IIf restituirà Large, altrimenti restituirà Small. Tu dovrai dire in base all'espressione da valutare se prendere [Pr inc] oppure 0 (o il contrario, dipende da come scrivi l'espressione da verificare)
  • Re: Funzione somma.se in Access

    Io devo scrivere se in ramo c'e 30 Pr inc non sommare o somma 0 se è diverso da 30 somma il contenuto di Pr inc (poi il totale * il 60% ,ma questo riesco a farlo) .
  • Re: Funzione somma.se in Access

    IIf(TestMe > 1000, "Large", "Small")

    ok, quindi al posto di Large io metto [Pr inc] e al posto di Small scrivo solo 0 senza parentesi e niente ?
  • Re: Funzione somma.se in Access

    Provare? Studiare la Iif?

    Mi pare insensato usare Access (o un altro prodotto) avendo in testa Excel. Non sono banalità, vanno studiate.
  • Re: Funzione somma.se in Access

    Ok ci sono riuscito ,pero' invece di usare < > ho usato uguale perche' mi sono accorto che in ramo ho valori sia minori che maggiori di 30 quindi ho usato = a 30 .
    Sembra che ho risolto cosi' : =Somma(IIf([Ramo]=30;"0";[Pr Inc]))

    l'espressione da il valore corretto a te sembra scritto bene ?

    Grazie Philcattivocarattere molto gentile ,non capivo proprio come usare iif , per me era impensabile che dopo iff scrivendo ramo e nella sezione vero o falso scrivere pr inc e o potesse funzionare ,e invece tutto ok .
  • Re: Funzione somma.se in Access

    Https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/iif-function
  • Re: Funzione somma.se in Access

    oregon ha scritto:


    Provare? Studiare la Iif?

    Mi pare insensato usare Access (o un altro prodotto) avendo in testa Excel. Non sono banalità, vanno studiate.
    Non ho in testa excel conosco piu' acceses che le formule di excel ,l'ho usato solo per esmpio perche' mi ricordavo qualcosa ai tempi della scuola , ma cmq il tuo messaggio mi sembra fuori luogo se non andava di aiutarmi ,che sei entrato a fare qui per dire di studiare access ? Bha'
  • Re: Funzione somma.se in Access

    Nel titolo ti sei espresso con un paragone ad excel e ti ho detto che, per risolvere un problema con Access devi avere chiari i concetti dei DB e non di Excel. È solo un consiglio non un'offesa. Forse sei un po' permaloso.

    E poi ti ho dato la documentazione della Iif da leggere ...

    Bah...
Devi accedere o registrarti per scrivere nel forum
12 risposte