Récupération le résultat d'une requete Sql Server sous DotNet

ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017 - 9 sept. 2013 à 16:41
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017 - 11 sept. 2013 à 15:14
Bonjour,

J'ai un problème, si je peux trouver une issue de sortie. Je travaille sous Visual Studio 2008. J'ai une requête SQL Server qui fait Appel à une fonction, qui est dans la base des données. La fonction s'exécute, mais le problème qui se pose ce que je tiens à récupérer le résultat de la fonction pour l'utiliser dans la suite de l'exécution de mon application. Please, je ne parviens pas à récupérer le résultat de ma fonction. Voici le brun de mon code

Sub Converse()
Cdf_Code = "$"
Dim Montant As Double
DatOper = String.Format("{0}-{1}-{2}", Microsoft.VisualBasic.Right(date_Operation.Text, 4), Microsoft.VisualBasic.Mid(date_Operation.Text, 4, 2), Microsoft.VisualBasic.Left(date_Operation.Text, 2))
Dim fct_Devis As New SqlCommand(String.Format(" dbo.fct_Devise '{0}','{1}'", DatOper, Cdf_Code), Cnx)
If Cnx.State = ConnectionState.Closed Then
Cnx.Open()
End If
Try
fct_Devis.ExecuteNonQuery()
'Je veux récupérer le résultat de cette fonction dans une variable
Catch ex As Exception
MsgBox(ex.Message.ToString)
Finally
End Try
End Sub

3 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 sept. 2013 à 20:40
d'abord

Dim fct_Devis As New SqlCommand(String.Format(" dbo.fct_Devise '{0}','{1}'", DatOper, Cdf_Code), Cnx) 


je ne vois pas de requete sql ici (smiley tete confus)
1
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
11 sept. 2013 à 13:08
Bonjour. Loin de moi le soucis de vous fâcher, franchement je m'excuse. Au fait la ligne en question me permet d'envoyer à ma fonction qui est sur la base des Données. S'il faut écrire la requête SQL directement dans mon code je n'aurais pas tant de problème parce que je le fais souvent, mais ici, je voulais juste ramener tout au niveau de la base des données et qu'à partir de mon code j'ai juste à appeler les différentes procédures stockées ou fonction sur ma base.
Donc cette ligne me permet juste d'envoyer à ma fonction des paramètres.
Une fois de plus je m'excuse beaucoup pour ce dérangement. Merci beaucoup pour votre disponibilité de temps. Je pense dans tout çà que c'est peut être moi qui pose mal le problème.
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
11 sept. 2013 à 13:15
Mais dans tout çà je dois faire de mon mieux pour bien présenter le problème.

Sub Devise()
Dim Devise_Adaptator As New SqlDataAdapter(String.Format("Select * From dbo.Cours_Change Where Reference='{0}' And Date_Taux =convert(datetime,'{1}',103)", Cdf_Code, Me.date_Operation.Text), Cnx)
Try
Dim Devis_Set As New DataSet("Cours_Change")
Devise_Adaptator.Fill(Devis_Set, "Cours_Change")
If Devis_Set.Tables(0).Rows.Count > 0 Then
Me.Montant_Devise.Text = Format(CDbl(Me.Montant_Cdf.Text) / (Devis_Set.Tables(0).Rows(0).Item("Taux")), "####0.00")
Me.Motif_Operation.Focus()
Else

End If
Catch ex As Exception
MsgBox(ex.Message.ToString)
Finally
End Try
End Sub

Ceci est une procédure que j'utilise et qui me donne satisfaction. Seulement je veux que tout ceci se passe sur la base des données et au retour j'ai besoin de garnir une variable de la valeur de traitement. C'est comme çà que j'ai créé une fonction que je garni par cette ligne
Dim fct_Devis As New SqlCommand(String.Format(" dbo.sp_Devise '{0}','{1}'", DatOper, Cdf_Code), Cnx)
Tout ceci dans l'attente d'une réponse après traitement, c'est malheureusement ce que je ne parviens pas à obtenir.
Donc mon problème, ce que je veux pour tout ce qui est traitement lié à la base des données soit fait directement sur la base et au retour je me contente seulement de la réponse pour continuer l'exécution de mon application. Merci, je pense être clair cette fois ci. Une fois encore merci Beaucoup.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 sept. 2013 à 13:46
Non pas du tout faché

je ne connais pas les procedures stockées

après avoir regardé dans des tutoriels
une simple question ou écris tu la procedure stocké ?
dans la class du vb.net ?
donc tu as une stored procedure avec des parametres
CREATE PROCEDURE BLABLA param1 , param2
pour appeler ta procedure

EXEC BLABLA param1 = , param2 =

