mon problème est que je vais lire des enregistrements dans la db, j'ouvre donc un reader, je parcour ce reader et je dois inserer ces données dans une table.
Mais il refuse de faire mon myCommand3.ExecuteNonQuery() parceque j'ai un reader d'ouvert ... mais j'ai besoin de ce reader vu qu'il contient les infos que je dois inserer

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
Try
                cnn.Open()
                myCommand = New SqlCommand("DELETE FROM A_fait_temp", cnn)
                myCommand.ExecuteNonQuery()
 
                myCommand2 = New SqlCommand(str_query, cnn)
                Dim myReader As SqlDataReader = myCommand2.ExecuteReader()
                myCommand3 = New SqlCommand("", cnn)
                If myReader.HasRows <> False Then
                    Do While myReader.Read()
 
                        myCommand3.CommandText = "INSERT INTO A_fait_temp (Heures,Nom) VALUES (@h,@n)"
                        With myCommand3.Parameters
                            .Add(New SqlParameter("@h", SqlDbType.Int, 0))
                            .Add(New SqlParameter("@n", SqlDbType.Char, 0))
                        End With
 
                        With myCommand3
                            .Parameters("@h").Value = myReader.GetValue(0)
                            .Parameters("@n").Value = myReader.GetValue(1)
                        End With
 
                        myCommand3.ExecuteNonQuery()
 
                    Loop
                End If
            Catch ex As Exception
                px.Text = ex.ToString
            End Try
voici l'exception

System.InvalidOperationException: Un DataReader associé à cette commande est déjà ouvert. Il doit d'abord être fermé.
à System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command)
à System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)
à System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
à System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
à System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
à WebApplication6.WebForm1.Calcule() dans C:\Users\u028513.AI\Documents\Visual Studio 2008\Projects\WebApplication6\WebApplication6\Occupation.aspx.vb:ligne 111
Comment faire ?

Merci d'avance