Probleme beim auslesen einer DataTable


#1
Grüße erstmal!

Ich habe ein Problem mit den Datatables in VB.
Ich habe eine Excel-Tabelle, die eingelesen werden soll und von der bestimmte Einträge verarbeitet werden sollen.
Das mit dem Einlesen in die Datatable funktioniert soweit ja ganz gut, aber jetzt habe ich Probleme die Daten zu verarbeiten.
Aber hier erstmal grob, wie ich die Daten einlese (ohne Return etc.)

Visual Basic:
Dim da As New OleDbDataAdapter
Dim dt As New DataTable
Dim cmd As New OleDbCommand
Dim xlsConn As OleDbConnection
Dim sPath As String = String.Empty

sPath = Me.TbDateipfad.Text   'hier ist der Pfad angegeben

xlsConn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath & ";Extended Properties=Excel 12.0")

Try
   xlsConn.Open()
   cmd.Connection = xlsConn
   cmd.CommandType = CommandType.Text
   cmd.CommandText = ("select * from [" & TxtbTabellenname.Text & "$]")
   da.SelectCommand = cmd
   da.Fill(dt)
Catch
    MsgBox(ErrorToString)
Finally
    xlsConn.Close()
    xlsConn = Nothing
End Try
Wenn ich jetzt
Visual Basic:
MsgBox(dt.Rows(x)(y))
einbaue erhalte ich auch den gewünschten Wert.
In der Excel-Tabelle stehen nur Werte und das dazugehörige Datum, die ich als Integer-Werte gezielt abrufen und weiterverarbeiten will (ja, auch das Datum, da die Excel-Zeitrechnung die scheinbar eh als Integer abspeichert -> 01.01.2012 = 40909).
Wenn ich aber
Visual Basic:
If dt.Rows(x)(y) = beliebigerInteger Then ... End If
eingebe meint er:"Der Operator = ist für Typ DBNull und Typ Integer nicht definiert"...
Was ich merkwürdig finde ist, dass sich die If-Abfrage in einer While-Schleife befindet, die er nicht bemäkelt:
Visual Basic:
While dt.Rows(x)(y) <> beliebigerInteger ...
Was mache ich falsch? Wie kann ich besser / ohne Fehler direkt bestimmte Felder auslesen (als Integer) um mit denen weiterzuarbeiten?
Hilfe ist natürlich sehr erwünscht.

MfG Felix
 
Zuletzt bearbeitet:

ksk

Erfahrenes Mitglied
#4
Hy,
probier mal über LINQ.
Beispiel gibt dir alle Zeilen in welcher die Bedingung zutrifft
Code:
var allFoundetEntries = from row in dt.AsEnumerable() where row.Field<int>(y) != null && row.Field<int>(y) == beliebigerInteger select row;
if (allFoundetEntriesCount() > 0)
{
  foreach(datarow dr in allFoundetEntries)
  {
      // Code here
  }
}
else
{
  
}
Lg
ksk