http://www.mssqltips.com/sqlservertutorial/162/how-to-create-a-sql-server-stored-procedure-with-parameters/
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
11 sept. 2013 à 14:32
J'écris la procédure, mais pas dans la Class Net. je le fais directement sur la base des données et dans DotNet je prends seulement le soin de lui envoyer les paramètres et me servir enfin de la résolution.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
9 sept. 2013 à 19:50
Salut
Pas compris
si fct_Devis.ExecuteNonQuery() donc elle ne retourne aucune
réponse non ?
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
10 sept. 2013 à 10:40
Bonjour. Merci de votre réaction, mais je continue à etre coincé. Je ne parviens pas à récupérer le résultat de cette commande SqlCommand. Je n'ai malheureusement rien compris de votre réaction. fct_Devis.ExecuteNonQuery() donc elle ne retourne aucune
réponse non ?
Quand j'exécute la requete sous DotNet, elle tourne sans problème, mais je n'ai pas la réponse.
Bref, comment récupérer le résultat d'une requete adressée à la Basa des Données en passant par une procédure stockée ou par une fonction.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 sept. 2013 à 12:06
ExecuteNonQuery convient à une requete insert;update,delete
donc elle ne rend aucune valeur si
retourne le nombre de lignes affectées.
http://msdn.microsoft.com/fr-fr/library/system.data.sqlclient.sqlcommand.executenonquery.aspx?cs-save-lang=1&cs-lang=vb
quelle réponse attends tu de fct_Devis.ExecuteNonQuery()
possible que je n'ai pas compris ce que tu demandes
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
10 sept. 2013 à 15:39
Salut. je m'excuse pour ce qui peut paraitre un dérangement et plus encore Merci pour l'éclaircissement à propos de l'utilisation de ExecuteNonQuery. Mais quand je recours à SqlDataReader , le message que j'ai par contre , c'est qu'il n y a pas de lignes affectées. Au fait mon problème, c'est de récupérer le résultat de ma requête pour utilisation dans la suite de mon application.
Pour etre clair, comment récupérer le Return , dans mon application DotNet, d'une fonction logée sur ma base SqlServer. Merci une fois encore pour la disposition.
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
10 sept. 2013 à 15:48
Je comprends bien qu'avec executeNonQuery, mais comment recevoir de l'exécution de ma fonction le résultat de son traitement?? Merci d'avance pour votre disponibilité.
je ne sais pas en plus si mon problème est mal posé.
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
10 sept. 2013 à 15:54
Je viens seulement de comprendre qu'avec executeNonQuery et autres ExecuteReader je ne suis pas tiré d'affaire.
Je veux affecter le résultat de ma requête dans une variable pour utilisation. Comment alors Exécute cette requête dans l'espoir que le résultat de son traitement me soit retourné.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
10 sept. 2013 à 12:02
Bonjour, si tu n'as qu'une donnée, un ExecuteScalar() fera l'affaire, sinon utilise un SqlDataReader avec l'aide d'un ExecuteReader().

ExecuteNonQuery() permet d'executer un requête, et retourne uniquement le nombre de lignes affectées
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
10 sept. 2013 à 15:45
Merci pour la réponse. J'ai déjà utilisé SqlDataReader avec ExecuteReader bien sur, mais je ne parviens pas à récupérer , dans mon application DotNet,le Return de ma fonction logée dans ma Base SqlServer. Donc la fonction n'est pas dans mon application,mais dans la base et mon application ne fait que l'executer dans le but de récupérer le résultat. Mais en utilisant SqlDataReader, j'ai un message d'erreur comme quoi aucune ligne affectée, ce qui est normale car ma fonction consulte et prend les informations dans la table. Et c'est de cette information que j'ai bien besoin. Merci pour votre disponibilité.Je serai ravi d'avoir une issue de votre part.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
11 sept. 2013 à 08:32
Même si ta fonction est sur ta base SQL, je ne vois pas pourquoi tu ne pourrais pas récuperer la valeur dans un objet .NET ...

Montre nous un code autre que celui que tu as posté...
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
11 sept. 2013 à 13:51
Cette discussion n'a pas été vaine car je viens d'atteindre l'objectif. Mon problème est résolu, j'ai le résultat escompté. J'ai péché par le fait de ne pas avoir le problème en terme d'Objet Net qui récupèrerait le résultat. Au fait le problème ce que je ne disposais pas au préalable d'une variable pour récupérer le résultat en occurrence Un objet qui gère cet état de chose. Franchement merci énormément. Avec ce grand pas qui n' en est pas un je me dois de plus me concentrer sur le traitement directement sur la base des données. Promis. En passant si vous avez des liens qui parlent plus sur les procédures Stockées, Fonctions et autres Triggers.
Merci pour la disponibilité.
0
ChuluNoel Messages postés 20 Date d'inscription vendredi 5 avril 2013 Statut Membre Dernière intervention 20 juin 2017
11 sept. 2013 à 15:14
Merci pour cet échange qui m'a aidé et je suis content de vous annoncé que je suis parvenu. Le grand problème ce que je devais récupérer le résultat du traitement de ma fonction dans un Objet .Net. En occurrence un DataReader. Et quand j'ai fait çà, j'ai eu le résultat. Il m'a fallu cet échange pour amener un peu d'éclaircissement dans ce que je fais. Merci beaucoup bien que ce n'est pas suffisant, le mot Merci.
0
Rejoignez-nous