Problema query

mercoledì 09 febbraio 2011 - 21.14
Tag Elenco Tags  Windows Vista  |  Access (.mdb)  |  Office 2003  |  Firefox

suzuki Profilo | Newbie

ciao ragazzi, ho un problema: in una query (access 2003) ho i seguenti campi: cognome, data, tempo: Somma(DateDiff("n";[inizio];[fine]))\60, minuti: Somma(DateDiff("n";[inizio];[fine])) Mod 60. questo per gestire le ore di presenza in studio. adesso ho aggiunto un campo che ho chiamato extra, per immettere le ore di straordinario. il campo in Tab ha un formato Ora breve 24h e maschera di imput 00.00;0;_
come faccio a visualizzare nella query il totale delle ore (o minuti) di straordinario cumulati nelle varie giornate lavorative? p.s. dimenticavo di dire che utilizzo solo una Tabella. spero di essere stato chiaro ciao e grazie in anticipo

boccia75 Profilo | Junior Member

Quante ore deve lavorare la persona?
Se deve lavorare 8 ore direi che una possibile soluzione è questa:

tempo_straordinario: (Somma(DateDiff("n";[inizio];[fine]))\60)-8
minuti_straordinario: Somma(DateDiff("n";[inizio];[fine])) Mod 60

Sempre ammettendo che l'orario sia continuato (altrimenti avresti due record uno per le timbrature del mattino ed una per quelle della sera ed allora occorrerebbe sottrarre 4 ore e non 8).

L'aggancio dei due campi (ora e minuti) poi lo puoi fare successivamente per ottenere un solo valore ore+minuti.

Con le informazioni che ho, mi sembra la soluzione migliore.
Ciao,
Luca

suzuki Profilo | Newbie

caro luca, grazie per la risposta, ti confesso che effettivamente quella tua è stata una delle tante soluzioni cui avevo pensato, ma essento ancora acerbo mi sono arreso subito;considera che quello che ho fatto è stato grazie a tanti esempi, help, forum qua e là e sono arrivato a un bel risultato. la tua soluzione per me è la più indicatam, ma c'è da dire che ci sono una serie di colleghi che hanno degli orari "strani": chi fa 4 ore, chi fa 3,5 ore, chi 8 suddivisi: 4,5 mattina e 3,5 pom. un altro viene 3 volte la settimana e fa 8,5 ore.un bel caos!!! vorrei uscirene fuori, ma sento che sarà un'impresa "titanica!"
se credi che la tua soluzione sia fattibile io inizio a lavorarci,ma se visto la situazione che ti ho spiegato non lo consente.......aiutami tu""
ciao e grazie suzuky

boccia75 Profilo | Junior Member

Occorre valutare bene il caso, pero' ti voglio chiedere una cosa:
Tu dici
"chi fa 4 ore, chi fa 3,5 ore, chi 8 suddivisi: 4,5 mattina e 3,5 pom. un altro viene 3 volte la settimana e fa 8,5 ore"
Cosa significa 8 suddivisi?
Se un dipendente che deve lavorare 8 ore suddivise, un giorno ne fa 8 di seguito, cosa succede?
E' una giornata lavorativa valida?
Ti chiedo questo perchè se fosse vero, potresti agire in questo modo:
crei una tabella secondaria strutturata in questo modo

