Newsgroup: it.comp.appl.access
Titolo: Calcolo delle ore

Ho visto con grande meraviglia la grande e generosa attivita di
richieste e consigli su questo newsgroup. Ho deciso per questo porre
alla vostra attenzione la mia incapacità a risolvere un problema in
access xp nel calcolo delle ore.
Premettendo di essere totalmente ignorante di VB e quindi di VBA vi
chiedo di aiutarmi ....
In pratica dovrei sommare le ore di entrata e di uscita per avere le
ore lavorative
Fino ad ora ho provato così:
IdOperatore: Testo
EntLu: Testo
UscLu: Testo
EntMa: T......
.......... Fino a Domenica
Nella query creao la formula:
Ore Lunedì:
(*)Somma(IIf([EntLu]>[UscLu];("24.00"-[EntLu])+[UscLu];[UscLu]-[EntLu]))
Nel formato aggiungo: @@.@@
Così per Ore Martedì fino a Ore Domenica
Fin qui tutto funziona!
Il problema nasce quando inserisco i minuti
Perchè se in ent inserisco 12.30 e in uscito inserisco 18.00 non
ottengo 5.30 ma bensì 5.70
Se inserisco 12.00 e 18.30 avrò invece 6.30
P.s.
Per scrivere *queta "Semplicissima" stringa ho dovuto studiare access
per quasi 3 giorni pieni
quindi se è necessario inserire del codice vba potreste cortesemente
spiegrVi come fareste con un bambino di 5 anni. Grazie di cuore
anticipatamente!!

 ha scritto nel messaggio
news:1161278728.7...@i42g2000cwa.googlegroups.com...







Fin qui tutto funziona!


(sic)  "queta" ...  anche con l'ortografia non ci siamo. e poi che ti frega
tanto magari access te lo studii ... per tutta la vita ... cosa vuoi che
siano tre giorni?!?!? ;-)
quindi se è necessario inserire del codice vba potreste cortesemente
spiegrVi come fareste con un bambino di 5 anni. Grazie di cuore
anticipatamente!!
Qui stiamo parlando di Query ... il codice vba può anche non servire.
Allora non vorrei farti arrabbiare, ma intanto mi domando ... perchè devi
verificare che l'entrata di uscita in fase di raggruppamento della query?
Tale verifica non avviene già in fase di inserimento dati?
hmhm ... forse non ho capito cosa chiedi ma per fare differenze tra ore e
andare oltre alle 24.00
sarebbe cosa opportuna convertire facendo: Tot: ([ora_fine]-[ora_inizio])*24
in questo modo dovresti convertire in centesimi, e nella query di
raggruppamento sommi Tot cosi ottieni il totale delle ore.
Il 5.70 che ottieni tu è ovviamente un dato poco attendibile ... se non
ricordo male dovrebbero essere 6 ore e dieci minuti.

 ricordo male dovrebbero essere 6 ore e dieci minuti.
La somma o la differenza delle ore non supera mai o quasi mai le 24 ore
Es.
- Se io monto alle 20.00 e smonto alle 09.00 del giorno successivo
(essendo l'entrata maggiore dell'uscita) con quella stringa scritta
sopra farò cosi ((24 - 20)+09) = 13 ore effettuate
- Se io monto alle 12.00 e smonto alle 20.00 farò (20-12) = 8 ore
Ora se io porto tutto in centesimi ...i campi come devo formattarli,
come testo o data/ora, e quindi ora breve?

 ricordo male dovrebbero essere 6 ore e dieci minuti.
La somma o la differenza delle ore non supera mai o quasi mai le 24 ore
Es.
- Se io monto alle 20.00 e smonto alle 09.00 del giorno successivo
(essendo l'entrata maggiore dell'uscita) con quella stringa scritta
sopra farò cosi ((24 - 20)+09) = 13 ore effettuate
non mi è chiaro qui! perchè devi togliere ore dalle ventiquattrore e poi
aggiungere ore ?
Vien tutto con un'operazione.
L'unico inconveniente nei turni,  notturni che vanno alla data successiva.
Puoi ovviare memorizzando nel campo sia la data e ora (p.e. con now()) e
facendo la differenza in minuti o ore tramite la funzione datediff. (vedi la
guida per la sintassi)
Capisco la tua intenzione, ma cosi intuitivamente mi sembra un po'
arzigogolata ... Attendiamo comunque dritte dai luminari. Hai visto su
google gruppi se c'è stata qualche discussione in tal senso?
- Se io monto alle 12.00 e smonto alle 20.00 farò (20-12) = 8 ore
appunto se ora inizio = 12.00 e ora uscita ore 20.00 bib
Ora se io porto tutto in centesimi ...i campi come devo formattarli,
come testo o data/ora, e quindi ora breve?
Un conto è il tipo di dati (data/ora) un altro la formattazione che può
essere come più ti aggrada conta cosa memorizzi in tabella. Testo mi sembra
poco utile.
Ora breve, ora estesa va bene.
Trasformata in centesimi è utile per raggruppamenti settimanali o mensili
che se espressi in ore, converrai, oltrepassano le 24.

 che se espressi in ore, converrai, oltrepassano le 24.
