Campi calcolati

di il
8 risposte

Campi calcolati

Salve a tutti
mi sono appena iscritto e, spero di aver ben compreso il regolamento ma, se faccio qualche errore avvertitemi che provvederò immediatamente.
Vengo al problema, ho iniziato da pochissimo a utilizzare Access, versione 2016, ho seguito un corso base on line ma niente di più, vi descrivo il mio problema.
devo creare una maschera con sottomaschera, fin qui tutto bene, le ho create e tutto funziona regolarmente; il problema è che vorrei inserire nella maschera rincipale, un campo contenente il totale derivante dalla somma dei campi della sottomaschera.
cerco di spiegarmi meglio:
la maschera principale contiene tutti i dati di una fattura (ragione sociale, ecc.) la sottonmaschera contiene le righe di dettaglio della fattura, queste ovviamente possono essere da una a tante righe.
Come posso fare per inserire, nella maschera principale un campo dove riportare la somma della colonna imponibile che si trova nella sottomaschera?
grazie a tutti per la collaborazione

8 Risposte

  • Re: Campi calcolati

    Ciao Mirax55,
    immagino che tabella principale e tabella dettagli siano legate da relazione uno a molti quindi potresti inserire un textbox nella form principale e settarne la proprietà origine controllo con la funzione "DSum" impostando il parametro dei criteri in modo da far visualizzare la somma dei record della tabella sul lato molti relativi al record corrente in maschera principale.
    dsum("[campodasommare]";"tabellaincuicisonoicampidasommare";"[chiaveesterna]= " & mascheraprincipale!chiaveinterna)
    studia comando dsum e personalizza.

    a presto.
  • Re: Campi calcolati

    Ciao Angelo, prima di tutto grazie per la celere risposta, come ti ho detto prima sono un neofita di Access, ho quindi qualche difficoltà a interpretare la tua risposta, innanzi tuto ti chiedo se, quello che hai riportato su è una espressione da inserire in un modulo VBA, inoltre a cosa si riferisce la Chiave Interna e quella esterna?
    grazie ancora per la tua disponibilità
  • Re: Campi calcolati

    mirax55 ha scritto:


    Ciao Angelo, prima di tutto grazie per la celere risposta, come ti ho detto prima sono un neofita di Access, ho quindi qualche difficoltà a interpretare la tua risposta, innanzi tuto ti chiedo se, quello che hai riportato su è una espressione da inserire in un modulo VBA, inoltre a cosa si riferisce la Chiave Interna e quella esterna?
    grazie ancora per la tua disponibilità
    Ciao,
    Per chiave interna e chiave esterna intendo i campi usati per la relazione uno a molti nelle rispettive tabelle... (menu strumenti/Relazioni, trascini dentro tabella principale e dettaglio e vedi quali campi le uniscono (sempre se tu abbia effettivamente creato una relazione uno a molti).
    Il codice di esempio va messo nella proprietà "origine controllo" di una casella di testo che devi manualmente inserire nella form principale... (quando selezioni un qualsiasi controllo nella struttura della maschera, la finestra delle proprietà ti mostra le proprietà dell'oggetto selezionato- una volta selezionata la casella di testo devi cercare "origine controllo")

    Se non hai compreso quanto sopra approfondisci su google:
    - relazione uno a molti access;
    - funzione dsum access;
    - visualizzare relazioni access;

    Infine, una volta studiati gli argomenti e individuato nomi propri di tabelle e campi incriminati, sulla base del codice esempio che ti ho postato, prova ad implementare la funzione dsum.
  • Re: Campi calcolati

    Secondo me quella espressione va rivista così
    =Dsum("[campodasommare]";"tabellaincuicisonoicampidasommare";"[chiaveesterna]= " & [Maschere]![mascheraprincipale]![chiaveinterna])
    Però, leggendo qui
    https://www.iprogrammatori.it/forum-programmazione/access/somma-valori-sottomaschera-t27808.html
    vedo che si usa direttamente Somma. In base alle indicazioni di @Alex, scegli se scrivere il controllo in Piè di pagina sottomaschera o in una casella di testo in maschera principale.
  • Re: Campi calcolati

    Ciao Osvaldo, ho fatto come mi dici, ovvero:

    =DSum("[IMPONIBILE]";"DB DETTAGLIO AVVISO";"[NUM PROFORMA]= " & [Maschere]![PROFORMA]![NUM PROFORMA])

    dove: IMPONIBILE è il campo della tabella secondaria da sommare;
    DB DETTAGLIO AVVISO è la tabella secondaria;
    NUM PROFORMA è il campo a molti
    PROFORMA è la maschera principale
    NUM PROFORMA è il campo a 1

    scritta così non mi da più errore di sintassi ma, non funziona; in alto a sinistra della casella di testo compare il tiangolino verde riportando il seguente errore: Propirtà di controllo non valida.origine controllo.

    dove sbaglio?
  • Re: Campi calcolati

    Vuoi vedere che DSum non è ciò che ti serve?
    Prova la soluzione indicata nel link...sembra parlare di un caso analogo al tuo.

    P.S.
    Ho fatto un test di simulazione.
    1. DSum è certamente sbagliato
    2. Ho creato 2 caselle di testo:
    una nel piè di pagina sottomaschera,
    una nella maschera...mi è stato necessario crearla perché essendo la sottomaschera in "foglio dati" (non so perché) non vedo il suo piè di pagina.
    Chiamerò X la casella di testo nel piè di pagina sottomaschera, Y la casella di testo in maschera
    3. In X ci scrivi dentro:
    =Somma([NomeCampoNumerico])
    4. In Y ci scrivi dentro
    =[Maschere]![NomeMascheraPrincipale]![NomeSottomaschera]![X]

    A me funziona.
  • Re: Campi calcolati

    Sei un grande!!!!
    funziona perfettamente ed era la soluzione più semplice da adottare.

    Grazie per il validissimo aiuto!!!
    a presto (ne avrò sicuramente ancora bisogno)
  • Re: Campi calcolati

    OsvaldoLaviosa ha scritto:


    ...
    1. DSum è certamente sbagliato
    ...
    ciao Osvaldo.
    L'importante è che abbia risolto tuttavia, ad onor del vero, al solo scopo di fornire un'informazione esatta ti dico che per prova ho:
    - Creato "tabella1": ID(PK-numauto) e Campo1(testo)
    - Creato "Tabella2": ID(PK-numauto) e Campo1(FK) e Campo2(Numerico)
    - Messo in relazione 1:8 Tabella1!ID con Tabella2!Campo1
    - Selezionata la "Tabella1" ho cliccato su Composizione automatica maschera (per fare prima);
    - Inserito textbox e in "origine controllo" ho messo:
    =DSum("[campo2]";"tabella2";"[Campo1]=" & [ID])
    dove figlio6 è il controllo che ha come "origine oggetto" = Tabella.Tabella2
    e sembra funzionare...

    anche se devo ammettere che il tuo suggerimento è comunque più indicato di quello che ho dato io
Devi accedere o registrarti per scrivere nel forum
8 risposte