| 

.NET C# Java Javascript Exception

1
Ich versuche gerade über eine DataTable die Werte eines Items zubekommen, aber sagt mir immer "Die Tabelle hat keinen Primärschlüssel. Ich sehe meinen Fehler einfach nicht.

Ich setze doch einen Primärkey und aschließend fülle ich das DataTable.
Hoffe jemand kann helfen.

Dim dtLieferstatus As New DataTable()

dtLieferstatus.Columns.Add(New DataColumn("Artnr"))
dtLieferstatus.Columns.Add(New DataColumn("Lager"))
dtLieferstatus.Columns.Add(New DataColumn("Gateway"))
dtLieferstatus.Columns.Add(New DataColumn("VK4"))

Dim Pkey(1) As DataColumn
Pkey(1) = dtLieferstatus.Columns("Artnr")
dtLieferstatus.PrimaryKey = Pkey


Dim reader As LumenWorks.Framework.IO.Csv.CsvReader, filereader As System.IO.TextReader = Nothing
Dim ReceiveStream As FileStream = New Filestream(KONAPP.Configpath & "\..\Outgoing\Lieferstatus.txt", FileMode.Open, FileAccess.Read)
Dim encode As Encoding = System.Text.Encoding.Default

filereader = New StreamReader(ReceiveStream, encode)
reader = New LumenWorks.Framework.IO.Csv.CsvReader(filereader, False, ";", "", "", vbNullChar(0), True)
reader.MissingFieldAction = LumenWorks.Framework.IO.Csv.MissingFieldAction.ReplaceByEmpty
reader.SupportsMultiline = False

If Not reader.ReadNextRecord() Then Return Nothing

Do While reader.ReadNextRecord = True
dtLieferstatus.Rows.Add(reader.Item(0), reader.Item(2), reader.Item(3), reader.Item(7))
Loop

Dim asd As DataRow = dtLieferstatus.Rows.Find("80282520")

MsgBox(asd.Item("Lager").toString)


grüße marco
News:
01.04.2011
Gast
11 1 2
2 Antworten
3
Hi,

wenn ich mich nicht täusche ist das Array PKey doch 0-basiert:

Also müsste die Zeile
Pkey(1) = dtLieferstatus.Columns("Artnr")
in
Pkey(0) = dtLieferstatus.Columns("Artnr")

geändert werden.

Gruß,
Derek
01.04.2011
donald 41 3
Ok danke werde es gleich ausprobieren wenn ich wieder inner Firma bin, wenn sonst noch jemand was hat. Gerne her damit :)
Marco Rieger 01.04.2011
Weiss zwar nicht ob's Auswirkungen auf die Lauffähigkeit hat, aber dimensionieren solltest du auch mit 0: Dim Pkey(0) As DataColumn.

Man kann das Ganze übrigens auch so schreiben:
dtLieferstatus.PrimaryKey = New DataColumn() {dtLieferstatus.Columns(0)}
wurzelchen 02.04.2011
0
Kann leider nicht als Antwort makieren aber, funktioniert nun !

dtLieferstatus.PrimaryKey = New DataColumn() {dtLieferstatus.Columns(0)}


Dank dir Donald!
04.04.2011
Marco Rieger 820 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH