| |
VB.NET - Ein- und UmsteigerAchtung 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 | |
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. | |
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 | |
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 | |
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 | |
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. | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|