Presenze personale

di il
11 risposte

Presenze personale

Buongiorno, ringrazio tutti anticipatamente per la disponibilità.

Sono più che novizia e non riesco a trovare la soluzione al mio problema con Access 2007.

Provo ad ipotizzare un esempio.

Vorrei gestire le "presenze" di un gruppo di persone durante tutto l'arco dell'anno, nessun giorno escluso e con eventualmente la possibilità di aggiungere ulteriori nomi anche durante l'anno ovviamente per le date a seguire.

Facciamo l'ipotesi di gruppo di 100 o più dipendenti senza turni fissi, pertanto alcuni lavorano tutti i giorni, alcuni in giorni saltuari ecc.

Vorrei:
- Poter inserire le presenze dei dipendenti nelle rispettive date lavorative;
- Richiamando una qualsiasi vorrei data poter visualizzare quali sono i dipendenti che risultano inseriti come presenti in tale data;
- Richiamando il nome di un qualsiasi dipendente vorrei poter vedere tutte le date dell'anno nelle le quali risulta inserito come presente.

Ho problemi a strutturare le tabelle di base nonché le relazioni "uno a molti" e "molti a uno" che legano le tabelle nonchè a strutturare le maschere e le sotto maschere opportune per la visualizzazione/modifica/inserimento dei nuovi dati.

Al momento avrei strutturato così le tabelle:
Personale
IDPersonale (campo contatore chiave primaria)
Cognome (campo testo)

Calendario
IDCalendario (campo contatore chiave primaria)
Giorno (campo data)

Ritengo, ma non ne sono certa, che occorra anche una terza tabella che svolga il compito di congiungere i campi in comune tra le due tabelle. Quest'ultima tabella filtra i dati da due query relative alle due tabelle Personale e Calendario es.:

CongiunzionePersonaleCalendario
IDCongiunzionePersonaleCalendario (campo contatore chiave primaria)
CongiunzioneCognome (campo testo)
CongiunzioneGiorno (campo data)

Quest'ultima tabella filtra i dati da due query relative alle due tabelle Personale e Calendario

Poi, al momento di creare maschere e sotto maschere per l'inserimento/modifica/visualizzazione mi perdo e non ho alcun risultato.

Grazie di nuovo per l'attenzione e per la Vostra disponibilità

Ava

