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().
Private Sub ComboBox_Scenario_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox_Scenario.SelectedIndexChangedposit = InStr(1, ComboBox_Scenario.Text,
"," , vbTextCompare)positSupAndInf = InStr(1, ComboBox_Scenario.Text,
"<" , vbTextCompare) If posit <> 0 Then nomScenario = Mid(ComboBox_Scenario.Text, 1, posit - 1)
PrenomScenario = Mid(ComboBox_Scenario.Text, posit + 2)
PseudoScenario =
""
ElseIf positSupAndInf <> 0 Then nomScenario = ComboBox_Scenario.SelectedItem
PrenomScenario =
"" PseudoScenario =
""
Else nomScenario = ComboBox_Scenario.SelectedItem
PrenomScenario =
"" PseudoScenario = ComboBox_Scenario.SelectedItem
End If
Dim Cmd As New SqlCommand With Cmd.CommandText = (
"Select IdAuteur From Auteurs Where NomAuteur=('" & nomScenario & "') and PrenomAuteur = ('" & PrenomScenario & "') and PseudoAuteur = ('" & PseudoScenario & "') ;" ).CommandType = CommandType.Text
.Connection = MaConnectionSql
End With Cmd.ExecuteNonQuery() ------------------------Problème--------------------
IdScenario = Cmd.ExecuteScalar
MessageBox.Show(IdScenario)
End Sub ----------------------------------------------------------------------------------------------------------------------------------------------
PrivateSub DataGridViewAlbums_CellClick(ByVal sender AsObject, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridViewAlbums.CellClickDim i AsIntegeri = DataGridViewAlbums.CurrentRow.Index
CBox_Serie.Text = DataGridViewAlbums.Item(0, i).Value
TextBox_Titre.Text = DataGridViewAlbums.Item(2, i).Value
TextBox_Titre.Text = TextBox_Titre.Text.Replace(
"'", "''")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
EndWithcmd.ExecuteNonQuery()
Dim myReader As SqlDataReader = cmd.ExecuteReader()DoWhile 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()
EndSub----------------------------------------------------------------------------------------------------------------------------------------------
Sub scenario()Dim Scenario AsStringDim Cmd AsNew SqlCommandWith Cmd.CommandText =
" Select NomAuteur, PrenomAuteur From Albums A, Auteurs Au where IdAlbum = " & IdAlbum & " and Au.IdAuteur = A.IdScenario".CommandType = CommandType.Text
.Connection = MaConnectionSql
EndWithCmd.ExecuteNonQuery()
Dim myReader As SqlDataReader = Cmd.ExecuteReader()DoWhile myReader.Read()MessageBox.Show(myReader.GetString(0))
MessageBox.Show(myReader.GetString(1))
Scenario = myReader.GetString(0) &
", " & myReader.GetString(1)MessageBox.Show(Scenario)
ComboBox_Scenario.Text = Scenario
LoopmyReader.Close()
EndSub