Nullwerte in DataTable finden

04/03/2009 - 09:03 von Christoph Michalski | Report spam
Hallo,
ich möchte in einer DataTable die Datensàtze finden, wo die Felder einer
bestimmten Spalte nicht leer sind:

TestDataTable.RowFilter = " TestFeld <> '' "
Dieser Filter funktioiniert richtig.

Nun möchte ich aber die Datensàtze rerausfiltern, wo das Feld leer ist.
Leider funktiert die umgekehrte Bedingung nicht richtig:

TestDataTable.RowFilter = " TestFeld = '' ".
Kann mit jemdnad sagen, wie ich den Code richtig schrben muß, um die leer
Felder zu finden
Danke
Christoph
 

Lesen sie die antworten

#1 Elmar Boye
04/03/2009 - 09:21 | Warnen spam
Hallo Christoph,

Christoph Michalski schrieb:
ich möchte in einer DataTable die Datensàtze finden, wo die Felder einer
bestimmten Spalte nicht leer sind:

TestDataTable.RowFilter = " TestFeld <> '' "
Dieser Filter funktioiniert richtig.

Nun möchte ich aber die Datensàtze rerausfiltern, wo das Feld leer ist.
Leider funktiert die umgekehrte Bedingung nicht richtig:

TestDataTable.RowFilter = " TestFeld = '' ".
Kann mit jemdnad sagen, wie ich den Code richtig schrben muß, um die leer
Felder zu finden



RowFilter unterstützt wie SQL IS [NOT] NULL.
Wenn Du leere wie Null Spalten gleich behandeln willst,
wie mich der erste Filter vermuten làsst, kannst Du die
Funktion ISNULL() verwenden.

Kleines Beispiel unten dran.

Gruß Elmar

Public Shared Sub RowFilterNullTest()
Dim table As New DataTable("Tabelle")
With table.Columns.Add("id", GetType(Integer))
.AllowDBNull = False
.AutoIncrement = True
End With
With table.Columns.Add("daten", GetType(String))
.AllowDBNull = True
End With

table.Rows.Add(Nothing, "Zeile 1")
table.Rows.Add(Nothing, Nothing)
table.Rows.Add(Nothing, "Zeile 3")
table.Rows.Add(Nothing, "")
table.AcceptChanges()

Dim view As DataView = table.DefaultView
' Null
view.RowFilter = "Daten IS NULL"
For Each row As DataRowView In view
Console.WriteLine("NULL: {0}, {1}", row("id"), row("daten"))
Next

' Leere oder Null
view.RowFilter = "ISNULL(Daten, '') = ''"
For Each row As DataRowView In view
Console.WriteLine("LEER: {0}, {1}", row("id"), row("daten"))
Next
End Sub

Ähnliche fragen