11 Risposte

  • Re: Presenze personale

    Mi pare di capire che tu non abbia le idee molto chiare sull'argomento.
    In genere, quando devo affrontare un nuovo programma di cui non sono ferrato, inizio a documentarmi sull'argomento, studiando altri programmi (in versione demo).

    A parte questo, magari ti può essere utile sapere che acquistando un lettore di badge ti regalano già il software di rilevazione presenze.
    I prezzi partono dai 90 € in su. Valuta tu...
  • Re: Presenze personale

    Per me non serve una tabella Calendario.
    Io propongo la seguente struttura:

    Persone
    IDPersona (PK)
    Cognome
    Nome

    Presenze
    IDPresenza (PK)
    DataPresenza
    IDPersona (FK)

    Relazione Persone.IDPersona uno-a-molti Presenze.IDPersona

    Fin qui risolviamo il problema STRUTTURA TABELLE.

    AvaFimal ha scritto:


    - Richiamando una qualsiasi vorrei data poter visualizzare quali sono i dipendenti che risultano inseriti come presenti in tale data;
    - Richiamando il nome di un qualsiasi dipendente vorrei poter vedere tutte le date dell'anno nelle le quali risulta inserito come presente.
    Per rispondere a queste domande occorre impostare 2 query.

    Un consiglio che vorrei darti è non devi pensare le cose "tutte insieme". L'input dati è una cosa. Quando vuoi interrogare il database in un modo lo fai con una domanda. Per un'altra domanda lo interroghi diversamente. Una domanda=una query (di selezione).
  • Re: Presenze personale

    Grande Osvaldo.....
    Grazie Osvaldo, ho provato e per adesso tutto funziona tutto perfettamente. Mi hai aperto gli occhi.
    A questo punto hai fatto cento ..... ti chiedo cortesemente di fare 101.
    Lavorando sulla tabella Presenze per l'inserimento devo evitare di inserire più volte la stessa data per la stessa Persona.
    Se modifico la tabella per rendere il campo DataPresenza come (duplicati non ammessi) non posso più inserire la data neanche per altre Persone. In pratica devo avere un controllo che mi impedisca di assegnare una data ad uno specifico nome (o viceversa) più di una volta.
    Cosa mi suggerisci.
    Grazie ancora
    Ava
  • Re: Presenze personale

    Devi impostare un "Indice Multicampo Univoco" sulla coppia campi DataPresenza, IDPersona.
    Leggi qui
    https://support.office.com/it-it/article/creare-e-utilizzare-un-indice-per-migliorare-le-prestazioni-0a8e2aa6-735c-4c3a-9dda-38c6c4f1a0ce
    dove dice "Creare un indice multicampo".
  • Re: Presenze personale

    Grazie Osvaldo,
    sei stato prezioso. Oggi pomeriggio proverò.

    Grazie ancora e buona giornata.
    Ciao

    Ava
  • Re: Presenze personale

    Grazie Osvaldo, tutto funziona a meraviglia.
    Complimenti per la tua competenza.
    Se posso, e se avete ancora pazienza e tempo da dedicarmi, chiedo a tutti se esiste un modo da assegnare le presenze senza doverle inserire una ad una.
    Es.
    Supponiamo di dover inserire le presunte presenze per ogni persona fin dall'inizio dell'anno, quale potrebbe essere il metodo che mi consente di inserirle consentendomi di evitare i riposi e le feste comandate?
    Grazie per la pazienza e per la Vostra disponibilità.
    Ava
  • Re: Presenze personale

    E se Rossi Mario il giorno 24/5/2018 (feriale/lavorativo) non dovesse "presentarsi", come intendi risolvere?
  • Re: Presenze personale

    Cercando la data e cancellando il nome dal campo nel record o anche cancellando l'intero record. Stavo pensando ad una tabella di excel collegata.
    Tieni presente che per me è solo un modo per cercare di capire un po' Access. Ho programmato un po' all'epoca del Visual Basic 5 ma sempre e solo per divertimento.
    Grazie
    Ava
  • Re: Presenze personale

    Provo ad interpretare il tuo ragionamento, vado a ruota libera, correggimi dove sbaglio.

    Tu ritieni che all'80% i Dipendenti saranno presenti secondo un "planning" che avresti intenzione di "preparare". Per gestire il restante 20% ritieni utile/giusto cancellare i record di "non presenza".
    Devi creare una "query di accodamento" che "ogni tanto" vorrai eseguire.
    Tieni presente che fintanto che parli di giorni "feriali" lunedì-venerdì e/o sabato non sarà poi così difficile. Le complicazioni nascono per le "feste comandate" che "ogni tanto" cambiano/crescono/annullano, ma soprattutto Pasqua+Lunedì cadono ogni anno in giorni diversi. Per queste complicazioni...ricordo che il guru del forum @Alex riuscì a trovare una complicatissima formula per individuare questi giorni "atipici"...
  • Re: Presenze personale

    Buongiorno,
    io in una situazione analoga seguivo(anzi seguo tuttora) questa sequenza di step:
    - Creo tabella calendario con unico campo [Data], festivomanuale (numerico), superfestivoManuale (numerico) relativa all'anno;
    - Faccio l'update della tabella calendario aggiungendo Pasqua e Pasquetta (mettendo uno sul relativo campo superfestivo) mediante funzione VBA reperibile OnLine
    - Creo (se non esiste già) tabella AltriFestivi con campi: ID[PKey], Mese (numerico), Giorno (numerico), Festivo(numerico), SuperFestivo (numerico), DescrizioneFestivo (testo);
    - Creo una query basata sulla tabella calendario che per ogni data mi calcola le domeniche e mi effettua il join calcolato per i campi festivo e superfestivo prendendolo dalla tabella AltriFestivi.
    - Uso una query di creazione tabella dove vado a interpolare l'elenco dei dipendenti con la query di cui all'alinea precedente per ottenere, infine, una tabella dove ogni dipendente ha il suo calendario (365 record per dipendente) dove ad ogni data c'è festivo/Superfestivo.

    L'utilizzo della tabella così ottenuta dipende da quello che si ha necessità di ottenere... nel tuo caso escludere tutto ciò che nei campi domeniche, festivo e superfestivo abbia il valore 1

    Ps:
    Il fatto di aver cristallizzato su tabella risultati che effettivamente si sarebbero potuti ottenere in maniera calcolata all'occorrenza, è stata una scelta consapevole... credo che sia sconveniente appesantire 'il programma' calcolando la situazione festivi di volta in volta, in quanto trovo più pratico calcolare una sola volta nell'anno il calendario completo così da rendere le altre query meno pesanti.
  • Re: Presenze personale

    Grazie a tutti per i suggerimenti.
    Mi ci vorrà un po' di tempo per provare.
    Nel frattempo grazie di cuore.
    Vi aggiornerò sui risultati.
    Ciao a tutti.
    Ava
Devi accedere o registrarti per scrivere nel forum
11 risposte