Bonjour à tous ceux qui voudront bien m'aider (et en moindre mesure aux autres )
Comme ma présence doit le trahir, j'ai un petit problème que j'aimerai vous soumettre dans l'espoir que vous pouriez éclairer ma lanterne.
Je dévellope une procédure stockée sous VB.net pour une base de donné SQL Serveur 2005, et je me sers de Visual Studio Pro 2005 pour déployer mes procédures stockées sur le serveur SGBD.
Je vous soumet le code suivant qui a pour but de selectionner le contenue d'une table, et dans remplir une seconde avec les réponses générées par ma première requête.
Ca donne cela :
Cela me génère l'erreur suivante quand j'appel cette procédure sous SQL Serveur 2005 :
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 Imports System Imports System.Data Imports System.Data.SqlClient Imports System.Data.SqlTypes Imports Microsoft.SqlServer.Server Partial Public Class StoredProcedures <Microsoft.SqlServer.Server.SqlProcedure()> _ Public Shared Sub transfertResultat(ByVal unnocourse As Integer) Using maConnexion As New SqlConnection("context connection = true") maConnexion.Open() Dim maCommande As SqlCommand = New SqlCommand("SELECT * FROM dbo.participer WHERE nocourse = " & unnocourse & " ORDER BY tpsrealise", maConnexion) ' SqlContext.Pipe.ExecuteAndSend(maCommande) Dim reader As SqlDataReader = maCommande.ExecuteReader Dim i As Integer i = 1 While reader.Read() Dim lacommande As SqlCommand = New SqlCommand("INSERT INTO dbo.classement (idcourse, idskieur, classement) VALUES (" & reader.GetValue(1).ToString & "," & reader.GetValue(0).ToString & "," & i & ")", maConnexion) lacommande.ExecuteNonQuery() i = i + 1 End While reader.Close() maConnexion.Close() End Using End Sub End Class
Je n'ai aucune idée d'où cela peut provenir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Msg 6522, Niveau 16, État 1, Procédure transfertResultat, Ligne 0 Une erreur .NET Framework s'est produite au cours de l'exécution de la routine ou de la fonction d'agrégation définie par l'utilisateur 'transfertResultat' : System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first. System.InvalidOperationException: at System.Data.SqlClient.SqlInternalConnectionSmi.ValidateConnectionForExecute(SqlCommand command) at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command) at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at SqlServerProject1.StoredProcedures.transfertResultat
Je vous remercie d'avance sur l'aide que vous pouriez me fournir aussi modeste soit elle.
Partager