Un DataReader associé à cette commande est déjà ouvert. Il doit d'abord être fer
guice11
Messages postés52Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention17 décembre 2009
-
8 juil. 2009 à 13:51
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
8 juil. 2009 à 21:30
Je suis en train de faire une BDtheque et j'ai un tit soucis au niveau des auteurs. Je voudrais que quand je sélectionne une BD dc une ligne du datagridview associé aux albums, il y ait toutes les informations sur cette BD. Le problème se situe pour les auteurs car je ne les affiche pas dans le datagridview ( je sais pas cmt faire pr les afficher comme ya 3 tables différentes pr les auteurs :s). Donc je sélectionne une ligne (DataGridViewAlbums_CellClick....) dans cet événement, la procédure scenario() est appelé et ensuite celle ci : ComboBox_Scenario_SelectedIndexChanged(). Le problème est
"Un DataReader associé à cette commande est déjà ouvert. Il doit d'abord être fermé." de la ligne Cmd.ExecuteNonQuery() de ComboBox_Scenario_SelectedIndexChanged().
Sub
----------------------------------------------------------------------------------------------------------------------------------------------
Private
Sub DataGridViewAlbums_CellClick(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.DataGridViewCellEventArgs)
Handles DataGridViewAlbums.CellClick
Dim i
As
Integeri = DataGridViewAlbums.CurrentRow.Index
"'",
"''")
With cmd.CommandText " Select Numero, LibCollection, LibEditeur, NbPlanches, Format, A.IdBEL, DepotLegal, Cycle, ISBN, IdAlbum From Albums A, Collection C, serie S, Editeur E where A.IdCollection C.IdCollection and E.IdEditeur = A.IdEditeur and TitreAlbum = '" & TextBox_Titre.Text &
"' and S.Titre = '" & CBox_Serie.Text &
"' ".CommandType = CommandType.Text
.Connection = MaConnectionSql
End
Withcmd.ExecuteNonQuery()
Dim myReader
As SqlDataReader = cmd.ExecuteReader()
Do
While myReader.ReadTextBox_No.Text = myReader.GetInt32(0)
CBox_Collection.Text = myReader.GetString(1)
CBox_Editeur.Text = myReader.GetString(2)
TextBox_NbPlanches.Text = myReader.GetInt32(3)
CBox_Format.Text = myReader.GetString(4)
TextBox_BEL.Text = myReader.GetString(5)
TextBox_DepotLegal.Text = myReader.GetString(6)
TextBox_Cycle.Text = myReader.GetString(7)
TextBox_ISBN.Text = myReader.GetString(8)
IdAlbum = myReader.GetInt32(9)
TextBox_Titre.Text = TextBox_Titre.Text.Replace(
"''",
"'")
LoopmyReader.Close()
scenario()
End
Sub----------------------------------------------------------------------------------------------------------------------------------------------
Sub scenario()
Dim Scenario
As
String
Dim Cmd
As
New SqlCommand
With Cmd.CommandText " Select NomAuteur, PrenomAuteur From Albums A, Auteurs Au where IdAlbum " & IdAlbum & " and Au.IdAuteur A.IdScenario".CommandType CommandType.Text
.Connection = MaConnectionSql
End
WithCmd.ExecuteNonQuery()
Dim myReader
As SqlDataReader = Cmd.ExecuteReader()
Do
While myReader.Read()MessageBox.Show(myReader.GetString(0))
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 8 juil. 2009 à 21:30
Tes lignes cmd.ExecuteNonQuery ne servent absolument à rien.
ExecuteNonQuery est utilisé pour executer des requettes qui ne renvoient aucun résultat (requette UPDATE ou INERT par exemple)
Pour des requettes SELECT il afut utiliser soit ExecuteReader soit ExecuteScalar, qui elle ne renvoie que la premèire colonne de la première ligne du jeu de résultats
---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #