Newsgroup: it.comp.appl.access
Titolo: Non risolto, riposto ....


Ringrazio per le risposte che ho avuto ... ma il problema non l'ho risolto
.... come consigliato ho preso lo script dal sitocomune .... ma non capisco
come potrei utilizzarlo, visto che la somma avviene dai dati di una tabella
e vengono considerati i campi del singolo dipendente. Aiutooooooooo !!!!
Grazie
Rynko

 ha scritto nel messaggio
news:bpZr7.41361$P04.3...@news2.tin.it...

Calma e gesso.
Innanzi tutto devi spiegare meglio com'è la struttura delle tabelle e della
maschera.
Se vuoi una risposta decente, devi darci il materiale su cui riflettere (noi
non abbiamo visto come hai impostato il tuo DB).
La funzione presente sul Sito Comune l'ho postata io e funziona così:
- devi inserire la funzione SommaOrari in un modulo, che chiamerai in modo
differente;
- da VBA o in origine controllo della maschera o in un campo calcolato di
una query puoi richiamare la funzione, passando 2 parametri, che sono 2
orari da sommare, ed ottenendo in risposta un testo.
In proposito, sono andato a rivisitare detta funzione e mi sono accorto di
un errore.
Posto la versione corretta:
Public Function SommaOrari(Orario1, Orario2) As String
    ' Restituisce una stringa contenente la somma di Orario1 e Orario2
    ' Può essere facilmente riconvertita in formato data con DateValue
    Dim ora1, ora2, min1, min2, s_min, sec1, sec2, s_sec
    Dim o, m, s
    ora1 = Hour(Orario1): ora2 = Hour(Orario2)         ' Separo ore
    min1 = Minute(Orario1): min2 = Minute(Orario2)     '        minuti
    sec1 = Second(Orario1): sec2 = Second(Orario2)     '        secondi
    ' Calcolo il riporto per i secondi e per i minuti
    s_sec = (sec1 + sec2) \ 60                         ' =1 se sec1 + sec2 >
59 altrimenti =0
    s_min = (min1 + min2 + s_sec) \ 60                 ' =1 se min1 + min2 >
59 altrimenti =0
    o = ora1 + ora2 + s_min: If o < 10 Then o = "0" & o
    m = (min1 + min2 + s_sec) Mod 60: If m < 10 Then m = "0" & m
    s = (sec1 + sec2) Mod 60: If s < 10 Then s = "0" & s
    SommaOrari = o & ":" & m & ":" & s
End Function
Inoltre questa funzione non può richiamare se stessa come operando, non
potendo mischiare date con testo.
Ho approntato una nuova funzione che risolve detto limite.
Public Function SommaOrariNew(Orario1, Orario2) As String
  ' Orario1 e Orario2 possono essere in formato testo
  ' restituisce una stringa con la somma superando le 24 ore
  Dim ora1 As String, ora2 As String, min1 As String, min2 As String, s_min,
sec1 As String, sec2 As String, s_sec
  Dim o, m, s
  ora1 = Mid(Orario1, 1, 2): ora2 = Mid(Orario2, 1, 2)
  min1 = Mid(Orario1, 4, 2): min2 = Mid(Orario2, 4, 2)
  sec1 = Mid(Orario1, 7, 2): sec2 = Mid(Orario2, 7, 2)
  ' Calcolo il riporto per i secondi e per i minuti
  s_sec = (Val(sec1) + Val(sec2)) \ 60                         ' =1 se sec1
+ sec2 > 59 altrimenti =0
  s_min = (Val(min1) + Val(min2) + s_sec) \ 60                 ' =1 se min1
+ min2 > 59 altrimenti =0
  o = Val(ora1) + Val(ora2) + s_min: If o < 10 Then o = "0" & o
  m = (Val(min1) + Val(min2) + s_sec) Mod 60: If m < 10 Then m = "0" & m
  s = (Val(sec1) + Val(sec2)) Mod 60: If s < 10 Then s = "0" & s
  SommaOrariNew = o & ":" & m & ":" & s
End Function
Vedi se queste precisazioni ti possono essere utili.
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com



Ti ringrazio per la precisazione, ma praticamente ti spiego in breve.
Devo gestire dei tempi di volo per il conteggio delle ore dei piloti, quindi
io inserisco il volo con ora di decollo e di atterraggio, faccio la
sottrazione ed ottengo il tempo di volo, e fin qui tutto ok perche' restiamo
dentro le 24 ore. Tutti i voli sono inseriti in una tabella. Ora io devo
sommare le ore di volo per singolo pilota, quindi sommo le ore dei record
del pilota xx, ma qui cade l'errore ... le somma ma arrivato a 24 si azzera
.... PANICO !!! possibile che non si possa impostare un campo tempo 
HHH.MM
??? aiutami se puoi ... grazie.
Rynko.
P.S. scusa per la mail ma avevo sbagliato pulsante di re:

 P.S. scusa per la mail ma avevo sbagliato pulsante di re:
Di niente.
