Hallo Form,
ich möchte mehrere Daten (Geburtstage) auf ihr alter in Tagen Überprüfen. Hier im Forum habe ich Folgenden Code gefunden: Dim dHeute As Date = DateTime.Now.Date
Dim dDatum As Date = New Date(2000, 11, 1)
Dim dateDiff As TimeSpan = dDatum - dHeute Die Daten lade ich aus einer CSV in ein DatagridPublic Class Form1
Dim dt As New cDataTableCSV
Dim bs As New BindingSource
Dim dgv As New DataGridView With {.Parent = Me, .DataSource = bs, .Top = _
50, .Width = 464, .Height = 509}
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim sAppPath As String
sAppPath = Application.StartupPath
Me.Size = New Size(480, 597)
If Not dt.LoadFile(sAppPath & "\Birthday.csv", _
System.Text.Encoding.UTF7) Then
MsgBox("Datei konnte nicht geladen werden")
Else
dt.Columns(0).ColumnName = "Name"
dt.Columns(1).ColumnName = "Geburtstag"
dt.Columns(2).ColumnName = "Tage"
dt.Columns(3).ColumnName = "Zeit bis"
bs.DataSource = dt
End If
End Sub
End Class Option Strict On : Option Explicit On : Option Infer Off
Public Class CSV
Inherits System.Data.DataTable
Public Function LoadFile(ByVal filename As String, _
ByVal textencoder As System.Text.Encoding, _
Optional ByVal FeldTrennzeichen As Char = ";"c, _
Optional ByVal ZeilenTrennzeichen As String = _
Microsoft.VisualBasic.vbNewLine) As Boolean
Me.Rows.Clear() : Me.Columns.Clear()
Try
'Zeilen lesen
Dim lines() As String = System.IO.File.ReadAllLines(filename, _
textencoder)
'Maximale Feldzahl pro Zeile
Dim fields() As String, maxfields As Integer = 0
For i As Integer = 0 To lines.GetUpperBound(0)
If lines(i) <> String.Empty Then
fields = lines(i).Split(FeldTrennzeichen)
maxfields = System.Math.Max(maxfields, fields.Length)
End If
Next i
If maxfields < 1 Then Return False
Me.Columns.Add("Name", GetType(String))
Me.Columns.Add("Geburtstag", GetType(String))
Me.Columns.Add("Tage", GetType(String))
Me.Columns.Add("Zeit bis", GetType(String))
'Datatable: Zeilen füllen
Dim r As System.Data.DataRow
For i As Integer = 0 To lines.GetUpperBound(0)
If lines(i) <> String.Empty Then
fields = lines(i).Split(FeldTrennzeichen)
System.Array.Resize(fields, maxfields)
r = Me.NewRow
For k As Integer = 0 To maxfields - 1
If String.IsNullOrEmpty(fields(k)) Then
r(k) = String.Empty
Else
r(k) = fields(k).Trim
End If
Next k 'Felderschleife
Me.Rows.Add(r)
End If
Next i
Return Me.Rows.Count > 0
Catch ex As System.Exception
Return False
End Try
End Function
Public Sub AddColumn()
Dim k As Integer = Me.Columns.Count
'Dim cn As String = "SP_" & CStr(k)
Dim cn As String = "SP_" & CStr(k)
Me.Columns.Add(cn, GetType(String))
For i As Integer = 0 To Me.Rows.Count - 1
Me.Rows(i).Item(k) = String.Empty
Next i
End Sub
End Class Leider verstehe ich nicht, wie ich beim Start die Datediff einbauen muss, das er den Unterschied berechnet ? |