Fermeture d'un DataReader !
Bonjouur,
J'ai un problème avec mon combobox.
Je vous explique !
J'ai un formulaire qui contient une liste (listbox1), un combobox1 ..
La listbox1 contient le numéro des bons de livraison ..
Quand je clique dessus j'ai le numéro de la commande (liée a ce bon de livraison) sur le combobox1 & automatiquement j'obtient la date de la commande & le numéro du fournisseur (puisque j'ai l'id commande).
Coté BD j'ai la table commande qui contient: l'id commande, la date de la commande, l'id fournisseur & qui est liée a la table BL qui contient: l'IDBL, la date du BL ainsi que l'IDcommande.. (je sais pas si ça vas vous être util ça !! mais pour comprendre un peu mes requetes ^^)
Coté développement
Mon code est le suivant:
Quand je clic sur la listbox1 cad dans l'événement MouseDoubleClick j'ai mis le code suivant afin d'extraire le numéro de la commande que j'ai selectionné (qui est IDcommande lié au BL que j'ai cliqué dessus):
Code:
1 2 3 4 5 6 7
| com.CommandText = "select IDcommande from BL where IDBL = '" & ListBox1.SelectedItem & "'"
dtr = com.ExecuteReader
If dtr.HasRows = True Then
dtr.Read()
ComboBox1.Text = dtr(0)
End If
dtr.Close() |
Et sur l'événement Textchanged du combobox1, j'ai mis le code qui me permet d'afficher automatiquement (a partir du changement du combobox) la date de la commande & le numéro du fournisseur. Ce qui donne:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| com.Connection = Cnx
com.CommandText = "select DateCommande from Commandes where IDcommande = '" & ComboBox1.Text & "'"
dtr = com.ExecuteReader
If dtr.HasRows = True Then
dtr.Read()
Label11.Text = dtr(0)
End If
dtr.Close()
com.Connection = Cnx
com.CommandText = "select IDfournisseur from Commandes where IDcommande = '" & ComboBox1.Text & "'"
dtr = com.ExecuteReader
If dtr.HasRows = True Then
dtr.Read()
Label22.Text = dtr(0)
End If
dtr.Close() |
Jusque là je pense que tout est clair.
Maintenant, quand je veux ajouter un bon de livraison je lui associe une commande à partiir du combobox1. Ce dernier contient tous les numéros de la commande. Suivant ce code: (dans l'événement Load)
Code:
1 2 3 4 5 6 7 8 9 10
| Cnx.Open()
com.Connection = Cnx
com.CommandText = "select IDcommande from Commandes"
dtr = com.ExecuteReader
If dtr.HasRows = True Then
While dtr.Read = True
ComboBox1.Items.Add(dtr(0))
End While
End If
dtr.Close() |
Mon problème se pose ici. Quand je séléctionne une valeur du combobox1, je suis cencé avoir la date & le nom du fournisseur.Mais puisque ce combobox1 est déjà utilisé dans l'événement Load je pense (enfin c'est ce que j'ai pu tiré comme remarque) j'obtient l'erreur suivante:
Un DataReader associé à cette commande est déjà ouvert. Il doit d'abord être fermé.
Je sais pas si quelqu'un pourra m'aider pour résoudre ce problème !!
Mercii d'avance !