Presenze mensili

di il
36 risposte

Presenze mensili

Buonasera a tutti il forum.
Avrei da chiedere un aiuto a chi è più esperto di me sul forum. Ho creato un database di relazione umane con tabella di anagrafica e tabella dei rapporti di lavoro con relazione uno a molti. Fin qui nulla di particolare riesco tranquillamente ad inserire i nuovi assunti e a gestire i rapporti.
Dovrei inserire ora un form di inserimento presenze per tutti gli assunti, il form dovrà essere su base mensile e si dovrà apporre un flag ai giorni di effettiva presenza.
Come potrei strutturare la form per ottenere ciò esiste una griglia del genere?

grazie infinite

36 Risposte

  • Re: Presenze mensili

    Io forse ho capito che hai 2 sole tabelle: Anagrafica e RapportiLavoro...o Presenze: questa cosa non l'ho capita.
    Puoi mostrare tutti i campi di RapportiLavoro? Poi rispiega quello che vuoi fare usando i nomi propri.
  • Re: Presenze mensili

    Ciao Osvaldo grazie per la risposta innanzitutto si esatto per ora ho due sole tabelle Dipendenti e Rapporti con relazione uno a molti.
    Nella tabella dipendenti tengo:
    ID (pk)
    Cognome
    Nome
    datadinascita etc

    nella tabella rapporti tengo
    ID (PK)
    IdDip (PK) relazionata alla colonna ID di dipendenti con relazione uno a molti
    Datapresenza (qui ipotizzavo di far fare l'inserimento della presenza controllando che non ci siano duplicati giornalieri per lo stesso id)
    presenza (SI/NO) per gestire i segni di spunta nella form
    Datassunzione
    Datalicenziamento
    TTGGGENNAIO
    TTGGFEBBRAIO
    TTGGMARZO
    ETC

    Quello che vorrei ottenere è creare una form di inserimento delle giornate in maniera agevole quindi una sorta di griglia in cui sono presenti tutti gli assunti con i giorni del mese da spuntare in caso di presenza. nelle colonne TTGGGENNAIO, TTGGFEBBRAIO andranno riportati i numeri di giorni lavorativi svolti che richiamerò da report.
    Mi serve una griglia in quanto farlo per singolo dipendente e quindi per singola form richiederebbe molto tempo.
  • Re: Presenze mensili

    I valori che vorresti mostrare "orizzontalmente" nella tabella Rapporti devi esporla invece "verticalmente". Ora non so cosa vuoi tracciare nello specifico del tuo campo professionale, ma in sostanza ci vedrei i seguenti campi "base":
    IDRapporto (PK)
    DataRapporto
    TipoRapporto (qui ci scrivi se si tratta di Assunzione, Presenza, Licenziamento...altre voci…)
    Descrizione
    IDDipendente (FK)

    Il fatto che vuoi vedere le Presenze mensili, questo è un fatto che delegherai alle query di selezione, sulle quali potrai far poggiare un report che ti mostra i risultati in maniera "elegante".
  • Re: Presenze mensili

    Buongiorno Osvaldo e buona Domenica, come detto non mi preoccupa il voler vedere le presenze mensili con query di selezione in report elegante ma vorrei ottenere una facilità di immissione in griglia delle presenze mensili. In pratica voglio avere un tabellone con tutti gli assunti e imputare filtrando per data la presenza giornaliera per ciascuno di essi a seconda se sia avvenuta o meno. Trattandosi di un centinaio di persone farlo con una maschera di rapporto per ognuno di loro è poco pratico. Per questo volevo aprire un form con una griglia che me li fa visualizzare tutti, selezionare la data da menu a tendina e infine apporre segno di spunta per coloro che hanno lavorato in quel giorno. Questo andrebbe fatto ogni giorno. La reportistica delle presenze in maniera elegante non sarebbe un problema. È questo che non riesco ad ottenere.
    Saluti
  • Re: Presenze mensili

    Crea una sola maschera Rapporti e la compili in verticale. Ricorda che come ultimo campo hai proprio IDDipendente. Se ti appare con il numero (scomodo da ricordare), sfrutta una casella combinata "ben congeniata" che ti mostri Cognome Nome. Leggi qui per esempio
  • Re: Presenze mensili

    Radeon79,
    non hai specificato la relazione che vuoi assicurare fra la tabella Anagrafica e quella ove vuoi gestire le presenze del personale.
    Inoltre devi stabilire quale sia il formato dati per gestire le informazioni relative alle presenze o assenze giornaliere, in modo da assicurare la situazione riepilogativa (mensile o di altro tipo).
    Ciò alla luce di quanto esponi:

    radeon79 ha scritto:


    In pratica voglio avere un tabellone con tutti gli assunti e imputare filtrando per data la presenza giornaliera per ciascuno di essi a seconda se sia avvenuta o meno. Trattandosi di un centinaio di persone farlo con una maschera di rapporto per ognuno di loro è poco pratico. Per questo volevo aprire un form con una griglia che me li fa visualizzare tutti, selezionare la data da menu a tendina e infine apporre segno di spunta per coloro che hanno lavorato in quel giorno. Questo andrebbe fatto ogni giorno. La reportistica delle presenze in maniera elegante non sarebbe un problema. È questo che non riesco ad ottenere.
    In generale, se parti da una relazione 1<->N fra Anagrafica e Presenze dovrai inserire i dati in modo prefissato (ad esempio con un inserimento automatico e massivo delle presenze giornaliere/settimanali/mensili/annuali ed aggiornare successivamente la assenza quando questa si verifica.
    In tale scenario dovrai effettuare un filtro per data/periodo otterrai i dati incolonnati (nominativo e data) in modo da modificare la situazione di presenza del personale.
    Sfrutti in tale modo le opportunità offerte dal DBMS e se vuoi presentare dei dati puoi avvalerti delle query a campi incrociati, ove avrai (a lato) i nominativi ed (in testa) i periodi giornalieri in esame, con al centro le risultanze di assenza/presenza.
    In tale contesto hai opportunità di ottenere un "tabellone" di sintesi, ma non potrai agire con un aggiornamento diretto sui dati sottostanti.
    Se per te è importante agire attraverso un calendario ove si voglia la presentazione dei nominativi su un arco temporale più ampio di quello giornaliero, dovresti implementare una matrice di corrispondenza, in modo da porvi i dati memorizzati, presentarli e dopo l'aggiornamento riportare le modifiche apportate nelle tabelle.
    Per ottenere ciò è, chiaramente, richiesta una maggiore conoscenza e competenza sul linguaggio VBA.
    In tale ambito, inoltre, è da tenere presente che qualora si accetti di stravolgere la la situazione relazionale per cercare di velocizzare le operazioni, si può tentare di accorpare i dati della situazione di presenza/assenza, per uno specifico periodo.
    Ad esempio si potrebbe pensare di impiegare un record con l'identificativo del nominativo e 12 campi (uno per ciascun mese) al fine di coprire una situazione annuale.
    Utilizzando, per i dati mensili, dei campi di tipo testo con un massimo di 31 caratteri, ove il dato giornaliero è fornito da un singolo carattere che rappresenti, posizionalmente nella stringa, la presenza o assenza (ad esempio "P" od "A").
    Qualora si voglia una situazione più estesa di quella mensile si può pensare a impiegare una dimensione più ampia nel numero di caratteri (con i vincoli di Access di un campo di tipo "testo breve" pari a 255 o nel "testo lungo" ex "memo" di 65535).
    Concludendo, ti consiglio di effettuare una analisi del requisito da soddisfare e su questo procedere alla implementazione della struttura dati e della interfaccia.
  • Re: Presenze mensili

    Ciao willy55 hai centrato in pieno il mio problema ossia se purtroppo mi avvalgo delle query a campi incrociati per avere un elenco mensile purtroppo poi non posso effettuare delle operazioni di scrittura all'interno.
    Chiaro quindi che se devo effettuare delle operazioni massive devo agire diversamente, avevo ipotizzato di creare delle form mensili nel cui interno apporre i giorni da spuntare questa potrebbe essere un ipotesi percorribile.
    Le mie conoscenze VBA sono limitate pertanto costruirmi una matrice da presentare in griglia per la scrittura mi risulta complesso.
    Tramite i consigli di Osvaldo (che ringrazio) ho creato la form di inserimento presenza e posso scrivere la presenza giornaliera per i soggetti ma per i giorni successivi come faccio??
    se modifico la presenza infatti poi perdo quella già inserita andando a modificare un record già inserito.
    esiste un comando che mi faccia pulire il campo data e solo quello (per un nuovo inserimento) senza impostare un valore null a quello già inserito ??
    In questo modo avrei la possibilità di creare più record presenza per lo stesso ID dipendente.
  • Re: Presenze mensili

    Devi prendere in considerazione di impiegare una struttura ove nella tabella memorizzi i dati per ciascun giorno di tutti i nominativi in modo da agire giornalmente ed ottenere la presenza o assenza di ciascuno in qualsiasi periodo di interesse.
  • Re: Presenze mensili

    Willy è proprio quello che vorrei ottenere ma non capisco proprio come fare...
    Con i seguenti campi della tabella rapporti:
    IDRapporto (PK)
    IDDipendente (FK) rapporto uno a molto con tabella Dipendenti
    DataAssunzione (Data)
    Datapresenza (Data)
    Presenza (Si/No)
    e creando una form di inserimento con filtro per i soli dipendenti che abbiano un valore valido come data assunzione e che non risultano licenziati posso tranquillamente inserire la data della presenza giornaliera ma per i giorni successivi come faccio??? e se avessi sbagliato l'inserimento?? devo anche prevedere di poter correggere...
    insomma sono in alto mare..
  • Re: Presenze mensili

    Vorrei un chiarimento.
    Tu vorresti che accada che il giorno 10/1/2019 i seguenti Dipendenti
    Francesco v
    Pippo v
    Leo
    Antonio v
    Giuseppe v
    Quelli con v sono presenti.

    Il giorno 14/1/2019 vuoi vedere in tabella Rapporti calare comunque 5 record riferiti agli stessi Dipendenti e spuntare la Presenza.
    È questo che vuoi?
  • Re: Presenze mensili

    Rodeon79,
    come ti ho già indicato precedentemente, devi implementare una struttura in grado di gestire le presenze (o assenze) giornaliere di ciascun nominativo.
    Quindi la tua tabella "Rapporti" dovrà essere scissa in modo da avere una ulteriore tabella "Presenze".
    Un esempio schematicamente può essere il seguente:

    Tabella "Rapporti" con:

    IDRapporto (PK)
    IDDipendente (FK) in relazione con tabella Dipendenti
    DataAssunzione (Data)
    DataCessazione (Data)
    ...

    Tabella "Presenze" con:

    IDPresenza (PK)
    IDDipendente (FK) in relazione con tabella Dipendenti
    DataPresenza (Data)
    Presenza (Si/No)

    Ove, magari, dovrai implementare una funzionalità che inserisca (con la periodicità da te prescelta) in automatico, la data per tutte le FK dei dipendenti ed imposti la presenza a "Sì" dopodiché manualmente l'utente giornalmente richiamerà giornalmente l'elenco dei vari nominativi (legati ad IDDipendente) e per quel giorno (DataPresenza) imputerà le assenze (Presenza=No).
    La stessa cosa dovrà essere effettuata il giorno successivo e così a seguire per tutto il periodo da gestire.
    In tal modo avrai un elenco per tutti i giorni e per tutti i dipendenti delle assenze e presenze da essi riportati nel periodo (mensile, annuale, ecc.).
  • Re: Presenze mensili

    Esatto è esattamente questo che vorrei ottenere!!
    Troppo complesso da realizzare o impossibile?

    OsvaldoLaviosa ha scritto:


    Vorrei un chiarimento.
    Tu vorresti che accada che il giorno 10/1/2019 i seguenti Dipendenti
    Francesco v
    Pippo v
    Leo
    Antonio v
    Giuseppe v
    Quelli con v sono presenti.

    Il giorno 14/1/2019 vuoi vedere in tabella Rapporti calare comunque 5 record riferiti agli stessi Dipendenti e spuntare la Presenza.
    È questo che vuoi?
  • Re: Presenze mensili

    La data assunzione sta nei rapporti vorrei evitare di imputare una presenza ad un licenziato o ad un assunto.
    Dovrei collegare anche la tabella presenze alla tabella rapporti?

    willy55 ha scritto:


    Rodeon79,
    come ti ho già indicato precedentemente, devi implementare una struttura in grado di gestire le presenze (o assenze) giornaliere di ciascun nominativo.
    Quindi la tua tabella "Rapporti" dovrà essere scissa in modo da avere una ulteriore tabella "Presenze".
    Un esempio schematicamente può essere il seguente:

    Tabella "Rapporti" con:

    IDRapporto (PK)
    IDDipendente (FK) in relazione con tabella Dipendenti
    DataAssunzione (Data)
    DataCessazione (Data)
    ...

    Tabella "Presenze" con:

    IDPresenza (PK)
    IDDipendente (FK) in relazione con tabella Dipendenti
    DataPresenza (Data)
    Presenza (Si/No)

    Ove, magari, dovrai implementare una funzionalità che inserisca (con la periodicità da te prescelta) in automatico, la data per tutte le FK dei dipendenti ed imposti la presenza a "Sì" dopodiché manualmente l'utente giornalmente richiamerà giornalmente l'elenco dei vari nominativi (legati ad IDDipendente) e per quel giorno (DataPresenza) imputerà le assenze (Presenza=No).
    La stessa cosa dovrà essere effettuata il giorno successivo e così a seguire per tutto il periodo da gestire.
    In tal modo avrai un elenco per tutti i giorni e per tutti i dipendenti delle assenze e presenze da essi riportati nel periodo (mensile, annuale, ecc.).
  • Re: Presenze mensili

    radeon79 ha scritto:


    Esatto è esattamente questo che vorrei ottenere!!
    Troppo complesso da realizzare o impossibile?

    OsvaldoLaviosa ha scritto:


    Vorrei un chiarimento.
    Tu vorresti che accada che il giorno 10/1/2019 i seguenti Dipendenti
    Francesco v
    Pippo v
    Leo
    Antonio v
    Giuseppe v
    Quelli con v sono presenti.

    Il giorno 14/1/2019 vuoi vedere in tabella Rapporti calare comunque 5 record riferiti agli stessi Dipendenti e spuntare la Presenza.
    È questo che vuoi?
    Prevedi un campo di spunta (Sì/No) aggiunto alla tabella Rapporti. Poi ti basta una "query di accodamento" che prenda in considerazione tutti i Dipendenti.IDDipendente e li vada ad accodare in Rapporti.IDDipendente. Questa query di accodamento la devi eseguire ogni giorno lavorativo, ma una volta sola al giorno.
Devi accedere o registrarti per scrivere nel forum
36 risposte