| |
Visual-Basic EinsteigerRe: "Einfache" Rechnung mit Zeit | | | Autor: Polystrol | Datum: 15.10.12 10:33 |
| hab mich umentschieden ich beginne die Sache anders, das heiss dieses Tehma kann "geschlossen" werden. | |
"Einfache" Rechnung mit Zeit | | | Autor: Polystrol | Datum: 13.10.12 10:16 |
| Hallo
Ich habe begonnen von Excel auf VB umzusteigen und versuchenun mein Excelprogramm in vb aufzubauen.
Dabei Habe ich drei Zeiten, die ich mit 3 DateTimePickern auswähle.
Nun will ich in einem Label meine Arbeitszeit ausgerechnet bekommen.
das heisst ca.
DateTimePicker2 - DateTimePicker1 = Arbeitszeit im Label5 Dargestellt.
was ich bis jetzt mit dem Internet zusammengestellt habe funktioniert nicht, bzw, es wird jedenfalls nichts im Label5 Angezeigt:
Private Function TimeDiff(ByVal Time1 As String, ByVal Time2 As String) As _
String
Dim lngMin As Long
Dim lngStd As Long
Dim sTime1 As String
Dim sTime2 As String
sTime1 = DateTimePicker1.Value
sTime2 = DateTimePicker2.Value
' Zeitdifferen lässt sich nur berechnen, wenn man
' auch ein gültiges Datum mit angibt
Dim sDate1 As String
Dim sDate2 As String
sDate1 = CDate(Format$(Now, "m-d-yy"))
' Wenn sTime2 < sTime1
sDate2 = DateAdd("d", IIf(sTime2 < sTime1, 1, 0), sDate1)
' Zeit-Differenz in Minuten
lngMin = DateDiff("n", CDate(sDate1 & " " & sTime1), _
CDate(sDate2 & " " & sTime2))
' Und jetzt ins Format hh:nn umwandeln
lngStd = Int(lngMin / 60)
lngMin = lngMin - (lngStd * 60)
Dim Uhrzeit As String
Uhrzeit = "Zeit-Differenz: " & _
Format$(lngStd, "00") & ":" & Format$(lngMin, "00")
Label5.Text = Uhrzeit
End Function | |
Re: "Einfache" Rechnung mit Zeit | | | Autor: mst547 | Datum: 13.10.12 14:23 |
| Hallo Polystrol!
Mich wundert, dass dieser Code überhaupt läuft - habe deinen Code ausprobiert, ich erhalte da eine Reihe von Laufzeitfehlern.
1.) Variablen, die ein Datum oder eine Zeit beinhalten, nicht als String deklarieren, sondern als Date.
2.) Die Typ-Umwandlung, die du in der Zeile machst, in der du die Zeit-Differenz in Minuten berechnest, funktioniert (zumindest bei mir) so nicht. Da die Daten, die vom DTPicker kommen, aber das aktuelle Datum beinhalten, können wir den Teil mit dem Datum überhaupt streichen. Nur für den Fall, dass die 2. Zeit vor der 1. Zeit liegt, müssen wir einen Tag addieren.
3.) Label5.Text gibt es nicht, der Text eines Labels steht in der Eigenschaft .Caption
4.) Du schreibst eine Funktion, verwendest aber die übergebenen Parameter gar nicht; abgesehen davon, dass diese natürlich auch nicht als String, sondern als Date übergeben werden sollten, wenn du Zeitwerte übergeben willst.
Eine funktionierende Version des Programms könnte also etwa so aussehen:
Private Function TimeDiff(ByVal datTime1 As Date, ByVal datTime2 As Date) As _
String
Dim lngMin As Long
Dim lngStd As Long
If datTime2 < datTime1 Then datTime2 = DateAdd("d", 1, datTime2)
lngMin = DateDiff("n", datTime1, datTime2)
lngStd = Int(lngMin / 60)
lngMin = lngMin Mod 60
TimeDiff = "Zeit-Differenz: " & Format$(lngStd, "00") & ":" & Format$(lngMin, _
"00")
End Function
Private Sub Command1_Click()
Label5.Caption = TimeDiff(DateTimePicker1.Value, DateTimePicker2.Value)
End Sub mfg mst547 | |
Re: "Einfache" Rechnung mit Zeit | | | Autor: Polystrol | Datum: 13.10.12 14:45 |
| Uff, ich merke echt, das ich in visual ein totaler Anfänger bin.
jedenfalls schon mal danke vielmals für die Mühe, und ich hab das mal ausprobiert.
Dann kommt bei mir diese Fehlermeldung:
"Caption" ist kein Member von "System.Windows.Forms.Label". | |
Re: "Einfache" Rechnung mit Zeit | | | Autor: mst547 | Datum: 13.10.12 16:20 |
| Hallo Polystrol!
Das hört sich so an, als ob du VB.NET verwendest und nicht VB Classic. Für VB.NET gibt es hier ein eigenes Forum.
Versuche mal, die Zeile wieder zu ändern auf Label5.Text, vielleicht heißt die Eigenschaft in VB.NET so.
mfg mst547 | |
Re: "Einfache" Rechnung mit Zeit | | | Autor: Polystrol | Datum: 14.10.12 13:05 |
| öhhmm und wo sieht man was man verwendet?
hab es noch keine erfahrung. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|