Datumsformat aus String="yyyymmdd" in gebundenem Datagridview richtig anzeigen

  • VB.NET
  • .NET (FX) 4.0

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

    Datumsformat aus String="yyyymmdd" in gebundenem Datagridview richtig anzeigen

    Ich habe ein Datagridview an eine Tabelle eines typisierten Datasets gebunden.
    Leider bekomme ich die Daten immer so geliefert (1x monatlich) das 2 Datumsfelder im Format yyyymmdd dargestellt werden. Das Feld kann aber auch Nullwerte beinhalten.

    Ich habe zum einen versucht, dies als berechnete Spalte im Dataset einzubinden, mit folgender Formel.

    IIF(Datum is null,'',substring(Datum,6,2) +'.'+substring(Datum,4,2)+'.'+substring(Datum,0,4))

    Dort bekomme ich den Fehler "Das Argument Substring befindet sich außerhalb des gültigen Bereichs. Parametername index"

    Ein anderer Versuch bestand darin 2 Spalten im Datagridview anzufügen und per Code berechnen zu lassen. Wobei die Berechnung lt. Kontrolle im Debugger funktionierte, aber die Zellen im Datagridview leider leer blieben.

    VB.NET-Quellcode

    1. Public Property dtrowsRL100() As dsInfrastruktur.DB100Row()
    2. Get
    3. Return _dtrowsRL100
    4. End Get
    5. Set(ByVal value As dsInfrastruktur.DB100Row())
    6. _dtrowsRL100 = value
    7. If _dtrowsRL100.Count > 1 Then
    8. Me.dgvRL100.Visible = True
    9. Me.lblweitereGueltigkeiten.Visible = True
    10. Me.dgvRL100.DataSource = _dtrowsRL100
    11. Dim row As DataGridViewRow
    12. With Me.dgvRL100
    13. For Each row In .Rows
    14. Dim strDatumvon As String = row.Cells("Datum").Value.ToString
    15. If strDatumvon > String.Empty Then
    16. row.Cells(Datumvon.Index).Value = String.Concat(strDatumvon.Substring(6, 2), ".", strDatumvon.Substring(4, 2), ".", strDatumvon.Substring(0, 4))
    17. End If
    18. Dim strDatumbis As String = row.Cells("bis").Value.ToString
    19. If strDatumbis > String.Empty Then
    20. row.Cells(Datumbis.Index).Value = String.Concat(strDatumbis.Substring(6, 2), ".", strDatumbis.Substring(4, 2), ".", strDatumbis.Substring(0, 4))
    21. End If
    22. Next
    23. Me.dgvRL100.Update()
    24. End With
    25. Else
    26. Me.dgvRL100.Visible = False
    27. Me.lblweitereGueltigkeiten.Visible = False
    28. End If
    29. End Set
    30. End Property


    Wie löse ich das Problem am effektivsten ?
    Vielleicht den Fehler abfangen? Aus dem INet und ohne Gewähr

    VB.NET-Quellcode

    1. Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
    2. DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = DBNull.Value
    3. End Sub

    Schoofi schrieb:

    IIF(Datum is null,'',substring(Datum,6,2) +'.'+substring(Datum,4,2)+'.'+substring(Datum,0,4))

    Der zweite Parameter von Substring startet bei 1, nicht bei 0.

    Hier wäre interessant, welche DB du verwendest.
    Die reagieren alle ein wenig unterschiedlich in solchen Fehlerfällen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Verwendet wird eine ACCESS Datenbank.
    Kleines Verständnisproblem, wenn ich es richtig verstanden habe, wird vb.net intern als erster Parameter der Index mit 0 beginnend genutzt und bei den Expressions demzufolge 1?
    Danke, das war es tatsächlich, die Expressions fangen mit der Zählung bei 1 an.