vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Achtung dieser Termin steht in ? Tagen an 
Autor: ERBRU
Datum: 10.11.21 15:07

Hallo

ich habe eine Tabelle in dem ich mir einen Termin (CDate) schreibe ich möchte 2 Tage vorher in einem Label darauf aufmerksam gemacht werden "Achtung in 2 Tagen (Datum) haben Sie einen Termin"

Termin fällig, Termin in 2 Tagen, Termin in 1 Tag

Termin gestern, Termin vor 1 Tag, Termin vor 2 Tagen usw.

Danke für einen möglichen Lösungsansatz
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Achtung dieser Termin steht in ? Tagen an 
Autor: ModeratorDieter (Moderator)
Datum: 21.11.21 17:45

Folgende Frage stellt sich für mich: was genau ist dein Problem bei der Berechnung?

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Achtung dieser Termin steht in ? Tagen an 
Autor: ERBRU
Datum: 30.11.21 12:21

Danke für deine Nachfrage, hoffe hiermit kannst du etwas anfangen
habe mir dazu eine Spielwiese gebastelt



ich möchte halt eine Meldung ausgeben lassen ob ein Termin ansteht in Tagen oder ob er veraltet ist.

wenn du da eine andere bessere Lösung hast dann poste die hier

Public Class Form1
    'Variable
    Dim AktuellesDatum As Date
    Dim Ablaufdatum As Date
    Dim idays As Integer
    'Aktionen
    Private Sub DateTimePicker1_CloseUp(sender As Object, e As EventArgs) _
      Handles DateTimePicker1.CloseUp
        Dim idays As Integer = nudidays.Value
        TextBoxaktuellesDatum.Text = DateTimePicker1.Value.ToShortDateString
        TextBoxablaufdatum.Text = DateAdd("d", idays, CDate( _
          TextBoxaktuellesDatum.Text))
 
        Auswertung()
    End Sub
    'Load
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        fillCombo()
        'nur zum testen
        TextBoxaktuellesDatum.Text = Format(Now, "dd.MM.yyyy")
        TextBoxablaufdatum.Text = DateAdd("d", nudidays.Value, CDate( _
          TextBoxaktuellesDatum.Text))
        cboIntervall.SelectedIndex = 0
 
        Auswertung()
    End Sub
    'fill Combo
    Private Sub fillCombo()
        With cboIntervall
            .Items.Add("täglich")
            .Items.Add("wöchentlich")
            .Items.Add("alle 2 Wochen")
            .Items.Add("monatlich")
            .Items.Add("halbjährlich")
            .Items.Add("jährlich")
        End With
    End Sub
    'Intervall Art 
    ' ---------------------------------------------------------------------
    Private Sub cboIntervall_SelectedIndexChanged(sender As Object, e As _
      EventArgs) Handles cboIntervall.SelectedIndexChanged
        Select Case cboIntervall.SelectedIndex
            Case 0 'täglich
                nudidays.Value = 1
            Case 1 'wöchtlich
                nudidays.Value = 7
            Case 2 'alle 2 wochen
                nudidays.Value = 14
            Case 3 'monatlich
                nudidays.Value = 30
            Case 4 'halbjährlich
                nudidays.Value = 182
            Case 5 'jährlich
                nudidays.Value = 365
            Case Else 'Alle anderen Items
 
        End Select
    End Sub
    'Intervall Art 
    ' ---------------------------------------------------------------------
    'Value Changed
    Private Sub nudidays_ValueChanged(sender As Object, e As EventArgs) Handles _
      nudidays.ValueChanged
        TextBoxaktuellesDatum.Text = DateAdd("d", nudidays.Value, CDate( _
        TextBoxablaufdatum.Text))
 
        Auswertung()
    End Sub
 
    'differenz berechnen
    Private Sub Auswertung()
        AktuellesDatum = CDate(TextBoxaktuellesDatum.Text)
        Ablaufdatum = CDate(TextBoxablaufdatum.Text)
        'differenz berechnen 
        Dim differenz As Integer = DateDiff(DateInterval.Day, AktuellesDatum, _
          Ablaufdatum)
        'Datum vergleichen < >
        If Ablaufdatum < AktuellesDatum Then
            LabelErgebnis.Text = "abgelaufen"
        ElseIf Ablaufdatum > AktuellesDatum Then
            LabelErgebnis.Text = "Prüfung in " & differenz & " Tagen"
        ElseIf Ablaufdatum = Ablaufdatum Then
            LabelErgebnis.Text = "Prüfung"
        End If
 
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        Me.Close()
    End Sub
 
End Class


Beitrag wurde zuletzt am 30.11.21 um 12:29:05 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Achtung dieser Termin steht in ? Tagen an 
Autor: effeff
Datum: 01.12.21 22:52

Du hast geschrieben, Deine Daten kämen aus einer Tabelle; Die kann ich hier nicht nachvollziehen...

Du kannst doch bei der SQL-Abfrage schon Datumsberechnungen vornehmen, wenn tatsächlich eine Tabelle mit einer vorherigen Abfrage dahinter steht...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Achtung dieser Termin steht in ? Tagen an 
Autor: ERBRU
Datum: 03.12.21 10:36

Hallo effeff,

Danke, ja ich habe da eine Tabelle unter anderem mit den Spalten

letzteInventur = Datum als String
nächsteInventurDatum = Datum als String
Bemerkung = String