Considerando che devo stampare i turni e che questi rimangono agli atti
ufficiali non posso avere il tempo in centesi Es 12.50 (per indicare
12.30 di ore effettuate) Si creerebbe molta confusione oltre che non
potrei proprio presentarli in questo modo
Cmq anche se fino ad ora non l'ho fatto vorrei ringraziarti per
l'attenzione che mi stai dedicando!

 Grazie di cuoreanticipatamente!!

"Roberto dal portatile ha scritto:

Grazie Roberto!
Ho visto che hai dato ad altri questo consiglio. Ma cosa devo fare
esattamente? dove devo scrivere questa stringa:
OrarioHHHmm = Int(Orario) * 24 + Hour(Orario) & ":" &
Format(Minute(Orario), "00")

Ok! Che "Bestia" !
Ho fatto un'altra query. Ho dovuto impostare come dicevi tu La tabella
in ora breve 24h.
Con rispetto parlando, ti bacerei! Grazie!

 ha scritto nel messaggio
news:1161355766.0...@h48g2000cwc.googlegroups.com...

bene .... vedo che hai risolto e hai pure trovato l'amore ...
vedi che access fa miracoli!
Mi raccomando di trattarci bene roberto però !!!
;-)

ciroteo (nospam) ha scritto:

Potete stare più che tranquilli perchè sono felicemente fidanzato con
quella che per me è la più bella ragazza (sia dentro sia fuori) che
abbia mai conosciuto! Niente in contrario con gli omosessuali, ho degli
amici così, ma a Cesare ciò che è di Cesare!
Avrei ancora una richiesta.....
dovendo impostare il valore predefino su 0 nelle ore entrata e uscita,
perchè altrimenti non posso poi sommarli per ottenere le ore
settimanali, nel report mi trovo anche questi valori cioè "0.00".
La domanda è si possono omettere nella stampa del report tali valori e
se si come?
Infinitamente grato Sandro

 ;-)
Potete stare piů che tranquilli perchč sono felicemente fidanzato con
quella che per me č la piů bella ragazza (sia dentro sia fuori) che
abbia mai conosciuto! Niente in contrario con gli omosessuali, ho degli
amici cosě, ma a Cesare ciň che č di Cesare!
... beh dai non dicevo sul serio!
io sono per il detto: chi trova un amico ha una sorella carina ... la tua
fidanzata non ha sorelle altrettanto valide ?
;-)
Avrei ancora una richiesta.....
dovendo impostare il valore predefino su 0 nelle ore entrata e uscita,
perchč altrimenti non posso poi sommarli per ottenere le ore
settimanali, nel report mi trovo anche questi valori cioč "0.00".
attento se utilizzi il formato ora 0.00 non corrisponde a 0  ma alla
mezzanotte, giusto? E quindi rischi di sbagliare i conteggi.
Allora dovresti poter utilizzare un campo nullo, che perň magari di fa un
po' di casino in fase di raggruppamento / somma.
In tal caso ti potrebbe venire  aiuto la funzione nz (null is zero) che
converte in zero eventuali campi vuoti o nulli.
Vedi tu se fa al caso tuo.
La domanda č si possono omettere nella stampa del report tali valori e
se si come?
non capisco bene cmq. ... li vuoi mettere o omettere?
Infinitamente grato Sandro

 non capisco bene cmq. ... li vuoi mettere o omettere?
    Considerando che avevo messo come valore predefinito 0 ai campi
data/ora per ottenere nella query 0.00, altrimenti questa non mi
restituisce la ne il parziale ne quindi somma delle ore settimanali,
visto che i turni che inserisco non sono giornalieri. Es. posso fare un
turno Lun e l'altro Ven e un'altro ancora Dom.
    volevo fare in modo che nel report tali 0.00 (valori predefiniti)
non venissero visualizzati. Se però con una funzione si può aggirare
il problema che mi provoca la formula sopra indicata il problema non
sussiste perchè non mettendo quel valore predefinito in stampa non me
lo ritrovo.
Approfitto per notare con molta soddisfazione la puntualità e la
qualità delle vostre risposte. Quello che fate è lodevole.
Complimenti!

 Complimenti!
figurati, sappi che in passato siamo stati nella tua posizione ( beh io
di sicuro ... roberto forse no, lui è nato già imparato ...)

ciroteo ha scritto:

è vero sarebbe stata la soluzine più efficente. Potevo arrivarci
anch'io e mi sarei risparmiato di invece di usare un sistema molto più
complicato
: IIf((Int([Mlu])*24+Hour([Mlu]) & "." &
Format(Minute([Mlu]);"00"))=0;"  ";(Int([Mlu])*24+Hour([Mlu]) & "." &
Format(Minute([Mlu]);"00")))