Campo data relativo a più ore di lavoro.

di il
11 risposte

Campo data relativo a più ore di lavoro.

Buongiorno a tutti, sono rimasto bloccato in un punto e non so come uscirne, stavolta cerco di essere estremamente chiaro.

Ho una tabella di nome tblRedazioneRapportoDiLavoro con i seguenti campi: IDRedazioneRapporto, Meteo, DataRapporto, RapportoRedattoDa.

Ho una seconda tabella tblRapportoDiLavoroDipendenti con i seguenti campi: IDRapportoDiLavoroDipendente, IDDipendente(questa è una casella combinata dove prendo i nominativi dalla tabella Dipendenti), OraEntrata, OraUscita, IDLavoro(questa è una casella combinata in cui prendo i nominativi dalla tabella Lavori), Note. 

Tra queste due tabelle non riesco a capire se ci deve essere un collegamento oppure no. Ecco cosa vorrei costruire, vi parlo direttamente della maschera, lo so che non si deve fare, ma si capisce meglio se vi dico come dovrebbe funzionare: faccio una maschera basata sulla tabella tblRedazioneRapportoDiLavoro e creo una sottomaschera basata sulla tabella tblRapportoDiLavoroDipendenti. Allora il tizio che usa la maschera dovrebbe inserire la data e compilare i campi relativi ai dipendenti. In questo modo la cosa è molto lineare. Quello che però dovrei fare è il computo delle ore di ciascuno dipendente. Come faccio a conservare il dato data e ore del singolo dipendente? 

Cioè supponiamo che io sia il tizio che usa la maschera: allora faccio il rapporto di lavoro del 1 luglio e dico: 

Operaio1 dalle 08.00 alle 12.00

Vorrei una query non so, non lo so cosa devo fare, che mi associasse poi la data alle ore (il computo delle ore lo so fare), il problema è come collegare la data (mi serve la data perché poi devo fare una ricerca per date). Alla fine questa query dovrebbe darmi Dipendente, data, e le ore (come ripeto le ore le so fare), sento che manca qualcosa, qualche collegamento, magari qualche relazione, ma non so cosa e dove. 

PS: Ho letto con estremo interesse l'aiuto che mi avete dato nel post precedente, e grazie a quello sono riscito a capire che ancora mancavano cose e ora sono arrivato a questo punto dove ahimé sono usciti altri problemi, ma vi assicuro che risolto questo ho terminato!

