/ / IndexOutOfRangeException vb.net - vb.net, sql-server-2012

IndexOutOfRangeException vb.net - vb.net, sql-server-2012

Private Sub Button73_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button73.Click
Dim serienaam
Dim oud
Dim aantal As Integer
Dim tt
Dim bedrag As Integer
Dim totaal As Integer

serienaam = ComboBox1.SelectedItem
oud = ComboBox2.SelectedItem
aantal = TextBox7.Text


tt = "" & serienaam & "  " & oud & "  " & aantal & "  "

cmd = New SqlCommand("SELECT "" & oud & "" FROM series Where naamserie = "" & serienaam & "" ", con)

Dim sdr As SqlDataReader = cmd.ExecuteReader()

If sdr.Read = True Then
Dim week = sdr.Item(" "" & oud & "" ") "\gives a IndexOutOfRangeException...
bedrag = week
totaal = totaal + bedrag * aantal



sdr.Close()
"Label14.Text = totaal
ListBox1.Items.Add(tt)

End If



End Sub

Wenn ich das laufe gibt es ein IndexOutOfRangeException auf

If sdr.Read = True Then
Dim week = sdr.Item(" "" & oud & "" ") |/<---|/gives a IndexOutOfRangeException...
bedrag = week
totaal = totaal + bedrag * aantal

Antworten:

1 für die Antwort № 1

Richtig, ich werde versuchen, das verständlich zu beantworten.

Das Hauptproblem ist Ihre SQL-Abfrage.

New SqlCommand("SELECT "" & oud & "" FROM series ...

Wie Ihre Anfrage aussehen wird, ist dies. Oud wird in diesem Beispiel "ID" sein:

SELECT "ID" FROM series...

Was Sie der Datenbank sagen, ist folgendes:

Für jede Zeile, die Sie finden können, senden Sie die Zeichenfolge "ID" zurück.

Was Sie wirklich wollen, ist dies, beachten Sie das Fehlen von Apostrophen:

SELECT ID FROM series...

Dies wird den Wert in der Spalte namens ID zurückgeben.

Führen Sie diese Abfrage in diesem Link aus und Sie werden besser verstehen: http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

SELECT "CustomerID", CustomerID FROM Customers;

Als Bonus Code, der meiner Meinung nach funktioniert. Stellen Sie es einfach an die gleiche Stelle wie zuvor.

Dim oud as String
oud = ComboBox2.SelectedItem.ToString()
cmd = New SqlCommand("SELECT " & oud & " FROM series Where naamserie = "" & serienaam & "" ", con)
Dim week = sdr.Item(oud) "As rinukkusu said

0 für die Antwort № 2

Ich glaube nicht, dass Sie den Spaltennamen anführen müssen:

Dim week = sdr.Item(oud)