Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

di il
20 risposte

Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

Salve a tutti.
Sono nuovo del forum e acerbo con access e linguaggi di programmazione, quindi abbiate pazienza...
Ho creato un database per una piccola libreria che mi permette di gestire tutti i movimenti e automatizzare la maggior parte delle operazioni di cui necessito. Adesso, vorrei "evolvere" il mio database e permettergli di gestire una raccolta punti per fidelizzare i clienti.
A tal proposito ho creato due tabelle: "Clienti" e "acquisti" che ho relazionato tra loro tramite la relazione uno a molti tra i campi Tessera (dalla tabella clienti) e Id Tessera (dalla tabella acquisti). Fino a qui, nessun problema. Grazie a maschere e query, ad ogni numero di tessera sono assegnati i titoli acquistati da quello specifico cliente.
Dopo questa premessa, vi espongo il problema:
Vorrei che ad ogni euro speso dal cliente (e quindi da quello specifico numero di tessera), venisse aggiunto 1 punto nella tabella "clienti" (dove ho il campo "Punti accumulati"), ma non so come impostare la cosa.
Ho letto varie discussioni, ma niente da fare.
Qualcuno potrebbe aiutarmi?
Grazie in anticipo
Stefano

20 Risposte

  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    Ritengo che "Punti accumulati" è il frutto di un CALCOLO. Non pensi che questa cosa la dovresti far fare a una query?
    La tabella Clienti deve contenere solo campi OMOGENEI al Cliente.
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    OsvaldoLaviosa ha scritto:


    Ritengo che "Punti accumulati" è il frutto di un CALCOLO. Non pensi che questa cosa la dovresti far fare a una query?
    La tabella Clienti deve contenere solo campi OMOGENEI al Cliente.
    Salve Osvaldo,
    in realtà il campo "punti accumulati", al momento è un semplice campo numerico che vorrei appunto far diventare il frutto di un calcolo aggiornabile di vendita in vendita. In che modo potrei impostare la query?
    La tabella "Clienti" è relazionata alla tabella "acquisti" e ciò mi permette di visualizzare tutti i libri acquistati dal detentore di uno specifico numero di tessera.
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    Non è chiaro se un Cliente accumula punti per ogni acquisto, oppure sul totale di più acquisti.
    Hai detto che €1,00 = 1 punto. Che succede per gli acquisti con i centesimi?
    1. Devi creare una query di selezione dove mostri i campi che vuoi mostrare dalle tue 2 tabelle.
    2. Forse dovrai aggiungere una colonna di calcolo che ti pemette di sapere per ogni acquisto quanti punti.
    3. Ti serve poi una Somma dalla colonna Punti. Potresti usare la funzione DSum.
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    Grazie. Ci provo e ti aggiorno
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    OsvaldoLaviosa ha scritto:


    Non è chiaro se un Cliente accumula punti per ogni acquisto, oppure sul totale di più acquisti.
    Hai detto che €1,00 = 1 punto. Che succede per gli acquisti con i centesimi?
    1. Devi creare una query di selezione dove mostri i campi che vuoi mostrare dalle tue 2 tabelle.
    2. Forse dovrai aggiungere una colonna di calcolo che ti pemette di sapere per ogni acquisto quanti punti.
    3. Ti serve poi una Somma dalla colonna Punti. Potresti usare la funzione DSum.
    Eccomi.
    Ho provato a creare la query di selezione come suggerito. Mi sono però arenato sul punto 2
    Come faccio a impostare la colonna di calcolo per tramutare il prezzo in punti?
    Per quanto riguarda i centesimi, si eliminano. €19.90, diventano 19 punti.

    Per spiegarmi meglio, ecco come ho strutturato le tabelle:
    Clienti: Tessera, nome, cognome, punti accumulati
    Acquisti: Data, titolo, prezzo, idtessera, punti

    Grazie
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    Stef976 ha scritto:


    Come faccio a impostare la colonna di calcolo per tramutare il prezzo in punti?
    Per quanto riguarda i centesimi, si eliminano. €19.90, diventano 19 punti.
    In visualizzazione struttura devi aggiungere una colonna "creata da te" con una espressione del genere:
    Punti: Int([Prezzo])
    oppure
    Punti: Fix([Prezzo])
    leggi qui
    https://support.office.com/it-it/article/funzioni-int-e-fix-5446da0c-fbdc-425f-a818-7e3153984ff8

    Stef976 ha scritto:


    Clienti: Tessera, nome, cognome, punti accumulati
    Acquisti: Data, titolo, prezzo, idtessera, punti
    Il campo [punti accumulati] devi toglierlo da Clienti. Non è omogeneo.
    Anche il campo Punti da Acquisti.
    I Punti sono un qualcosa di "calcolabile" e questo lo deve fare Access attraverso una query.

    Il fatto che tu vuoi sapere quanti Punti ha totalizzato Tizio...è un ragionamento che non puoi gestire in quel modo. Ragionando passo passo tu:
    1. Sai i Punti di ogni Acquisto
    2. Tizio ha fatto molti acquisti. Devi innanzitutto filtrare gli Acquisti di Tizio, sempre via query.
    3. Una volta circoscritti tutti gli Acquisti di Tizio, calcoli il
    DSum("[Punti]";"Nome query")
    Leggi qui per gestire DSum
    https://support.office.com/it-it/article/funzione-dsum-08f8450e-3bf6-45e2-936f-386056e61a32
    Tu vorresti vedere questo dato da qualche parte. Diciamo che in una maschera Clienti potresti aggiungere una "casella di testo" non associata ad alcun campo della tabella sottostante, ma avente una espressione simile a quella di prima, cioè
    =DSum("[Punti]";"Nome query")
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    Buongiorno!
    Ho seguito i preziosi consigli e sono riuscito a fare tutto ciò di cui avevo bisogno.

    Rimane un ultimo step. I clienti, useranno i punti accumulati ed io dovrò necessariamente detrarli dalla casella di testo (non associata, chiamata PUNTI) che contiene il totale punti (ottenuta dalla somma dei prezzi). A tal riguardo, ho creato un'altra casella dove inserire manualmente i punti utilizzati e un pulsante che, all'evento click, sottrae dal totale il numero di punti inserito.
    Il problema è che il dato della sottrazione non rimane memorizzato nella casella e quindi mi ritrovo sempre con lo stesso totale.
    Come ne vengo a capo?

    Grazie di tutto!!!
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    È ovvio che la formuletta
    =DSum("[Punti]";"Nome query")
    non vale più. Devi studiare una nuova query (o modificare la precedente) in funzione di questi tuoi cambiamenti e estrarre il corrispondente valore per poi piazzare la formula nella casella di testo della maschera.
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    OsvaldoLaviosa ha scritto:


    È ovvio che la formuletta
    =DSum("[Punti]";"Nome query")
    non vale più. Devi studiare una nuova query (o modificare la precedente) in funzione di questi tuoi cambiamenti e estrarre il corrispondente valore per poi piazzare la formula nella casella di testo della maschera.
    Purtroppo come dici tu, la formuletta usata non fa più al caso mio. Mi sto scervellando ma non ho idea di come uscirne. Idee?
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    Io proverei a fare così:
    1. Rinominerei la tabella da Acquisti in Movimenti
    2. Aggiungerei un campo TipoMovimento (qui specifichi se si tratta di Acquisto o PrelievoPunti) e un campo Punti (che compili a mano).
    3. Quando un cliente preleva punti, tu lo contabilizzi con un nuovo record e scrivi in Punti un valore "negativo".
    4. A questo punto, l'espressione che ti ho proposto prima, può restare tale nella maschera Clienti.
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    OsvaldoLaviosa ha scritto:


    Io proverei a fare così:
    1. Rinominerei la tabella da Acquisti in Movimenti
    2. Aggiungerei un campo TipoMovimento (qui specifichi se si tratta di Acquisto o PrelievoPunti) e un campo Punti (che compili a mano).
    3. Quando un cliente preleva punti, tu lo contabilizzi con un nuovo record e scrivi in Punti un valore "negativo".
    4. A questo punto, l'espressione che ti ho proposto prima, può restare tale nella maschera Clienti.
    Buongiorno Osvaldo e grazie davvero per tutto l'aiuto che mi hai dato.
    Ho risolto diversamente, in modo sicuramente poco professionale. Provo a spiegare come nel caso servisse a qualcuno.
    Nella tabella acquisti, ho cambiato il formato nel campo PUNTI con un tipo si/no (e rinominato con "PUNTI USATI").
    Ho creato una query che mi somma i prezzi di tutti i libri acquistati da un determinato numero di tessera, tranne quelli che sono "spuntati" nella colonna "PUNTI USATI".
    La query è così strutturata: Dalla tabella acquisti ho selezionato il campo: PREZZO (con formula "somma"); IDTESSERA (con formula "RAGGRUPPAMENTO") e PUNTI USATI (con formula "RAGGRUPPAMENTO" e nei criteri ho scritto "NO").

    Ovviamente, bisogna spuntarli a mano, ma così è già abbastanza comodo.
    L'unica pecca, è che per aggiornare la query e avere un valore aggiornato (dopo la spunta), devo chiudere e riaprire la maschera.
    Ho provato a creare un pulsante collegato ad una macro che aggiornasse la query (APRI QUERY - CHIUDI QUERY - AGGIORNA MASCHERA) ma non ci sono riuscito.
    Se avessi qualche altra dritta in merito, sarebbe fantastico.

    Grazie ancora per tutto l'aiuto e la pazienza con un non-programmatore curioso come me...
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    Stef976 ha scritto:


    L'unica pecca, è che per aggiornare la query e avere un valore aggiornato (dopo la spunta), devo chiudere e riaprire la maschera.
    In questi casi, dopo la spunta, ti consiglio di passare su un altro record, giusto per dargli validità "certa".
    Dopo aver fatto ciò, tu esegui la query. Nella query hai un Criterio parametro che punta sul tuo [Maschere]![Clienti]![IDCliente]?
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    OsvaldoLaviosa ha scritto:



    In questi casi, dopo la spunta, ti consiglio di passare su un altro record, giusto per dargli validità "certa".
    Dopo aver fatto ciò, tu esegui la query. Nella query hai un Criterio parametro che punta sul tuo [Maschere]![Clienti]![IDCliente]?
    No
  • Re: Visualizzare nel campo di una tabella la somma del campo di un’altra tabella

    Devi mettercelo e vedrai che la query ti risponderà prontamente. Ovviamente la query funziona solo con maschera Clienti aperta, solo così può andare a leggere il valore [IDCliente] in quel momento esposto.
Devi accedere o registrarti per scrivere nel forum
20 risposte