2016-08-15 5 views
-2

私はこのコードを実行するたびにデータベースで正常に機能しますが、ListBoxを見ると、その中に置かれたアイテムはすべて消えてしまいます。たとえば、3つのアイテムを置くと、データベースをチェックすると以下のコードが実行されますが、リストボックス自体は空になります。そして、それはインデックスが受け入れられないというエラーを示しています。ここでコードが成功した後にListBoxの項目を表示できませんか?

は私のコードです:

 For i As Integer = 0 To ListBox1.Items.Count - 1 

       Dim l_text As String = CStr(ListBox1.Items(i)) 

       MysqlConn.ConnectionString = ServerString 
       Dim dbDataSet As New DataTable 
       Dim SDA As New MySqlDataAdapter 

       Dim bSource As New BindingSource 
       Dim READER As MySqlDataReader 
       Dim query As String 

       MysqlConn.Open() 
       query = "select * from test.subject where subject_name= '" + l_text + "'" 
       COMMAND = New MySqlCommand(query, MysqlConn) 
       READER = COMMAND.ExecuteReader 

       While READER.Read 
        slot = READER.GetInt32("subject_slot") 

        slot = slot - 1 

        Label1.Text = "" 
        Label5.Text = "" 
       End While 

       MysqlConn.Close() 


       MysqlConn.Open() 

       query = "UPDATE test.subject SET subject_slot='" & slot & "' WHERE subject_name= '" + l_text + "'" 
       COMMAND = New MySqlCommand(query, MysqlConn) 
       READER = COMMAND.ExecuteReader 

       ListBox1.Items.Clear() 
       MysqlConn.Close() 


      Next 


      MsgBox("ENROLLMENT SUCCESSFUL") 
      MsgBox("ALL SUBJECTS SELECTED ARE ENROLLED") 
      load_table() 
+0

郵便番号は本文のみでお願いします。エラーメッセージもあります。 – Blorgbeard

+1

実際のコードを投稿する必要がある場合は、誰も画像をカットアンドペーストできません。 – FloatingKiwi

答えて

1

は、あなたが本当にあなたが実際にそこに達成しようとしているものについて考えたことがありますか?これらの2行のコードを見てください。ここにあなたのループです:

For i As Integer = 0 To ListBox1.Items.Count - 1 

、ここでそのループ内だラインです:

ListBox1.Items.Clear() 

あなたはそのループの最初の反復にあなたが2回目の反復で使用し、その後の進路インデックスをListBoxをクリアした場合すなわち1が無効となる。削除したアイテムがないため、インデックスは無効になります。

ループが実際にやっていることをやめて考える必要があります。ペンと紙を拾い、必要な場合は書き留めてください。しかし、あなたが持っているコードは意味をなさないので、コードを読んだり、デバッグしたりして、自分が期待していることや期待していることを確認しないでください無意味です。

関連する問題