Condividi tramite

Creazione query per calcolo quote

Anonimo
2017-03-31T14:56:25+00:00

Ciao a tutti,

quando non riesco a trovare la giusta soluzione, mi rivolgo a voi che siete più esperti di me nel risolvere problemi legati a particolari casi con access.

Questa volta vi coinvolgo per trovare la soluzione alla realizzazione di una query che mi possa permettere di fare una somma dei valori del campo "PesoRuolo" in base all'appartenenza di un determinato gruppo associato ad un determinato problema.

Mi spiego meglio. Come potete vedere dalle immagini riportate nel file allegato, ho realizzato un dbase per la distribuzione di un premio, a vari dipendenti, impegnati nella realizzazione di un determinato progetto in base ai ruoli ricoperti.

In base all'importo del progetto si calcola il valore complessivo del premio che viene suddiviso in percentuale fra i vari gruppi di appartenenza, che io ho chiamato Quote relative al rup, Quote relative alla progettazione, Quote relative alla Direzione e Quote relative al Collaudo.

La quota determinata per ogni figura appartenente al gruppo deve essere suddivisa per i vari soggetti impegnati nella realizzazione del progetto mediante l'attribuzione di un punteggio per il ruolo ricoperto.

Per fare ciò è necessario che venga effettuata la somma del “peso ruolo” per poi essere suddiviso fra i soggetti interessati.

A titolo di esempio il “peso del gruppo” da suddividere relativa ai Collaboratori Rup è uguale a 10 ed i soggetti interessati sono tre con i seguenti pesi

Gruppo: Rup; Ruolo: Collaboratore Rup; Soggetto 1 peso 6

Gruppo: Rup; Ruolo: Collaboratore Rup; Soggetto 2 peso 4

Gruppo: Rup; Ruolo: Collaboratore Rup; Soggetto 3 peso 2

Determino la somma dei pesi che è pari a 12 che a sua volta determina la quota pro-capite:

al Soggetto 1 spettano 6/12 dell’intera quota; al soggetto 2 spettano i 4/12 dell’intero e ad al terzo soggetto spettano i 2/12.

Qualora la somma del “peso ruolo” sia inferiore al peso del gruppo  allora viene attribuito l’intera quota pari al peso del gruppo.

Sperando di essere stato chiaro, vi ringrazio per l’aiuto

Luca

https://1drv.ms/u/s!AtAJ5hV8tzhMimpo0Kr\_kFAN9T9R

Microsoft 365 e Office | Accesso | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

6 risposte

