Nächste zwei Wochen richtig ermitteln...

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Nächste zwei Wochen richtig ermitteln...

    Hallo!
    Ich habe ein kleines Problem, und brauche eure Hilfe.
    Ich möchte eine Zeitschaltungs-Software programmieren.
    Diese verschiedene Zeit Intervalle besitzt.
    Zum Beispiel: Täglich, Wöchentlich, Monatlich
    Jährlich.
    Für jeden Zeitintervall habe ich eine Lösung gefunden, außer für das „Wöchentlich“.
    Ich versuche nun zu beschreiben, was der Wöchentlich Code Block tun sollte.
    Also, meine Zeitschaltungs-Software liest mit einen Timer, Zeit Werte aus einer Listbox aus.
    Siehe Code:

    VB.NET-Quellcode

    1. If Date.Parse(i.SubItems(1).Text) <= Date.Parse(Now) Then


    Sobald diese Anweisung ausgeführt wird.
    Möchte ich dass der nächste Zeitwert, dieser in 2 Wochen ist ermittelt wird.

    VB.NET-Quellcode

    1. ' Wöchentlich
    2. ' i.SubItems(1).Text = Aktuelle Uhrzeit
    3. Dim NeuerZeitWert As String
    4. Dim Datum As DateTime = Date.Parse(i.SubItems(1).Text).AddDays(7).ToShortDateString
    5. Dim Zeit As DateTime = Date.Parse(i.SubItems(1).Text).ToLongTimeString
    6. NeuerZeitWert = Datum & " " & Zeit



    Dieser Code hat allerdings ein großes Problem!
    Zum Beispiel soll mich das Programm jede Woche einmal mit einer MessageBox informieren!
    Wenn das Programm bereits gestartet ist, wird eine MessageBox erscheinen, und das nächste Datum wird richtig ermittelt(so wie gewünscht).
    Aber wenn ich das Programm mal später oder in mehre Wochen oder sogar Monate wieder starten möchte.
    Dann erscheinen tausende MessageBoxen, für jedes Datum, da der Wert hochgezählt wird.
    Und genau hier ist das Problem!
    Ich hoffe ich könnte euch das Problem gut erklären.
    Ich freue mich wirklich sehr auf eure Hilfe!
    Vielen Dank! :thumbsup:

    Info:

    VB.NET-Quellcode

    1. Dim Datum As DateTime = Date.Parse(i.SubItems(1).Text).AddDays(7).ToShortDateString


    Ich glaube, dass man hier ein Lösungsweg finden kann!
    Mit einer passenden IF Abfrage! Und NOW!?
    Visual Basic.NET 8o
    MS-SQL
    8o
    Immer wenn dein Programm sich öffnet, dann prüfen ob die Zeitspanne zwischen jetzt und letztem Schließen größer gleich 14 Tage ist, dann MessageBox öffnen.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Was soll das Resultat dieses Ausdrucks sein?

    Cheffboss schrieb:

    VB.NET-Quellcode

    1. Date.Parse(Now)
    Trenne Daten und GUI, leg eine separate DateTime-Variable an und rechne mit dieser.
    Was ist das i bei Dir für ein Datentyp? Bei mir wäre das eine Laufvariable in einer For-Schleife.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @an alle!
    Vielen Dank, für eure Beiträge.
    Ich habe nun eine passende Lösung in einem anderen Forum gefunden!

    Hier die Lösung des Problems:

    VB.NET-Quellcode

    1. 'Das Datum, das aus dem Listview oder so .... gelesen wird
    2. Dim dt As Date = CDate("15.5.2013")
    3. 'Vergangenheit bereinigen
    4. While dt <= Now
    5. dt = dt.AddDays(7)
    6. End While

    Vielen Dank!
    Visual Basic.NET 8o
    MS-SQL
    8o