Dipendente (il riferimento al dipendente)
Giorno (l'indicazione di ogni giorno settimanale nel quale il dipendente deve lavorare, es. lun, mar, mer ...)
ore (l'indicazione delle ore che deve lavorare)

A questo punto la query precedente dovrà testare, dato il dipendente, il giorno che si sta controllando (lun, mar, mer) e da questo otterrai il numero delle ore che il dipendente avrebbe dovuto lavorare.
Con questa ora fai i tuoi controlli e tutto cio' che è di piu' è straordinario.


Questa soluzione ti consente di gestire anche i dipendenti che hanno una settimana "breve" (infatti testi anche il giorno della settimana).

Spero di esserti stato di aiuto.
Ciao,
Luca

suzuki Profilo | Newbie

perdonami,ma non ho ben compreso! i ragazzi che fanno 8 ore vengono tutti i gg. dalle 08.30 alle 13.00 poi dalle 15.30 alle 1900( tranne il sab e la dom; quelli che fanno 3,5 ore dalle 15,30 alle 19.00 tutti giorni; un ragazzo viene lun-merc-ven dalle 08.00 alle 13.00 e 15.30 alle 19.00;
uno viene dalle 08.00 alle 13.00 tutti i gg; e per finire (tanto per rendere la cosa più complicata!) una ragazza viene tutti i gg dalle 08.00 alle 13.00 e mart-giov dalle 16.00 alle 19.00
che casino!! se ritieni che ti possa aiutare vstudiare il file io lo allego ciao e grazie ancora

boccia75 Profilo | Junior Member

Ed io ti rifaccio la domanda:
se un ragazzo che lavora dalle 08.00 alle 13.00 e 15.30 alle 19.00, un giorno lavora dalle 08.00 alle 16.30 (sono sempre 8,5 ore) la giornata puo' essere considerata valida?
Ciao!

suzuki Profilo | Newbie

penso di si, ma mi vorrei informare adesso vado a lavoro stasera ti darò risposta ciao

suzuki Profilo | Newbie

caro luca mi sono informato con il collega e purtroppo devo rispondere negativamente alla tua domanda,
perchè questi ragazzi non sono assunti a tempo indeterminato ma a partita iva, per cui c'è l'esigenza di seguire l'orario di ingresso e uscita così come stabilito con la direzione. non so se quest'ultima situazione complica ulteriormente il problema. ciao e grazie

boccia75 Profilo | Junior Member

Ok allora ti chiedo quello che avrei dovuto chiederti subito......mi dai tracciato record di questa tabella (inteso come TUTTI i campi e il loro significato).
E mi dai anche qualche record di inserimento (così vedo come sono alimentati quei campi), ok?
Da quello posso dirti come eventualmente procedere.
Ciao

suzuki Profilo | Newbie

ciao luca,nella tabella a parte l'id contatore ci sono 4 campi:cognome,data,inizio,fine; una queri che mi da la differenza tra l'ora di uscita e quella di entrata, un'altra queri che mi fa la somma delle ore di presenza ricavandola dalla prima, poi c'è un'altra queri che utilizzo per report. la maschera ha una casella combinata per scegliere il cognome, la data con inserimento automatico del giorno in corso,campo inserimento ora di inizio, campo inserimento ora fine, campo differenza che fa riferimento alla query differenza. comunque, ti do l'indirizzo dove scaricare il file, penso che avendolo davanti viene meglio comprendere la situazione, così sarò felice se anche gli altri amici, se gli serve, ne possono usufruire ciao e grazie

http://myfreefilehosting.com/f/b0360ca3e9_0.61MB

boccia75 Profilo | Junior Member

Oggi ho da fare, pero' lunedi' ci do' un'occhiata.
Ciao.

boccia75 Profilo | Junior Member

Ho visto la tua tabella e le domande sono aumentate ancora di piu'.
Ma se Rossi, che lavora dalle 8 alle 12 del lunedì (tra gli altri giorni), un lunedì lavorasse dalle 8 alle 14, queste 6 ore come andrebbero considerate?
4 ore buone e 2 di straordinario? Oppure 6 ore buone? Oppure 4 ore e 2 vanno perse perchè non ha fatto le 4 pomeridiane?
Queste sono cose che devi considerare a fondo (perchè da queste riesci a fare un lavoro fatto a modo....)
In generale, pero', continuo d pensare che occorre che ti appoggi ad un'altra tabella contenente:
ID lavoratore
Giorno
Ore mattino
Ore pomeriggio

e la potresti valorizzare in questo modo (poniamo che Bianchi lavora dal lunedì al venerdì, mentre Rossi solo lunedì, mercoledì e venerdì)
Bianchi Lunedì 4 4
Bianchi Martedì 4 4
Bianchi Mercoledì 4 4
Bianchi Giovedì 4 4
Bianchi Venerdì 4 4
Rossi Lunedì 4 4
Rossi Mercoledì 4 4
Rossi Venerdì 4 4

A questo punto occorre che trovi come identificare la timbratura dell'utente (è una timbratura del mattino oppure del pomeriggio?) e, tramite la tabella che ti ho indicato prima, vai a controllare quante ore ha fatto.

Di piu' non posso dirti, anche perchè occorre che tu faccia chiarezza sui vari modi di considerare una timbratura.

Prova a pensare qualche caso (uno te l'ho fatto io..) e poi ragiona bene come muoverti.

Ciao.




suzuki Profilo | Newbie

ciao luca, riguardo a rossi le 2 ore eccedenti sarebbero considerate starordinario, adesso vedo di creare una seconda tabella sperando di andare avanti nel costrutto del db. ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5