vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 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: Zeitbereiche effektiv prüfen 
Autor: Kuno60
Datum: 20.03.09 18:10

Die Verknüpfung mit AND war schon richtig.
Du musst nur berücksichtigen, dass Zeiten auch am nächsten Tag liegen können, also nach Mitternacht. Dabei muss auch Unterschieden werden, ob eine Einschaltzeit oder Ausschaltzeit eingegeben wurde. Denn nur Ausschaltzeiten können nach Mitternacht liegen.
Wenn Ausschaltzeit < Einschaltzeit dann 1 Tag dazu addieren.

Habe ein funktionierendes Beispiel gemacht.
Dazu habe ich 10 Textboxen auf der Form und habe den Textboxen in der Tag-Eigenschaft eine Nummer zugewiesen, 0 bis 4 für die Einschaltzeiten und 5 bis 9 für die Ausschaltzeiten.
Habe in meinem Beispiel einen 0-basierenden Index verwendet.

  Dim Schaltzeit(4, 1) As TimeSpan
 
  Private Sub TextBoxen_Validated(ByVal sender As Object, ByVal e As _
    System.EventArgs) Handles TextBox1.Validated, TextBox9.Validated, _
    TextBox8.Validated, TextBox7.Validated, TextBox6.Validated, _
    TextBox5.Validated, TextBox4.Validated, TextBox3.Validated, _
    TextBox2.Validated, TextBox10.Validated
 
    Dim tb = DirectCast(sender, TextBox)
    Dim Zeit As TimeSpan
    If TimeSpan.TryParse(tb.Text, Zeit) Then
      Dim nr = CInt(tb.Tag)
      If nr < 5 Then 'Einschaltzeiten
        Schaltzeit(nr, 0) = Zeit
        If ZeitBereichTest(nr, 0) Then
          tb.Clear()
          Schaltzeit(nr, 0) = Nothing
        End If
      Else 'Ausschaltzeiten
        Schaltzeit(nr - 5, 1) = Zeit
        If ZeitBereichTest(nr - 5, 1) Then
          tb.Clear()
          Schaltzeit(nr - 5, 1) = Nothing
        End If
      End If
    ElseIf tb.TextLength > 0 Then
      MsgBox("Ungültige Eingabe!")
    End If
  End Sub
 
  ''' <summary>
  ''' Testet die eingegebene Zeit auf Überschneidungen.
  ''' </summary>
  ''' <param name="Index1">Der Index der TextBox (Tag).</param>
  ''' <returns>True wenn Fehler.</returns>
  ''' <remarks></remarks>
  Private Function ZeitBereichTest(ByVal Index1 As Integer, ByVal Index2 As _
    Integer) As Boolean
    Dim Ein, Aus, TestZeit As TimeSpan
    '=======================================================
    TestZeit = Schaltzeit(Index1, Index2) 'Eingegebene Zeit
    If Index2 = 1 Then 'Ist Ausschaltzeit
      '-----------------------------------------------------
      ' Prüfen ob Ausschaltzeit im nächsten Tag liegt.
      Ein = Schaltzeit(Index1, 0) 'Einschaltzeit
      If TestZeit < Ein Then TestZeit = TestZeit.Add(New TimeSpan(1, 0, 0, 0))
      '-----------------------------------------------------
    End If
    '=======================================================
    For i = 0 To 4
      If i = Index1 Then Continue For
      '-----------------------------------------------------
      Ein = Schaltzeit(i, 0) 'Einschaltzeit
      Aus = Schaltzeit(i, 1) 'Ausschaltzeit
      '-----------------------------------------------------
      ' Prüfen ob Ausschaltzeit im nächsten Tag liegt.
      If Aus < Ein Then Aus = Aus.Add(New TimeSpan(1, 0, 0, 0))
      '-----------------------------------------------------
      ' Prüfen ob eine TestZeit in einem vergebenen Bereich liegt
      If TestZeit > Ein And TestZeit < Aus Then
        Dim Meldung = _
          "Die Eingabe überschneidet sich mit" & vbCrLf & _
          "dem Zeitbereich: " & (i + 1).ToString
        MsgBox(Meldung, MsgBoxStyle.Exclamation, "Zeitüberschneidung")
        Return True
      End If
    Next
  End Function
Habe VB 2008
Gruß
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeitbereiche effektiv prüfen2.324thovi20.03.09 07:16
Re: Zeitbereiche effektiv prüfen1.880thovi20.03.09 08:35
Re: Zeitbereiche effektiv prüfen1.835thovi20.03.09 09:29
Re: Zeitbereiche effektiv prüfen1.766thovi20.03.09 11:32
Re: Zeitbereiche effektiv prüfen1.763thovi20.03.09 17:51
Re: Zeitbereiche effektiv prüfen2.882Kuno6020.03.09 18:10
Re: Zeitbereiche effektiv prüfen2.187mikeb6921.03.09 09:36
Re: Zeitbereiche effektiv prüfen1.948thovi21.03.09 10:48
Re: Zeitbereiche effektiv prüfen2.331thovi23.03.09 15:26

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