2017-05-06 16 views
0

FormMain_loadサブ内にこのコード行があります。同じキーを持つアイテムがすでにクリアされていてもエラーが追加されました

最初の読み込み時に、プログラムは正常に動作します。それから、別のフォームを開き、FormMainをもう一度呼び出そうとします。今回は、フォームにエラーが表示されました。同じキーのアイテムが既に追加されています。私は、サブの最初の行に辞書をクリアしようとしましたが、それでも同じエラーが表示されました。それから、私はまた、それをもう一度追加する前に辞書をクリアしようとしましたが、それでも失敗しました。奇妙なのは、エラーが発生する前に辞書カウントが0であることがメッセージボックスに示されています。

query = "SELECT * FROM transaction WHERE isPaid=0" 
    If myConn.State = ConnectionState.Closed Then 
     myConn.Open() 
    End If 
    If myCommand Is Nothing Then 
     myCommand = New MySqlCommand(query, myConn) 
    Else 
     myCommand.CommandText = query 
    End If 
    myDataReader = myCommand.ExecuteReader 
    If myDataReader.HasRows Then 
     While myDataReader.Read() 
      transactionUnpaid.Enqueue(myDataReader("transaction_id")) 
     End While 
     myDataReader.Close() 
     roomList.Clear() 
     MsgBox(roomList.Count()) 
     For Each a As Integer In transactionUnpaid 
      query = "SELECT * FROM room_ol WHERE transaction_id=" & a 
      If myConn.State = ConnectionState.Closed Then 
       myConn.Open() 
      End If 
      If myCommand Is Nothing Then 
       myCommand = New MySqlCommand(query, myConn) 
      Else 
       myCommand.CommandText = query 
      End If 
      myDataReader = myCommand.ExecuteReader 
      myDataReader.Read() 
      roomList.Add(myDataReader("room_id"), myDataReader("transaction_id")) 
      myDataReader.Close() 
     Next 
    End If 
    If Not myDataReader.IsClosed Then 
     myDataReader.Close() 
    End If 

答えて

0

FabioJens、およびBugsに感謝します。問題は私がtransactionUnpaid Queueをクリアしなかったことです。FormMainをもう一度呼び出すと、キュー内で許可されているいくつかの重複した項目がエンキューされ、エラーが複数回挿入されました。

関連する問題