11 Risposte

  • Re: Campo data relativo a più ore di lavoro.

    Semplicemente non colleghi la data.

    Cioè supponiamo che io sia il tizio che usa la maschera: allora faccio il rapporto di lavoro del 1 luglio e dico: Operaio1 dalle 08.00 alle 12.00

    Hai due tabelle madre e figlia

    Madre “rapportodilavoro”

    Idrapporti, data, bla bla…

    Figlia “righerapportodilavoro”

    Idriga, idrapporti, idoperaio, orain, oraout, bla bla…

    Righeerapportodilavoro.Idrapporti=rapportodilavoro.idrapporti questa è una costante per le righerapportodilavoro.

    All'apertira della maschera:

    Utente e password>> riconosci l'operaio e apri la maschera aprendo l'id di oggi se esiste altrimenti lo inserisci;

    Inserisci la data di oggi

    Crei la riga idriga automatico+

    Inserisci l'idoperaio

    Inserisci orain. (adesso)

    Confermi e mandi il messaggio “ingresso registrato correttamente”

    Chiudi il form e avanti il prossimo.

  • Re: Campo data relativo a più ore di lavoro.

    01/07/2023 - sihsandrea ha scritto:


    Semplicemente non colleghi la data.

    Cioè supponiamo che io sia il tizio che usa la maschera: allora faccio il rapporto di lavoro del 1 luglio e dico: Operaio1 dalle 08.00 alle 12.00

    Hai due tabelle madre e figlia

    Madre “rapportodilavoro”

    Idrapporti, data, bla bla…

    Figlia “righerapportodilavoro”

    Idriga, idrapporti, idoperaio, orain, oraout, bla bla…

    Righeerapportodilavoro.Idrapporti=rapportodilavoro.idrapporti questa è una costante per le righerapportodilavoro.

    All'apertira della maschera:

    Utente e password>> riconosci l'operaio e apri la maschera aprendo l'id di oggi se esiste altrimenti lo inserisci;

    Inserisci la data di oggi

    Crei la riga idriga automatico+

    Inserisci l'idoperaio

    Inserisci orain. (adesso)

    Confermi e mandi il messaggio “ingresso registrato correttamente”

    Chiudi il form e avanti il prossimo.

    Ciao grazie per l'interessamento, ma te lo dico francamente non ho capito nulla! 

    Allora io quando faccio il rapporto di lavoro vorrei inserire solo una volta la data e poi inserire tutti gli operai. La data deve restare fissa e segno le ore ad ogni dipendente. Vi sarei grato se vi esprimeste più terra terra e con più dettagli perchè altrimenti invece di risolvere il problema mi complico solo la vita. E poi cortesemente non cambiate i nomi alle tabelle altrimenti si crea una confusione immane.

  • Re: Campo data relativo a più ore di lavoro.

    Dovresti leggere orizzontalmente non verricalmente.

    Ho scritto:

    Maschera con due pulsantini: registra ingresso e registra uscita.

    Nel caso di ingresso:

    Si aprono due edit: utente e password

    All'invio controlli:

    1)se già esiste il rapporto giornaliero:

    Apri la maschera figlia e inserisci l'operaio che conosci in quanto si è identificato con utente e password

    Inserisci l'id madre (Righeerapportodilavoro.Idrapporti=rapportodilavoro.idrapporti questa è una costante per le righerapportodilavoro)

    Inserisci l'orario

    Chiudi col messaggio “ingresso registrato con successo!”

    Timer di qualche secondo e chiudi il messaggio

    Ti riposizioni al form dei due pulsanti.

    Se ancora il rapporto giornaliero non esiste (il primo a timbrare la presenza)

    Orima delle operazioni sopra inserisci la madre

    Idrapporti, data, bla bla…

    Fatto questo esegui l'ingresso.

    Per l'uscita, ovviamente la madre esiste passi direttamente a registrare l'uscita.

    Una dritta: dopo utente e password puoi ereguire in automatico le operazioni di registrazione senza aprire ulteriori maschere e mandare il messaggio “registrazione effettuata bla bla…” e riposizionarti alla form dei pulsanti.

    Più chiaro?

  • Re: Campo data relativo a più ore di lavoro.

    01/07/2023 - sihsandrea ha scritto:


    Dovresti leggere orizzontalmente non verricalmente.

    Ho scritto:

    Maschera con due pulsantini: registra ingresso e registra uscita.

    Nel caso di ingresso:

    Si aprono due edit: utente e password

    All'invio controlli:

    1)se già esiste il rapporto giornaliero:

    Apri la maschera figlia e inserisci l'operaio che conosci in quanto si è identificato con utente e password

    Inserisci l'id madre (Righeerapportodilavoro.Idrapporti=rapportodilavoro.idrapporti questa è una costante per le righerapportodilavoro)

    Inserisci l'orario

    Chiudi col messaggio “ingresso registrato con successo!”

    Timer di qualche secondo e chiudi il messaggio

    Ti riposizioni al form dei due pulsanti.

    Se ancora il rapporto giornaliero non esiste (il primo a timbrare la presenza)

    Orima delle operazioni sopra inserisci la madre

    Idrapporti, data, bla bla…

    Fatto questo esegui l'ingresso.

    Per l'uscita, ovviamente la madre esiste passi direttamente a registrare l'uscita.

    Una dritta: dopo utente e password puoi ereguire in automatico le operazioni di registrazione senza aprire ulteriori maschere e mandare il messaggio “registrazione effettuata bla bla…” e riposizionarti alla form dei pulsanti.

    Più chiaro?

    Ma non deve funzionare così! Non devo registrare le presente! La cosa deve funzionare che il responsabile stila il rapporto, un solo rapporto a fine giornata e basta. Non c'è bisogno di nessuna autenticazione, deve essere tipo una fattura. Cosa vuol dire che è una costante?

    A fine giorata il responsabile segna semplicemente le ore. Segna la data, e mette i dipendenti e le ore che hanno lavorato chiude tutto e ciao. Il problema rimane sempre quello come faccio a collegare la data alle ore.

  • Re: Campo data relativo a più ore di lavoro.

    Più semplice.

    Carichi la madre se non esiste (intendo il giorno) e nel form dettaglio selezioni o cerchi l'operaio, inserisci le ore salva

    Poi nuovo e ripeti…

    Alla fine… chiudi.

    Non capisco la difficoltà…

  • Re: Campo data relativo a più ore di lavoro.

    01/07/2023 - Nat ha scritto:


    Ho una seconda tabella tblRapportoDiLavoroDipendenti con i seguenti campi: IDRapportoDiLavoroDipendente, IDDipendente(questa è una casella combinata dove prendo i nominativi dalla tabella Dipendenti), OraEntrata, OraUscita, IDLavoro(questa è una casella combinata in cui prendo i nominativi dalla tabella Lavori),

    Ma nella Tabella Lavori non hai la data del lavoro che ha effettuato quel dipendente con quelle ore?

    Secondo me, per come ho capito, devi avere la DATA di [OraEntrata  OraUscita] dell'intervento di quel dipendente.

    Dimmi se sbaglio… 


    Edit: secondo me per capire meglio occorrerebbe vedere le relazioni esistenti tra queste tabelle che hai citato.

  • Re: Campo data relativo a più ore di lavoro.

    Santa pazienza!

    Cosa vuol dire che è una costante?

    Che quel campo sarà sempre uguale all'id della madre ( tblRedazioneRapportoDiLavoro)

    Nel tuo caso:

    IDRedazioneRapporto supponiamo sia 1

    Avrai nella figlia (tblRapportoDiLavoroDipendenti)

    I seguenti dati:

    IDRapportoDiLavoroDipendente, IDRedazioneRapporto (questo campo ti manca, devi inserirlo e deve essere UGUALE all'id della tabella madre come FK), IDDipendente(questa è una casella combinata dove prendo i nominativi dalla tabella Dipendenti), OraEntrata, OraUscita, IDLavoro(questa è una casella combinata in cui prendo i nominativi dalla tabella Lavori), Note. 

    Il problema rimane sempre quello come faccio a collegare la data alle ore.

    Si collegano se PK = FK sia come struttura (tipo, lunghezza e nel tuo caso anche nome)

    TRADOTTO: se l'id della madre è uguale al campo che ti manca nella figlia che avrà per tutte le righe di quel giorno lo stesso valore dell'id madre.

    Ovviamente, quando vorrai vedere:

    Id     data            blabla… (madre)

    1 01/01/2023.     Bla bla bla…

    Vefrai nella tabella figlia:

    Id.  Id (FK)  Operaio.   Orelavoro.   Mansione(o come lo chiami)

    1.      1.        Pippo.          10.                 Lavoro

    2.      1.        Topolino.      5.                  Altro lavoro

    3.      1.        Paperino.     7.                 Disoccupato ;)

    Ovviamente la figlia la indicizzi per la FK

    Come puoi notare ld(FK) è sempre 1 una costante perche significa che fa vedere i dati della madre con id = 1

    Ergo, quando inserisci i record nella figlia:

    L'id è automatico (presumo)

    L'id FK è sempre uguale all'id(PK)

    L'operaio lo prendi dal collegamento (che poi segue lo stesso criterio madre/figlia)

    L'orario lo inserisci tu

    La data è sempre quella della madre non serve inserire la data pure nella figlia)

    Lavoro lo prendi dalla combo come hai fatto per l'operaio 

    Fine!

    Se il manuale dei db fosse la bibbia, l'introduzione alle relazioni inizierebbe così: in principio era il nulla… dal libro della genesi.

  • Re: Campo data relativo a più ore di lavoro.

    01/07/2023 - By65Franco ha scritto:


    01/07/2023 - Nat ha scritto:


    Ho una seconda tabella tblRapportoDiLavoroDipendenti con i seguenti campi: IDRapportoDiLavoroDipendente, IDDipendente(questa è una casella combinata dove prendo i nominativi dalla tabella Dipendenti), OraEntrata, OraUscita, IDLavoro(questa è una casella combinata in cui prendo i nominativi dalla tabella Lavori),

    Ma nella Tabella Lavori non hai la data del lavoro che ha effettuato quel dipendente con quelle ore?

    Secondo me, per come ho capito, devi avere la DATA di [OraEntrata  OraUscita] dell'intervento di quel dipendente.

    Dimmi se sbaglio… 


    Edit: secondo me per capire meglio occorrerebbe vedere le relazioni esistenti tra queste tabelle che hai citato.

    Dando per buona la logica di programmazione, presumo che lavori contenga una lista di mansioni tipo, impiegato, ufficio acquisti, autista, ecc… altrimenti non avrebbe senso attingere da una tabella.

    Edit: secondo me per capire meglio occorrerebbe vedere le relazioni esistenti tra queste tabelle che hai citato

    Si, infatti mancava un campo, mi ha ipnotizzato la lunghezza dei nomi con lo stesso prefisso e suffisso… :-))

    Ecco perché ha relazioni con operai e lavori ma non trova quella tra tblRapportoDiLavoroDipendenti (che io avrei chiamato masterrapportino) e tblRedazioneRapportoDiLavoro (che avrei chiamato detailrapportino).

  • Re: Campo data relativo a più ore di lavoro.

    01/07/2023 - Nat ha scritto:


    Ho una tabella di nome tblRedazioneRapportoDiLavoro con i seguenti campi: IDRedazioneRapporto, Meteo, DataRapporto, RapportoRedattoDa.

    Ho una seconda tabella tblRapportoDiLavoroDipendenti con i seguenti campi: IDRapportoDiLavoroDipendente, IDDipendente(questa è una casella combinata dove prendo i nominativi dalla tabella Dipendenti), OraEntrata, OraUscita, IDLavoro(questa è una casella combinata in cui prendo i nominativi dalla tabella Lavori), Note. 

    Tra queste due tabelle non riesco a capire se ci deve essere un collegamento oppure no.

    La tabella tblRapportoDiLavoroDipendenti deve avere un campo numerico IDRedazioneRapporto (FK). Quindi la relazione
    tblRedazioneRapportoDiLavoro.IDRedazioneRapporto uno-a-molti tblRapportoDiLavoroDipendenti.IDRedazioneRapporto.

    Consiglio di dare nomi alle tabelle sempre al PLURALE e con nomi “concisi/corti/logici/snelli”.

  • Re: Campo data relativo a più ore di lavoro.

    https://www.iprogrammatori.it/forum-programmazione/access/idea-su-come-costruire-un-report-t52061.html#p8706159

    È sempre riferito a questo?

    Cioè prima un aiuto per il report poi quello che serve per realizzarlo?

    Vabbè dai, di quelle relazioni di cui sopra fai la query e ti porti dietro solo la data dalla tabella madre… e fai un report tabellare filtrato per la data che ti serve stampare.

    Al prossimo post “query rapporto di lavoro per stampa”

    Scherzo! 

  • Re: Campo data relativo a più ore di lavoro.

    01/07/2023 - sihsandrea ha scritto:


    Al prossimo post “query rapporto di lavoro per stampa”

    Scherzo! 

    E poi l'impaginazione, salto pagina e il numero di copie ;-))

    (scherzooooo)

Devi accedere o registrarti per scrivere nel forum
11 risposte