vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen 
Autor: Manfred X
Datum: 18.03.13 19:08

Hallo!

Du lieferst Infos tröpfchenweise.
Für die Ermittlung von Zeitvergleichen ist das timespan-Objekt
geeignet. Für Zeiteingaben kann man den DateTimePicker oder
eine eventuell eine Maskedtextbox nutzen.

Vielleicht so ... ???
Public Class frmWerkTage2
 
    Dim lblEingang As New Label With _
        {.Parent = Me, .Width = 200, .Text = "Abfrageeingang: "}
 
    Dim WithEvents dtpEingangsDatum As New DateTimePicker With _
        {.Parent = Me, .Top = 40, .Width = 200, .Value = CDate(Now)}
 
    Dim WithEvents dtpEingangsUhrzeit As New DateTimePicker With _
          {.Parent = Me, .Top = 80, _
           .Width = 200, .Format = DateTimePickerFormat.Time}
 
    Dim lblDauer As New Label With _
        {.Parent = Me, .Width = 100, .Left = 350, .Top = 40, _
         .Text = "Projekt-Dauer: "}
 
    Dim WithEvents txtDauer As New TextBox With _
        {.Parent = Me, .Width = 100, .Left = 450, .Top = 40, _
         .Text = "3"}
 
    Dim lblSchlußzeit As New Label With _
       {.Parent = Me, .Width = 100, .Left = 350, _
        .Text = "Redaktionsschluß: "}
 
    Dim WithEvents txtSchlußzeit As New MaskedTextBox With _
        {.Parent = Me, .Width = 100, .Left = 450, .Mask = "00:00", _
         .Text = "1000"}
 
    'Berechnungsbutton
    Dim WithEvents btnCompute As New Button With _
        {.Parent = Me, .Top = 120, _
        .Width = 200, .Text = "Berechne Datum Projektende"}
 
    'Anzeige des Ergebnisses
    Dim lblWerktage As New Label With _
        {.Parent = Me, .Top = 120, .Left = 350, _
        .Width = 300, .Text = "", .BackColor = Color.LightGray}
 
    Private Sub btnCompute_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles btnCompute.Click
 
        Dim dt As Date = DateValue(dtpEingangsDatum.Value.ToString)
        Dim dauer As Integer
        If Not Integer.TryParse(txtDauer.Text, dauer) OrElse dauer < 1 Then
            MsgBox("Fehlerhafte Angabe zur Projektdauer (mind. 1 Tag)") 
            Exit Sub
        End If
 
        'Eingabe: tägliche Schlußzeit prüfen und in Timespan wandeln
        Dim schlußzeit As TimeSpan
        If Not TimeSpan.TryParse(txtSchlußzeit.Text, schlußzeit) Then
            MsgBox("Fehlerhafte Zeit-Eingabe (Schlußzeit)") 
            Exit Sub
        End If
 
        'eingegebene Eingangszeit in Timespan wandeln
        Dim ts As New TimeSpan((dtpEingangsUhrzeit.Value.TimeOfDay).Ticks)
 
        'Eingangszeit der Anfrage mit täglichem Redaktionsschluß vergleichen
        If schlußzeit.Ticks < ts.Ticks Then
            ' Eingangszeit liegt später als Schlußzeit: 
            ' Projekt startet am Folgetag
            dt = dt.AddDays(1)
        End If
 
        Dim c As Integer
        Do
            Dim wochentag As Integer = Microsoft.VisualBasic.Weekday(dt)
            'Unter Annahme: 1 = Sonntag, 7 = Samstag
            If wochentag > 1 And wochentag < 7 Then
                c += 1
            End If
            dt = dt.AddDays(1)
        Loop While c < dauer
 
        'Annahme: Datum letzter Projekttag = Datum Projektende
        dt = dt.AddDays(-1)
        lblWerktage.Text = "Projektende: " & dt.ToLongDateString
    End Sub
 
    Private Sub dtp_ValueChanged(ByVal sender As Object, _
                                 ByVal e As System.EventArgs) _
                            Handles dtpEingangsDatum.ValueChanged, _
                                    dtpEingangsUhrzeit.ValueChanged, _
                                     txtSchlußzeit.TextChanged, _
                                      txtDauer.TextChanged
 
        lblWerktage.Text = ""
    End Sub
 
    Private Sub frmWerkTage2_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
        Me.Width = 600
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.833weiß nix16.03.13 12:11
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.110sv0001016.03.13 14:25
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.020weiß nix16.03.13 17:12
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.012Manfred X16.03.13 14:55
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.079weiß nix16.03.13 17:25
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.297Manfred X16.03.13 18:26
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen1.926weiß nix17.03.13 18:12
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.001Manfred X17.03.13 19:47
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen1.905weiß nix18.03.13 18:11
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.058Manfred X18.03.13 19:08
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen1.887weiß nix19.03.13 18:28
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen1.996Manfred X19.03.13 19:54
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen2.060weiß nix20.03.13 18:45
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen1.900Manfred X20.03.13 19:15
Re: Nettoarbeitstage mit Eingabe einer Dezimalzahl berechnen1.910weiß nix23.03.13 16:35
Fortsetzung2.053Manfred X19.03.13 19:55

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel