我在這條線得到一個錯誤:指數走出陣列vb.net的界限
CheckedListBox3.Items.Remove(CheckedListBox3.CheckedItems(0))
我不明白爲什麼,因爲它讀取前兩個,但不是第三...的我的checkedlistbox1,2和3的索引是3,所以它使(0),(1)和(2)在每個時間...
請幫助我,並告訴我我錯在哪裏,因爲我不知道不明白他怎麼可能找到第一個和第二個列表框的索引,但找不到第三個列表框的索引
這是我的代碼:
cmd = New SqlCommand("SELECT serienaam, ouderdom, aantal FROM klantserie Where klantnummer = '" & klantnummer & "' ", con)
Dim ttr As SqlDataReader = cmd.ExecuteReader()
While ttr.Read = True
CheckedListBox1.Items.Add(ttr.Item("serienaam")) "serienaam" = a-map or c-map
CheckedListBox2.Items.Add(ttr.Item("ouderdom")) "ouderdom" = week1 - week16
CheckedListBox3.Items.Add(ttr.Item("aantal")) "aantal" = 1 - 10
End While
補充說,添加項目到CheckedListBox
Private Sub Button79_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button79.Click
While CheckedListBox1.CheckedItems.Count - 1 >= 0 ''i have changed this line a few times don't really know if it matters to the outcome of the error''
Dim serienaam
Dim oud
Dim aantal As Integer
Dim bedrag As Decimal
Dim totaal As Decimal
Try
serienaam = CheckedListBox1.CheckedItems(0)
oud = CheckedListBox2.CheckedItems(0)
aantal = CheckedListBox3.CheckedItems(0)
Catch ex As Exception
End Try
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)
bedrag = week * aantal
totaal = Label69.Text
totaal = totaal - bedrag
sdr.Close()
Label69.Text = totaal
End If
CheckedListBox1.Items.Remove(CheckedListBox1.CheckedItems(0))
CheckedListBox2.Items.Remove(CheckedListBox2.CheckedItems(0))
Try
CheckedListBox3.Items.Remove(CheckedListBox3.CheckedItems(0)) ''<<<----error
this try doesn't do anything actually except for the fact that im not getting any errors anymore
Catch ex As Exception
If ex IsNot Nothing Then
Dim s = CheckedListBox3.Items.Count
CheckedListBox3.SelectedItem = s
CheckedListBox3.Items.Remove(s)
End If
End Try
End While
End Sub
這個代碼是用以校驗碼
Private Sub CheckedListBox1_ItemCheck(ByVal sender As Object, ByVal e As ItemCheckEventArgs) Handles CheckedListBox1.ItemCheck
Dim index As Integer = e.Index
CheckedListBox2.SetItemChecked(index, e.NewValue)
CheckedListBox3.SetItemChecked(index, e.NewValue)
End Sub
我的解決方案,因爲它沒」工作。
Private Sub Button76_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button76.Click
Dim serienaam
Dim oud
Dim aantal As Integer
Dim bedrag As Decimal
Dim totaal As Decimal
Dim t As String
serienaam = ComboBox6.SelectedItem
oud = ComboBox7.SelectedItem
aantal = TextBox45.Text
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)
bedrag = week
totaal = Label69.Text
totaal = totaal + bedrag * aantal
sdr.Close()
Label69.Text = totaal
t = " '" & serienaam & "' '" & oud & "' '" & aantal & "' "
CheckedListBox1.Items.Add(t)
End If
End Sub
Private Sub Button79_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button79.Click
While CheckedListBox1.CheckedItems.Count <> 0
Dim klantnr As String
Dim serienaam As String
Dim oud As String
Dim list As String
Dim aantal As Integer
Dim bedrag As Decimal
Dim totaal As Decimal
klantnr = TextBox32.Text
list = CheckedListBox1.CheckedItems(0)
Dim strlist = list.Split("'")
For count = 0 To strlist.Length - 1
serienaam = strlist(1)
oud = strlist(3)
aantal = strlist(5)
Next
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)
bedrag = week * aantal
totaal = Label69.Text
totaal = totaal - bedrag
sdr.Close()
Label69.Text = totaal
End If
cmd = New SqlCommand("DELETE FROM klantserie Where klantnummer = '" & klantnr & "' And serienaam = '" & serienaam & "' And ouderdom = '" & oud & "' And aantal = '" & aantal & "' ", con)
If con.State = ConnectionState.Closed Then con.Open()
cmd.ExecuteNonQuery()
ShowData()
CheckedListBox1.Items.Remove(CheckedListBox1.CheckedItems(0))
End While
End Sub
你的while只檢查'CheckedListBox1.CheckedItems.Count <> 0'而不檢查另一個'CheckedListBox'。 –
我的壞應該說,checkedlistboxitems是共享的。所以如果checkedlistbox1項(2)=檢查比CheckedlistBox2項(2)=也檢查CheckedlistBox3項(2)=也檢查。 – user3437057
你確定'SELECT serienaam,ouderdom,aantal FROM klantserie Where klantnummer ='「&klantnummer&''」'是否恢復字段'aantl'的預期記錄數? –