Ordina per: Più utili
  1. Anonimo
    2017-04-05T18:13:37+00:00

    ciao Luca,

    [...]

    In merito all'uso delle relazioni con integrità referenziale, è probabile, anzi quasi sicuro, che non ho ben capito quando è ora di usarle e quando, invece, vale la pena di usare delle semplici relazioni (la mia conoscenza in materia ha diverse lacune).

    [...]

    è un vincolo, un trigger, valido se vuoi evitare di combinare pasticci in termini di righe lato molti orfani della pk lato uno, oppure ancora per non cancellare records padri che hanno righe figlie correlate.

    [...]

    Per quanto riguarda l'uso del lookup fields ... francamente non ho capito di cosa parli (perdonami mastico ancora poco le terminologie di access ...

    [...]

    cosa succede se modifichi la tabella anagrafica...devi modificare di conseguenze anche il predicato del lookupfield.

    La comodità è legata alla creazione della maschera in quanto hai la comboBox generata di default, ma è sufficiente inserire il valore della pk e per la maschera beh, non questo non rappresenta un problema.

    leggi questo :

    http://access.mvps.org/access/lookupfields.htm

    [...]

    Direi che, se vuoi divertirti nel calcolo delle quote spettanti ai singoli soggetti impegnati è piuttosto semplice e vado a spiegartelo:

    [...]

    nel tuo db ottengo questo :

    mi sembrano percentuali applicati a 1320 euro, non se dipenda dal fatto che le impostazioni sono errate, in ogni caso non ho capito come ottenere i valori che esponi.

    ciao, Sandro

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-04-05T17:33:37+00:00

    Ciao Sandro

    direi che il calcolo del peso dei gruppi funziona correttamente ed è più "comodo" con la seconda query che hai progettato (io non ci sarei arrivato mai!!!)

    "Vedo che abbondi nell'uso della relazioni....non sei obbligato ad impostare per ogni chiave esterna  una relazione 1->M con integrità referenziale.

    La tabella anagrafica per esempio potrebbe essere eliminata dalla relazione....sempre se la tarda ora non mi inganna.

    Oltre a questo vedi che usi molti lookup fields nelle tabelle, rifletti bene perché questa scelta potrebbe complicarti la vita in corso d'opera se implementi o effettui modifiche."

    In merito all'uso delle relazioni con integrità referenziale, è probabile, anzi quasi sicuro, che non ho ben capito quando è ora di usarle e quando, invece, vale la pena di usare delle semplici relazioni (la mia conoscenza in materia ha diverse lacune).

    In merito all'uso anche della tabella anagrafica nella relazione, secondo il mio ragionamento, era finalizzata a realizzare una sola tabella di raccordo in cui individuo il dipendente impegnato nel progeto, il suo ruolo (o più ruoli) ricoperto per quel progetto e, infini, a quale gruppo appartiene.

    Per quanto riguarda l'uso del lookup fields ... francamente non ho capito di cosa parli (perdonami mastico ancora poco le terminologie di access ...

    Direi che, se vuoi divertirti nel calcolo delle quote spettanti ai singoli soggetti impegnati è piuttosto semplice e vado a spiegartelo:

    Prendiamo a base il progetto "PROVA 1" e nella maschera che ho realizzato spuntiamo come riportato nell'immagine sotto:

    come puoi notare vengono valorizzati i campi importo che si riferiscono ai gruppi.

    Bastrà prendere l'importo (che rappresenta l'ammontare del gruppo) moltiplicarlo per il PesoRuolo e dividerlo per la somma del PesoRuolo. Per alcuni casi il regolamento stabilisce che qualora la somma dei ruoli è inferiore ad una certa soglia si applica un PesoMinimo.

    Per esempio: Se la somma dei PesoRuolo dei Collaboratori Rup è minore di 10 per il calcolo della quota singola in luogo della somma del PesoRuolo si applica questo valore minimo che nell'esempio è pari a 10.

    Spero di essere stato chiaro e di aveti dato ulteriori elementi di ragionamento.

    Grazie sei veramente molto gentile nell'aiutarmi in questo sviluppo

    A presto

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-04-04T22:41:40+00:00

    ciao Luca,

    [...]

    la tua affermazione è esatta. Però è necessario, secondo me, che ci sia anche il peso del gruppo poichè, qualora la somma dei pesi dei ruoli sia inferiore, si applica il valore "minimo" del peso del gruppo.

    [...]

    ...mmmmm...secondo me non serve memorizzare il totale del gruppo nella tabella gruppo perché lo puoi sempre calcolare ad esempio :

    SELECT T_Raccordo.IDProgetto,

                 T_Raccordo.IDRuolo,

                 T_Ruoli.IDGruppo,

                 T_Ruoli.PesoRuolo,

                (select sum(pesoruolo) from t_ruoli as r where r.idgruppo=t_ruoli.idgruppo) AS totPesoGruppo,

               (select sum(pesoRuolo) from T_ruoli as r inner join t_raccordo as t on  r.idruolo=t.idruolo where t.idprogetto=t_raccordo.idprogetto) AS TotPr

    FROM

            T_Raccordo

    INNER JOIN

            T_Ruoli

    ON

          T_Raccordo.IDRuolo = T_Ruoli.IDRuolo

    ORDER BY T_Raccordo.IDProgetto;

    oppure se ti serve l'uteriore dettaglio del gruppo :

    SELECT T_Raccordo.IDProgetto,

               T_Raccordo.IDRuolo,

               T_Ruoli.IDGruppo,

              T_Ruoli.PesoRuolo,

             (select sum(pesoruolo) from t_ruoli as r where r.idgruppo=t_ruoli.idgruppo) AS totPesoGruppo,

             (select sum(pesoRuolo) from T_ruoli as r inner join t_raccordo as t on  r.idruolo=t.idruolo where t.idprogetto=t_raccordo.idprogetto and t.idgruppo=t_raccordo.idgruppo) AS TotPr

    FROM

            T_Raccordo

    INNER JOIN

        T_Ruoli

    ON

         T_Raccordo.IDRuolo = T_Ruoli.IDRuolo

    ORDER BY T_Raccordo.IDProgetto;

    il campo calcolato totPesoGruppo restituisce la somma del gruppo dalla tabella ruoli invece totPr la somma dei ruoli del progetto, entrambi estratti dalla t_ruoli.

    A parte la citata ridondanza il resto mi pare corretto, disegnando il tutto su un pezzo di carta ottengo lo stesso schema che ha pensato tu.

    Vedi che abbondi nell'uso della relazioni....non sei obbligato ad impostare per ogni chiave esterna  una relazione 1->M con integrità referenziale.

    La tabella anagrafica per esempio potrebbe essere eliminata dalla relazione....sempre se la tarda ora non mi inganna.

    Oltre a questo vedi che usi molti lookup fields nelle tabelle, rifletti bene perché questa scelta potrebbe complicarti la vita in corso d'opera se implementi o effettui modifiche.

    Avrei voluto procedere anche al calcolo delle quote in base ai campi cacolati della query di cui sopra, ma non ho capito molto come procedi :-)))).

    [...]

    Un ringraziamento

    Luca

    [...]

    HTH.

    Facci sapere.

    ciao, Sandro.

    Ps la query potrebbe essere migliorata con due inner join, stasera me ne esce solo uno.... :-(((

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-04-04T10:43:04+00:00

    Ciao Sandro,

    volentiere rispondo alle tue domande fornedoti i chierimenti di cui hai bisogno:

    Mi sembra di capire che il peso totale del gruppo è dato dalla somma del peso dei singoli ruoli che lo formano ....

    la tua affermazione è esatta. Però è necessario, secondo me, che ci sia anche il peso del gruppo poichè, qualora la somma dei pesi dei ruoli sia inferiore, si applica il valore "minimo" del peso del gruppo.

    i gruppo sono formati da ruoli o dalle persone?

    I gruppi sono compostie  formati da ruoli. Ogni persona ha uno o più ruoli.

    es: Sandro, nello stesso progetto, può essere Rup e anche Collaboratore Rup D; Luca, invece, per lo stesso progetto è solo Rup: In pratica ogni persona coinvolta nel progetto può svolgere uno o più ruoli.

    E' il gruppo che gestisce il progetto, giusto, e non una persona specifica....?

    Per essere precisi è l'insieme dei gruppi che gestiscono e partecipano al progetto (Rup; Progettazione; Direzione LAvori e Collaudo) come si può intuire nella form del Dbase. Ti preciso che i gruppi partecipano tutti al progetto, mentre i ruoli possono essere diversi (nel senso che in un progetto possono essere tutti coinvolti, mentre in un altro possono essere coinvolti solo alcuni ruoli)

    I ruoli del gruppo sono fissi?

    il ruolo può essere uguale ma può appartenere a più gruppi (nel senso il collaboratore D può appartenere al gruppo Collaboratori Rup, al gruppo Amministrativo, Contratti, etc.

    ti faccio uno schema affinchè tu puoi capire meglio

    Gruppo Ruolo
    Rup Rup
    Collaboratore D
    Collaboratore C
    Collaboratore altro
    Verificatore Verificatore
    Collaboratore D
    Collaboratore C
    Collaboratore verificatore altro
    Amministrivi LL.PP. Amministrativo – Dir.
    Amministrativo – D3
    Amministrativo – D1
    Amministrativo – C
    Amministrativo – B
    Amministrativo – Altro

    Ti preciso che ogni persona (anagrafica) coinvolta nella realizzazione del progetto può svolgere compiti diversi (quindi ruoli diversi) e di conseguenza far parte di gruppi diversi (Rup, Progettazione) quindi appartenere a più gruppi.

    Spero di essere stato chiaro e di averti fornito i chiarimenti ti cui hai bisogno.

    Un ringraziamento

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-04-04T05:41:35+00:00

    ciao Luca,

    qualche domanda.

    Devi gestire dei progetti assegnandoli a dei gruppi formati da ruoli, che a loro volta affidati a persone.

    Ogni ruolo ha un peso, ogni gruppo ha un peso.

    Mi sembra di capire che il peso totale del gruppo è dato dalla somma del peso dei singoli ruoli che lo formano quindi non serve memorizzare in un campo della tabella gruppo questo valore perché sempre calcolabile dalla somma dei singoli ruoli----->[ conferma che sia corretta questa assunzione].

    Poi volevo capire un po' meglio.

    i gruppo sono formati da ruoli o dalle persone? sembra da ruoli.

    le persone possono avere uno e solo un ruolo o possono averne più di uno?

    E' il gruppo che gestisce il progetto, giusto, e non una persona specifica....?

    I ruoli del gruppo sono fissi? nel senso una volta definito :

    gruppo1

    ---> composto da ruolo1, ruolo2 e ruolo3 è sempre fisso ?

    oppure lo stesso gruppo può essere formato da ruolo1, ruolo2, ruolo3, ruolo4 in base al progetto...?

    tutto questo per capire se l'impostazione delle tabelle è corretto, mi sembra di intuire che qualcosa non va...

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento