Newsgroup: it.comp.appl.access
Titolo: somma ore con campi null

salve,qualcuno mi aiuterebbe a capire dove sbaglio.
ho questa funzione:
Function TiempoTotal1(intervalo As Variant) As String
Dim horas As Long, minutos As Long, segundos As Long
 
  horas = Int(CDbl(Nz(intervalo * 24)))
  minutos = (Int(CDbl(Nz(intervalo * 1440)))) Mod 60
  segundos = (Int(CDbl(Nz(intervalo * 86400)))) Mod 60
 
   TiempoTotal1 = Format(horas, "00") & ":" _
      & Format(minutos, "00") & ":" _
      & Format(segundos, "00")
 
End Function
 
ma non calcola i campi null or ""
Grazie
D.M 
 
 
 

Se il tuo problema sono solo i valori Null e ""
 
allora prendiamo per buona tutta la funzione 
( che non ho guardato nel complesso )
 
prova a modificarla cosi:
 
- Prendi subito la tua variabile "intervalo"  e se
contiene Null oppure ""  la trasformi in 0
 
- a questo punto puoi eliminare tutti i Nz che hai usato
 
 
[code]
 
Function TiempoTotal1(intervalo As Variant) As String 
Dim horas As Long, minutos As Long, segundos As Long 
 
' cambio i Null e ""  in 0
intervalo = IIf(Nz(intervalo, "") = "", 0, intervalo)
 
' elimino tutti i Nz
  horas = Int(CDbl(intervalo * 24)) 
  minutos = (Int(CDbl(intervalo * 1440))) Mod 60 
  segundos = (Int(CDbl(intervalo * 86400))) Mod 60 
 
   TiempoTotal1 = Format(horas, "00") & ":" _ 
      & Format(minutos, "00") & ":" _ 
      & Format(segundos, "00") 
 
End Function 
 
[/code]
 
 
Ripeto non sono entrato nel dettaglio della funzione,
pero mi vengono spontanee 2 domande/osservazioni
 
Perche "minutos" e "segundos" li definisci Long ??
questi valori non possono essere superiori a 60
 
le eventuali frazioni di secondo le tronchi
quindi se sarebbero 14.99 secondi  diventano 14
perche invece non arrotondi a 15 ??
Ti basterebbe eliminare l'ultimo "Int"
 
 
Facci sapere
 
.

 ha scritto nel messaggio 
news:a5ee691c-0c24-4b74...@googlegroups.com...


> Grazie per la risposta immediata non funziona intervallo dovrebbe calcolare 3 campi, questi campi quanto sono popolati li calcola invece se qualcuno è vuoto o null mi da calcolo 0 
 
Non va bene se restituisce 0 ???
Allora vuoi che restituisca vuoto  ( Che è piu corretto )
 
Prova cosi:
[code]
 
Function TiempoTotal1(intervalo As Variant) As String
Dim horas As Long, minutos As Long, segundos As Long
 
' Se "intervalo" = Null oppure ""  la funzione restituisce ""
    If (Nz(intervalo, "") = "") Then
        TiempoTotal1 = ""
        Exit Function
    End If
 
' elimino tutti i Nz
horas = Int(CDbl(intervalo * 24))
minutos = (Int(CDbl(intervalo * 1440))) Mod 60
segundos = (Int(CDbl(intervalo * 86400))) Mod 60
 
TiempoTotal1 = Format(horas, "00") & ":" _
    & Format(minutos, "00") & ":" _
    & Format(segundos, "00")
 
End Function
 
[/code]
 
Facci sapere

 ha scritto nel messaggio 
news:0d4a5500-b4b9-421a...@googlegroups.com...


 calcolo.
 
No,   c'è ancora qualcosa che non si capisce !!!
 
Tu parli di 2 campi popolati e uno Non
 
Ma in effetti io vedo solamente un campo ("intervalo") che arriva 
dall'esterno della tua funzione. 
( e solo quello potrebbe essere popolato o no )
 
Poi vedo 3 variabili ("horas" "minutos" "segundos") 
ma queste non hanno il problema di essere popolate o non 
proprio perche sono delle variabili calcolate
 
Spiegaci meglio il contesto
 
.