Newsgroup: it.comp.appl.access
Titolo: arrotondamento ora

Salve, con i vostri suggerimenti  ho risolto molti problemi, ora non
riesco a risolverne uno importantissimo. Per esigenze ho dovuto
calcolare le ore lavorative straordinarie in minuti, con una query
riesco a sommare e a  convertire in ore, fin qui tutto bene, le
necessità impongono che le ore debbano essere  ore intere  arrotondate
per difetto o per eccesso ai 30 minuti. tutti gli esempi che ho
trovato sono utili per un campo Data/ora e non per un campo che già
converte i minuti in ora, non riesco assolutamente a venirne a capo,
chi mi può dare una mano.
grazie Antony.

 grazie Antony.
 
fai qualche esempio con i dati che hai e il risultato che vuoi ottenere
 
 
-- 
------------
Pablitomf
Napoli sempre nel "Q"uore!
"mammasantissima" si nasce, non si diventa.
 
TheSpaceCowboy : 
Britos deve recuperare per arrivare in forma al prossimo
infortunio - 24/10/12
 

 infortunio - 24/10/12
 
Salve, in pratica tutto bene fino a quando, con una query raggruppo e
sommo tutti i minuti lavorati da ogni singolo dipendente,  in una
maschera, con una casella di testo (TotaleOrePerDipendente)
origine di controllo - inserisco  =([CampoMinuti])\60 & "." &
[CampoMinuti] Mod 60     -ogni singolo dipendente ha un orario
espresso in hhmm es. 7.30, 12.50 ecc.
domanda: è possibile inserire nella stessa maschera un'altra casella
di testo, dove ogni singolo orario venga arrotondato  da 0 a 30 minuti
per difetto e da 31 a 59 minuti per eccesso
7.30 = 7    12.50 = 13    devo avere visione delle due caselle di
testo per un raffronto di oreminuti  realmente svolto e ore
arrotondate.
Si potra fare?
Grazie
Antony
 

> Si potra fare?
 
ovvio che si...
 
Function min_hour_Normali(minu)
    ORE1 = Int(minu / 60)
    minu = minu Mod 60
    min_hour_Normali = Format(CDate(ORE1 & ":" & minu), "hh:mm")
End Function
 
Function min_hour_Arrotondati(minu)
    ORE1 = Int(minu / 60)
    minu = minu Mod 60
 
    If minu < 31 Then
        minu = 0
    Else
        minu = 0
        ORE1 = ORE1 + 1
    End If
 
    min_hour_Arrotondati = Format(CDate(ORE1 & ":" & minu), "hh:mm")
End Function



Sono poco esperto, devo copiare questa Function in un modulo, cosa
devo inserire sulla casella di testo delle ore arrotondate.
Grazie

 devo inserire sulla casella di testo delle ore arrotondate.
 
devi mettere 
=min_hour_Arrotondati(NomeDelTuoCampoMinutiNellaForm)



Perfetto, funsiona bene, ma solo per la somma  dei minuti di ogni
singolo 
dipendente.se
,  invese  addiziono tutti i minuti di tutti i
dipendenti non riesco ad applicare la Function. Mi spiego meglio.Con
con una query sommo tutti i minuti  applico su la casella di testo >
=min_hour_Arrotondati([nomeCampo]<)
 la Function di restituisce >errore<   praticamente devo evidenziare
la differenza   totale ore svolte    con totale ore arrotondare. Dove
sbaglio?
Grazie
Antony

 Antony
 
La funzione e` limitata al numero di minuti 1.439, che sono le 23.59. Per
superare questo limite imposto dalla funzione Cdate() che converte un testo
in un'ora, bisogna convertire i minuti non piu` come ora vera e propria, ma
come testo. Per farlo, basta eliminare la funzione Cdate() dal valore di
ritorno della funzione.
 
per cui, queste le modifiche da effettuare al codice:
 
Private Sub Minuti_AfterUpdate()
 Me.Ore = min_hour(Me.Minuti)
 Me.OreRound = min_hourRound(Me.Minuti)
End Sub
 
Function min_hour(minu)
    ORE1 = Int(minu / 60)
    minu = Format(minu Mod 60, "00")
    min_hour = Format(ORE1 & ":" & minu, "hh:mm")
End Function
 
Function min_hourRound(minu)
    ORE1 = Int(minu / 60)
    minu = Format(minu Mod 60, "00")
 
    If minu < 31 Then
        minu = "00"
    Else
        minu = "00"
        ORE1 = ORE1 + 1
    End If
 
    min_hourRound = Format(ORE1 & ":" & minu, "hh:mm")
End Function
 