wie soll denn bitte die Abfrage aussehen die Datumse Spalten könnten auch leer sein

ich muss noch herumspielen bis zur Tabelle, irgendwie will es mir nicht in der Umsetzung gelingen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Achtung dieser Termin steht in ? Tagen an 
Autor: ERBRU
Datum: 13.12.21 12:40

Hallo ich bin immer noch nicht zufrieden mit dem Ergebnis


https://ibb.co/NWjSC8t

was, wie muss geändert werden ? bitte, bitte um Unterstützung

Ziel ist es in der Tabelle (auf Termine zu verweisen)
in der Tabelle ist naechsteInventurDatum ein DataTyp string ist das ggf. der Fehler ?

 ' Bemerkung setzen wenn Datum (Termin) nicht eingetragen oder überschritten 
        ' wurde bzw. Termin in Tabelle veraltet ist
        Try
            For rowIndex = 0 To InventartabelleDataGridView.RowCount - 1
                Dim s As String = InventartabelleDataGridView.Rows( _
                  rowIndex).Cells("naechsteInventurDatum").Value.ToString
                Dim d As Date
 
                If InventartabelleDataGridView.Rows(rowIndex).Cells( _
                  "naechsteInventurDatum").Value IsNot Nothing Then
                    InventartabelleDataGridView.Rows(rowIndex).Cells( _
                    "colBem").Value = "Ohne Angabe"
                End If
                If Date.TryParseExact(s, "dd.MM.yyyy", New _
                  Globalization.CultureInfo("de-DE"), _
                  Globalization.DateTimeStyles.None, d) Then
                    ' korrekt
                    Dim calc_days As Integer = DateDiff(DateInterval.Day, Now, _
                      d)
 
                    If (Now - d).Days = 0 Then
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                          "naechsteInventurDatum").Style.BackColor = _
                          Drawing.Color.Yellow  'Gelb
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                        "colBem").Value = "Inventur"     'Gelb
                    ElseIf (Now - d).Days < 0 Then
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                          "naechsteInventurDatum").Style.BackColor = _
                          Drawing.Color.Green   'green
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                        "colBem").Value = calc_days     'green
                    ElseIf (Now - d).Days > 0 Then
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                          "naechsteInventurDatum").Style.BackColor = _
                          Drawing.Color.Red     'red
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                        "colBem").Value = "abgelaufen"  'red
                    Else
 
                    End If
                End If
            Next
 
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Achtung dieser Termin steht in ? Tagen an 
Autor: HenryV
Datum: 13.12.21 14:53

Ich glaube es liegt daran das du in deinen Daten auch die Uhrzeit drin hast. z.B. (Now - d).Days
Rechne explizit nur mit den Daten ohne Uhrzeit. z.B. (Today - d).Days

Siehe auch:
https://docs.microsoft.com/de-de/dotnet/api/system.datetime.today
https://docs.microsoft.com/de-de/dotnet/api/system.datetime.date
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Achtung dieser Termin steht in ? Tagen an 
Autor: ERBRU
Datum: 13.12.21 16:26

Danke,

bischen peinlich ist mir das schon, da es mehrmals hier beschrieben wurde Sorry an alle

aber jetzt sieht es schon richtiger aus ist es denn auch richtig ?

https://ibb.co/PFyP2ND

https://ibb.co/1vP4Vnw

zum nachbauen der Code

 ' Bemerkung setzen wenn Datum (Termin) nicht eingetragen oder überschritten 
        ' wurde bzw. Termin in Tabelle veraltet ist
        Try
            For rowIndex = 0 To InventartabelleDataGridView.RowCount - 1
                Dim s As String = InventartabelleDataGridView.Rows( _
                  rowIndex).Cells("naechsteInventurDatum").Value.ToString
                Dim d As Date
 
                If InventartabelleDataGridView.Rows(rowIndex).Cells( _
                  "naechsteInventurDatum").Value IsNot Nothing Then
                    InventartabelleDataGridView.Rows(rowIndex).Cells( _
                    "colBem").Value = "Angabe Inventur?"
                End If
                If Date.TryParseExact(s, "dd.MM.yyyy", New _
                  Globalization.CultureInfo("de-DE"), _
                  Globalization.DateTimeStyles.None, d) Then
                    ' korrekt
                    Dim calc_days As Integer = DateDiff(DateInterval.Day, _
                      Today, d)
 
                    If (Today - d).Days = 0 Then
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                          "naechsteInventurDatum").Style.BackColor = _
                          Drawing.Color.Yellow           'Gelb
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                        "colBem").Value = "heute Inventur"
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                        "colBem").Style.BackColor = Drawing.Color.Cyan          _
                                          'Cyan
                    ElseIf (Today - d).Days < 0 Then
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                          "naechsteInventurDatum").Style.BackColor = _
                          Drawing.Color.Green            'green
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                        "colBem").Value = "Inventur in " & calc_days & " Tage"  _
                                          'green
                    ElseIf (Today - d).Days > 0 Then
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                          "naechsteInventurDatum").Style.BackColor = _
                          Drawing.Color.Red              'red
                        InventartabelleDataGridView.Rows(rowIndex).Cells( _
                        "colBem").Value = "abgelaufen"                          _
                                          'red
                    Else
 
                    End If
                End If
            Next
 
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try


Beitrag wurde zuletzt am 13.12.21 um 16:32:09 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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