Moi
Olisi saatava vähän apua kun en saa DateDiff:llä toimimaan kellon aikojen vertailua, eli haen alku kelloaika ja loppu kelloaika eron esim. minutteina
VB6:ssa DateDiff toimi mutta tässä uudessa (minulle) 2010 versiossa ei vaan toimi
minkähänlainen koodi pitäisi kirjoittaa
VB6 oli tämä
    Private Sub laske_tyoaika()
        Dim aikaero1 As Single
        Dim ero As Long
        Dim aikaero As Long
        Dim aikaero3 As Single
        Dim aikaero2 As Single
        If MTX_lopetusaika.Text <> "__:__" Then
            ero = DateDiff("n", Val(MTX_aloitusaika.Text), Val(MTX_lopetusaika.Text))  ' aikaero minuutteina
            If ero <= 60 Then    ' jos 1 tunti tai alle tunti
                TX_tilaus10.Text = Format(Val(TX_tilaus10.Text) + ero / 60, "0.00")
                Exit Sub
            Else
                aikaero1 = ero Mod 60  ' jakojäännös täysistä tunneista minuutteina
                aikaero2 = aikaero1 / 60
                aikaero3 = Int(ero / 60)  ' täydet tunnit
                aikaero = aikaero3 + aikaero2  ' täydet tunnit plus osatunti
                TX_tilaus10.Text = Format(Val(TX_tilaus10.Text) + aikaero, "##0.00")
            End If
        End If
        Exit Sub
out:    MsgBox("Tarkista työajat")
        MTX_aloitusaika.SetFocus()
    End Suberkki
Mod. lisäsi kooditagit!
Jotenkin purkan näköinen, mutta jos säästän purkat niin:
    Private Sub laske_tyoaika()
        Dim aikaero1 As Single
        Dim ero As Long
        Dim aikaero As Long
        Dim aikaero3 As Single
        Dim aikaero2 As Single
        If MTX_Lopetusaika.Text <> "__:__" Then
            Dim aikaEr = DateTime.ParseExact(MTX_Lopetusaika.Text, "HH:mm", System.Globalization.CultureInfo.InvariantCulture) - _
                      DateTime.ParseExact(MTX_Aloitusaika.Text, "HH:mm", System.Globalization.CultureInfo.InvariantCulture)
            ero = CLng(aikaEr.TotalMinutes) ' aikaero minuutteina
            If ero <= 60 Then    ' jos 1 tunti tai alle tunti
                TX_tilaus10.Text = Format(Val(TX_tilaus10.Text) + ero / 60, "0.00")
                Exit Sub
            Else
                aikaero1 = ero Mod 60  ' jakojäännös täysistä tunneista minuutteina
                aikaero2 = aikaero1 / 60
                aikaero3 = Int(ero / 60)  ' täydet tunnit
                aikaero = aikaero3 + aikaero2  ' täydet tunnit plus osatunti
                TX_tilaus10.Text = Format(Val(TX_tilaus10.Text) + aikaero, "##0.00")
            End If
        End If
        Exit Sub
out:    MsgBox("Tarkista työajat")
        MTX_Aloitusaika.Focus()
    End SubJa jos pahimmat purkat poistan niin:
Private Sub laske_tyoaika()
    If MTX_Lopetusaika.Text <> "__:__" Then
        Dim aikaEro = DateTime.ParseExact(MTX_Lopetusaika.Text, "HH:mm", System.Globalization.CultureInfo.InvariantCulture) - _
                  DateTime.ParseExact(MTX_Aloitusaika.Text, "HH:mm", System.Globalization.CultureInfo.InvariantCulture)
        Dim tunnit As Double = 0
        Double.TryParse(TX_tilaus10.Text, tunnit)
        tunnit += aikaEro.TotalHours
        TX_tilaus10.Text = tunnit.ToString("0.00")
    Else
        MsgBox("Tarkista työajat")
        MTX_Aloitusaika.Focus()
    End If
End SubJa tässä huvin vuoksi vielä snadisti vähemmän purkka VB6 -versio:
Private Sub laske_tyoaika()
    If MTX_lopetusaika.Text <> "__:__" Then
        Dim tunnit As Double
        If (IsNumeric(TX_tilaus10.Text)) Then tunnit = CDbl(TX_tilaus10.Text)
        tunnit = tunnit + 24 * (CDate(MTX_lopetusaika.Text) - CDate(MTX_aloitusaika.Text))
        TX_tilaus10.Text = Format(tunnit, "0.00")
    Else
        MsgBox ("Tarkista työajat")
        MTX_aloitusaika.SetFocus
    End If
End SubOn nyt taas venähtänyt....
Jotain on väärin kun kumpikaan esimerkki ei toimi > " Merkkijonoa ei tunnistettu kelvolliseksi DateTime-arvoksi. "
erkki
No onko se merkkijono esim. 12:33 vai jotain muuta?
Aihe on jo aika vanha, joten et voi enää vastata siihen.