Calcola valori da combo

di il
13 risposte

Calcola valori da combo

Ciao a tutti.
Sono nuova sia di questo Forum che di Access, ma grazie al vostro aiuto e alle risposte che ho trovato in questo fantastico Forum sono riuscita a costruire quasi tutto il mio db. Sono sicura che da qualche parte c'è anche la risposta al mio problema, ma non sono riuscita a trovarla. Provo a descrivere il problema:
in una tabella ho una casella combinata che mi elenca i nomi dei corsi di una sessione di formazione (possono essere selezionati più valori). La combo è formulata sulla base di questa query :

SELECT [Moduli di formazione].Id, [Titolo corso] & " - ore corso " & [Ore corso] AS [Modulo/ora]
FROM [Moduli di formazione]
ORDER BY [Titolo corso] & " - ore corso " & [Ore corso];

Vorrei che nel campo successivo venga calcolato in automatico la somma delle ore dei moduli selezionati.

Spero di essere stata chiara.
Grazie comunque per il lavoro che mi avete permesso di fare.

13 Risposte

  • Re: Calcola valori da combo

    Benvenuta nel forum.

    Maratzor ha scritto:


    Spero di essere stata chiara.
    Chi ti risponde è il più duro di comprendonio. La mia risposta è No.

    Maratzor ha scritto:


    in una tabella ho una casella combinata che mi elenca i nomi dei corsi di una sessione di formazione (possono essere selezionati più valori).
    Sei sicura che si tratta di una "casella combinata" e non di una "casella di riepilogo"?

    Maratzor ha scritto:


    Vorrei che nel campo successivo venga calcolato in automatico la somma delle ore dei moduli selezionati.
    Le tabelle, sebbene Access consenta i campi di tipo "calcolato", dovrebbero essere solo i contenitori di valori "primordiali", cioè quelli che solo l'utente fornisce alla tabella. Per calcoli e visualizzazione "risultati" si usano le query.
    Potresti predisporre una maschera che poggia sulla tua tabella e poi aggiungere una casella di testo non associata ad alcun campo ed avente una formula/funzione che restituisca "quello che avresti chiesto".
    Però io non ho capito se stai facendo veramente una cosa giusta/corretta/ortodossa.

    Potresti esporre anche:
    - nomi propri di tabelle che entrano in gioco
    - nomi propri di tutti i loro campi
    - cosa vorresti ottenere visivamente, usando i nomi propri di tabelle-maschere-controlli, magari racconta anche un esempio pratico
    ...affinché possiamo capire meglio il tuo contesto generale.
  • Re: Calcola valori da combo

    OsvaldoLaviosa ha scritto:


    Benvenuta nel forum.

    Maratzor ha scritto:


    Spero di essere stata chiara.
    Chi ti risponde è il più duro di comprendonio. La mia risposta è No.
    Lo Sapevo

    Maratzor ha scritto:


    in una tabella ho una casella combinata che mi elenca i nomi dei corsi di una sessione di formazione (possono essere selezionati più valori).
    Sei sicura che si tratta di una "casella combinata" e non di una "casella di riepilogo"?
    si è una casella combinata

    Maratzor ha scritto:


    Vorrei che nel campo successivo venga calcolato in automatico la somma delle ore dei moduli selezionati.
    Le tabelle, sebbene Access consenta i campi di tipo "calcolato", dovrebbero essere solo i contenitori di valori "primordiali", cioè quelli che solo l'utente fornisce alla tabella. Per calcoli e visualizzazione "risultati" si usano le query.
    Potresti predisporre una maschera che poggia sulla tua tabella e poi aggiungere una casella di testo non associata ad alcun campo ed avente una formula/funzione che restituisca "quello che avresti chiesto".
    Per me fare una maschera che si appoggi alla tabella per il calcolo non è un problema (certo devo capire come) ma avevo già pensato di farla per semplificare la compilazione, ma poi deve risultare nella tabella perchè deve rimanerne traccia.

    Però io non ho capito se stai facendo veramente una cosa giusta/corretta/ortodossa.

    Potresti esporre anche:
    - nomi propri di tabelle che entrano in gioco
    - nomi propri di tutti i loro campi
    - cosa vorresti ottenere visivamente, usando i nomi propri di tabelle-maschere-controlli, magari racconta anche un esempio pratico
    ...affinché possiamo capire meglio il tuo contesto generale.
    Ci provo, ma devo necessariamente allungarmi cercando di spiegare l'obiettivo del mio db.
    Si tratta di un db della formazione sulla sicurezza dei dipendenti.
    sono riuscita a fare una query di selezione che mi restituisce in una maschera per la ricerca chi ha fatto cosa.
    Da qui devo popolare una tabella programmazione che sui dipendenti individuati dalla mia maschera di ricerca programmi i corsi da fare e i relativi moduli con monte ore che se il dipendente non assolve totalmente deve rimanere come traccia.
    La mia tabella programmazione si appoggia a:
    Tabela dipendenti
    Tabella Moduli;
    Sono presenti poi altri campi di informazione sulla programmazione ma non relazionati.
    Per evitare di sbagliare nella digitalizzazione sia il campo dipendenti che il campo moduli sono delle caselle combinate che mi danno ID, Cognome e nome del dipendente nella prima, e ID, Nome modulo e numero ore per modulo nella seconda. In entrambe le caselle combinate sono ammessi più valori.
    In più nel campo Moduli avevo l'esigenza che venisse visualizzato oltre al nome del modulo anche il numero di ore previste per quel modulo.
    Ho quindi fatto una query per la compilazione del campo, che è quella che vi ho postato in SQL.

    So che la cosa è ancora contorta nella spiegazione, ma sono sicura che riuscite a dipanare il mio racconto.
  • Re: Calcola valori da combo

    Il mio punto di vista non ci vede chiaro sulla NORMALIZZAZIONE del tuo database. Se non esponi chiaramente TUTTE le tabelle con tutti i campi e le RELAZIONI (importantissime), almeno io non riesco a venire a capo di nulla sul tuo progetto.

    Da quel poco che ho recepito dalla tua esposizione, ci vedrei almeno le seguenti tabelle:
    Dipendenti
    Corsi
    Partecipazioni

    Relazioni:
    Dipendenti uno-a-molti Partecipazioni
    Corsi uno-a-molti Partecipazioni

    Questo perché a un Corso possono partecipare molti Dipendenti. Un Dipendente può partecipare a molti Corsi.
  • Re: Calcola valori da combo

    OsvaldoLaviosa ha scritto:


    Il mio punto di vista non ci vede chiaro sulla NORMALIZZAZIONE del tuo database. Se non esponi chiaramente TUTTE le tabelle con tutti i campi e le RELAZIONI (importantissime), almeno io non riesco a venire a capo di nulla sul tuo progetto.

    Da quel poco che ho recepito dalla tua esposizione, ci vedrei almeno le seguenti tabelle:
    Dipendenti
    Corsi
    Partecipazioni

    Relazioni:
    Dipendenti uno-a-molti Partecipazioni
    Corsi uno-a-molti Partecipazioni

    Questo perché a un Corso possono partecipare molti Dipendenti. Un Dipendente può partecipare a molti Corsi.
    Ok ci provo e che avevo paura che le cose diventassero troppo lunghe
    Tabelle:
    Dipendenti: Id (PK); Nome; Cognome; Mansione (ID Casella combinata da tb mansioni) (Più valori); Tipologia Contratto; Sesso; Data fine rapporto di lavoro
    Sessioni di formazione:ID (PK), Data; Titolo Corso;Data Programmazione; Materiale informativo; Ore sessione; Docenti; Sede Docenza; Moduli (ID casella combinata da tb Moduli) (Più valori). Personale in debito (ID Casella combinata da tb Dipendenti) (Più valori)
    Moduli: ID(PK); Modulo; Descrizione; Frequenza; Preavviso

    Tralascio le tabelle che sono interessate solo alla ricerca che sono: Mansioni; Storico Incarico Mansioni ai dipendenti; Pericoli; Storico associazione pericolo_mansione; Storico associazione pericolo_rischio; Storico associazione rischio_moduli

    Con una query di selezione e dei criteri impostati sono riuscita a impostare delle maschere di ricerca che mi trovano i dipendenti che hanno dei debiti e la ricerca può essere fatta per data, per dipendente (con associata anche una sottomaschera o con le informazioni sulle mansioni) e per moduli frequentati.
    Il risultato della ricerca deve aiutarmi a popolare una tabella programmazione della sessione.
    Quindi la tabella Programmazione è così formata:
    ID(PK); Data di pianificazione; Protocollo; Titolo Corso; data Programmazione corso; MODULI (ID; Casella combinata da query chiamata Modulo_ore che nella stinga mi fa vedere sia il nome del modulo che le ore previste per quel modulo)(PIU' valori); Ore sessione (qui vorrei che venisse calcolato la somma delle ore dei moduli che sono stati selezionati nel campo moduli)

    Le relazioni sono:
    Dipendenti-moduli = Uno a molti;
    Sessioni di formazione - Dipendenti = Molti a molti (relazione intermediata da una tabella di collegamento (id; Id dipendente; Id Sessione);
    Sessioni_Moduli =uno a molti

    Quindi la tabella programmazione avrebbe
    TB Programmazione - Dipendenti= uno a molti
    Moduli = uno a molti

    che dici? può bastare?
  • Re: Calcola valori da combo

    Maratzor ha scritto:


    OsvaldoLaviosa ha scritto:


    Il mio punto di vista non ci vede chiaro sulla NORMALIZZAZIONE del tuo database. Se non esponi chiaramente TUTTE le tabelle con tutti i campi e le RELAZIONI (importantissime), almeno io non riesco a venire a capo di nulla sul tuo progetto.

    Da quel poco che ho recepito dalla tua esposizione, ci vedrei almeno le seguenti tabelle:
    Dipendenti
    Corsi
    Partecipazioni

    Relazioni:
    Dipendenti uno-a-molti Partecipazioni
    Corsi uno-a-molti Partecipazioni

    Questo perché a un Corso possono partecipare molti Dipendenti. Un Dipendente può partecipare a molti Corsi.
    Ok ci provo e che avevo paura che le cose diventassero troppo lunghe
    Tabelle:
    Dipendenti: Id (PK); Nome; Cognome; Mansione (ID Casella combinata da tb mansioni) (Più valori); Tipologia Contratto; Sesso; Data fine rapporto di lavoro
    Sessioni di formazione:ID (PK), Data; Titolo Corso;Data Programmazione; Materiale informativo; Ore sessione; Docenti; Sede Docenza; Moduli (ID casella combinata da tb Moduli) (Più valori). Personale in debito (ID Casella combinata da tb Dipendenti) (Più valori)
    Moduli: ID(PK); Modulo; Descrizione; Frequenza; Preavviso Scusa avevo dimenticato l'importatntissimo campo Ore per modulo

    Tralascio le tabelle che sono interessate solo alla ricerca che sono: Mansioni; Storico Incarico Mansioni ai dipendenti; Pericoli; Storico associazione pericolo_mansione; Storico associazione pericolo_rischio; Storico associazione rischio_moduli

    Con una query di selezione e dei criteri impostati sono riuscita a impostare delle maschere di ricerca che mi trovano i dipendenti che hanno dei debiti e la ricerca può essere fatta per data, per dipendente (con associata anche una sottomaschera o con le informazioni sulle mansioni) e per moduli frequentati.
    Il risultato della ricerca deve aiutarmi a popolare una tabella programmazione della sessione.
    Quindi la tabella Programmazione è così formata:
    ID(PK); Data di pianificazione; Protocollo; Titolo Corso; data Programmazione corso; MODULI (ID; Casella combinata da query chiamata Modulo_ore che nella stinga mi fa vedere sia il nome del modulo che le ore previste per quel modulo)(PIU' valori); Ore sessione (qui vorrei che venisse calcolato la somma delle ore dei moduli che sono stati selezionati nel campo moduli)

    Le relazioni sono:
    Dipendenti-moduli = Uno a molti;
    Sessioni di formazione - Dipendenti = Molti a molti (relazione intermediata da una tabella di collegamento (id; Id dipendente; Id Sessione);
    Sessioni_Moduli =uno a molti

    Quindi la tabella programmazione avrebbe
    TB Programmazione - Dipendenti= uno a molti
    Moduli = uno a molti

    che dici? può bastare?
  • Re: Calcola valori da combo

    Quando leggo "casella combinata (più valori)", mi stai dicendo che si tratta di una CASELLA COMBINATA MULTIVALORE: giusto?
  • Re: Calcola valori da combo

    OsvaldoLaviosa ha scritto:


    Quando leggo "casella combinata (più valori)", mi stai dicendo che si tratta di una CASELLA COMBINATA MULTIVALORE: giusto?
    Si
  • Re: Calcola valori da combo

    Ahi!
    Le "caselle combinate multivalore" sono molto sconsigliate dai programmatori. Io stesso tentai di usarle una volta, con scarsi benefici. La guida in linea di Access stessa ne parla consigliandola solo in casi di "pochi valori" e "immediati/semplici". Considera anche che si tratta di una caratteristica implementata solo da Access che non trova riscontro in altre applicazioni.
    Il tuo caso poi mi appare alquanto complesso (casella combinata che poggia su una query "per niente immediata").
    Il mio punto di vista ti consiglia di progettare normali relazioni uno-a-molti e tabelle specifiche, anche se si tratta di pochi valori.
  • Re: Calcola valori da combo

    OsvaldoLaviosa ha scritto:


    Ahi!
    Le "caselle combinate multivalore" sono molto sconsigliate dai programmatori. Io stesso tentai di usarle una volta, con scarsi benefici. La guida in linea di Access stessa ne parla consigliandola solo in casi di "pochi valori" e "immediati/semplici". Considera anche che si tratta di una caratteristica implementata solo da Access che non trova riscontro in altre applicazioni.
    Il tuo caso poi mi appare alquanto complesso (casella combinata che poggia su una query "per niente immediata").
    Il mio punto di vista ti consiglia di progettare normali relazioni uno-a-molti e tabelle specifiche, anche se si tratta di pochi valori.
    Che tristezza....
    ero arrivata quasi in cima.....ma tutto il resto funziona....
    quindi devo mettere più campi moduli e ciascuno con le ore associate? tanto massimo possono essere 4, anche se non c'è un numero limite dei moduli in un corso
  • Re: Calcola valori da combo

    Può capitare di commettere pasticci del genere. Riprogetta tutto in maniera normalizzata. Ti accorgerai da sola che i punti di vista cambieranno radicalmente.
  • Re: Calcola valori da combo

    OsvaldoLaviosa ha scritto:


    Può capitare di commettere pasticci del genere. Riprogetta tutto in maniera normalizzata. Ti accorgerai da sola che i punti di vista cambieranno radicalmente.
    Dimmi che per tutto non intendi tutto il db
    Ti prego
  • Re: Calcola valori da combo

    Se non interviene un utente più esperto di me a smentirmi, dovrai sopportare la mia solenne sentenza: Sì.
    Ti dò vari suggerimenti, alcuni sostanziali, altri puramente estetici che servono a renderti più comprensibile anche nei confronti del forum:
    1. I nomi tabelle devono essere relativamente essenziali (sempre al PLURALE), la maggior parte dei programmatori non ama mettere lo spazio tra più termini.
    2. I nomi campi sempre al SINGOLARE
    3. I campi di una tabella devono essere OMOGENEI al titolo della tabella stessa. Ad esempio una tabella anagrafica Dipendenti deve avere solo campi "anagrafici"...io escluderei quelli storici-meritoriali ecc...
    4. I campi chiave con denominazione ESPLICITA, ossia IDDipendente, IDCorso, IDModulo…
    5. Le relazioni sono indispensabili
    6. Il database deve essere NORMALIZZATO. Questa parolaccia molto odiata dai principianti serve a mettere in piedi un BUON DATABASE. In assenza di normalizzazione si rischia seriamente di andare incontro a problemi successivamente, oltre che ad avere un dialogo "incomprensibile" con il resto degli utenti del forum.
  • Re: Calcola valori da combo

    OsvaldoLaviosa ha scritto:


    Se non interviene un utente più esperto di me a smentirmi, dovrai sopportare la mia solenne sentenza: Sì.
    Ti dò vari suggerimenti, alcuni sostanziali, altri puramente estetici che servono a renderti più comprensibile anche nei confronti del forum:
    1. I nomi tabelle devono essere relativamente essenziali (sempre al PLURALE), la maggior parte dei programmatori non ama mettere lo spazio tra più termini.
    2. I nomi campi sempre al SINGOLARE
    3. I campi di una tabella devono essere OMOGENEI al titolo della tabella stessa. Ad esempio una tabella anagrafica Dipendenti deve avere solo campi "anagrafici"...io escluderei quelli storici-meritoriali ecc...
    4. I campi chiave con denominazione ESPLICITA, ossia IDDipendente, IDCorso, IDModulo…
    5. Le relazioni sono indispensabili
    6. Il database deve essere NORMALIZZATO. Questa parolaccia molto odiata dai principianti serve a mettere in piedi un BUON DATABASE. In assenza di normalizzazione si rischia seriamente di andare incontro a problemi successivamente, oltre che ad avere un dialogo "incomprensibile" con il resto degli utenti del forum.


    Non ci ho dormito tutta la notte, per capire come ricostruire il tutto ma del resto era nell'ordine delle cose che da inesperta avrei fatto errori di questo genere. Mi stupivo io stessa del livello a cui ero arrivata ed infatti....
    Comunque grazie, comunque questo forum è fantastico perchè delle persone esperte come te perdono del tempo a risolvere problemi a chi come me è più un testardo pasticcione che bravo.
    Ciao
Devi accedere o registrarti per scrivere nel forum
13 risposte