Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Access 2000 & VBA] Funzione calcolo ora in centesimi

    codice:
    Private Sub ora_fine_AfterUpdate()
    
    'Calcolo delle Ore in Centesimi
    
    Dim Tot_Time As Date
    
    Tot_Time = (ora_fine) - (ora_inizio)
    
    h = Hour(Tot_Time)
    m = Minute(Tot_Time)
    
    Dim mx As Integer
    
    mx = (m * 5) / 3
        
    TEMPO_IMPIEGATO = h & "," & mx
    
    End Sub
    Ho fatto questa funzione per la conversione di una differenza di orari in centesimi... il problema è che se la differenza di minuti è inferiore o uguale a 5 primi (es: 1h e 04) questo balordo mi restituisce un risultato sbagliato (prendendo l'esempio di prima mi diche 1h e 05 è sarebbe 1,80).
    Come posso fare???
    Grazie mille
    Desperado
    ...io non sono il Sig. Lebowski. Lei è il Sig. Lebowski. Io sono Drugo. E' così che deve chiamarmi, capito? O se preferisce Drughetto,...oppure Drugantibus...o Drughino se è di quelli che mettono il diminutivo a ogni costo...

  2. #2
    Forse era meglio se lo postavo di la nel sotto forum... chi mi sposta???
    Desperado
    ...io non sono il Sig. Lebowski. Lei è il Sig. Lebowski. Io sono Drugo. E' così che deve chiamarmi, capito? O se preferisce Drughetto,...oppure Drugantibus...o Drughino se è di quelli che mettono il diminutivo a ogni costo...

  3. #3

    Problema (quasi) risolto...

    codice:
    Private Sub ora_fine_AfterUpdate()
    
    'Calcolo delle Ore in Centesimi
    
    Dim Tot_Time As Date
    
    Tot_Time = (ora_fine) - (ora_inizio)
    
    h = Hour(Tot_Time)
    
    If Minute(Tot_Time) <= 5 Then
        m = 0 & "," & Minute(Tot_Time)
    Else
        m = Minute(Tot_Time)
    End If
    
    Dim mx As Integer
    
    mx = (m * 5) / 3
        
    TEMPO_IMPIEGATO = h & "," & mx
    
    End Sub
    Non è proprio il massimo, ma almeno funziona decentemente... unico problema (che però non mi tange più di tanto) è quello che arrotonda i risultati nel range che va da 1 minuto a 5, arrotondandoli a seconda dei casi, cosa che non fa, ad esempio, con 13 minuti... poco male... se comunque avete delle soluzioni più "eleganti" da propormi sono molto ben accette...
    Desperado
    ...io non sono il Sig. Lebowski. Lei è il Sig. Lebowski. Io sono Drugo. E' così che deve chiamarmi, capito? O se preferisce Drughetto,...oppure Drugantibus...o Drughino se è di quelli che mettono il diminutivo a ogni costo...

  4. #4
    codice:
    Private Sub ora_fine_AfterUpdate()
    
    'Calcolo delle Ore in Centesimi
    
    Dim Tot_Time As Date
    Tot_Time = (ora_fine) - (ora_inizio)
    h = Hour(Tot_Time)
    m = Minute(Tot_Time)
    Dim mx As Integer
    mx = (m * 5) / 3
    
    If mx =< 9 Then
        TEMPO_IMPIEGATO = h & ",0" & mx
    else
        TEMPO_IMPIEGATO = h & "," & mx
    End if
    
    End Sub
    Eventualmente questa è un'altra soluzione, che tra l'altro evita gli arrotondamenti... :metallica
    Eventualmente
    Desperado
    ...io non sono il Sig. Lebowski. Lei è il Sig. Lebowski. Io sono Drugo. E' così che deve chiamarmi, capito? O se preferisce Drughetto,...oppure Drugantibus...o Drughino se è di quelli che mettono il diminutivo a ogni costo...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.