Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création d'un webservice avec renvoi du résultat d'une procédure stockée.

2 réponses
Avatar
Matthieu
Bonjour,

J'ai créé un service web sous Visual Studio 2003. J'exécute une requête sql
et affiche le résultat en XML.



<WebMethod(Description:= "bla bla en test")> _

Public Function GetAllResultsWithSQLQuery() As DataSet



Dim conn As New SqlConnection("machaine")

Dim sql As String = "SELECT bla bla WHERE MiseEnLigne = 1 AND
(CONVERT(datetime, DateFin) >= '12/05/2005') ORDER BY DateFin DESC"



Dim myCommand As New SqlDataAdapter(sql, conn)

Dim Results As New DataSet



Try

myCommand.Fill(Results, "Results")


Catch exc As Exception

Console.WriteLine(exc.Message)

End Try

conn.Close()

Return Results

End Function





Cette requête fonctionne très bien. Tout est renvoyé correctement. Un beau
fichier XML. :)

J'essaye de convertir cette requête en procédure stockée SQL Server.



Dans SQL SERVER, j'ai donc la procédure suivante :



CREATE PROCEDURE AppelsResultsSuivantDate @ParamDateDuJour DateTime AS

SELECT blabla WHERE MiseEnLigne = 1

AND (CONVERT(datetime, DateFin) >= @ParamDateDuJour)

ORDER BY DateFin DESC



Mon code sous Visual Studio est :



<WebMethod(Description:= _

"Cette méthode de services web XML (...) ::en test")> _

Public Function GetAllResultsWithProcStock(ByVal strDateDuJour As
Date) As DataSet



Dim conn As New SqlConnection("ma chaine")

Dim daResultsAs SqlDataAdapter

Dim dsResults As New DataSet

Dim workParam As SqlParameter = Nothing



'appelle la procédure stockée

daResults = New SqlDataAdapter("AppelsResultsSuivantDate", conn)



'ajoute le paramêtre d'entrée de la date

workParam = New SqlParameter("@ParamDateDuJour",
System.Data.SqlDbType.DateTime)



workParam.Direction = ParameterDirection.Input

workParam.Value = (strDateDuJour)

daResults.SelectCommand.Parameters.Add(workParam)



Try

'exécute la procédure stockée et remplit un dataset

daResults.Fill(dsResults, "MonResultat")

Catch exc As Exception

Console.WriteLine(exc.Message)

End Try



conn.Close()

Return dsResults

End Function



Quand je teste l'appli, j'ai beau tester mes entrées de date, rien à faire.
J'obtiens ça :



<?xml version="1.0" encoding="utf-8" ?>

- <DataSet xmlns="http://tempuri.org/MonWebService01/AfficheDonnees">

- <xs:schema id="NewDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

- <xs:element name="NewDataSet" msdata:IsDataSet="true"
msdata:Locale="fr-FR">

- <xs:complexType>

<xs:choice maxOccurs="unbounded" />

</xs:complexType>

</xs:element>

</xs:schema>

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" />

</DataSet>



Je ne comprends pas pourquoi ça ne fonctionne plus ! Quelqu'un a une idée ?
J'imagine que ça vient du format de date... Mais j'ai aussi essayé en
mettant une valeur string mais sans succès !

Merci par avance,

2 réponses

Avatar
Paul Bacelar
Je pense que vous devez specifier le type de votre requête.

daResults.SelectCommand.CommandType = CommandType.StoredProcedure;

--
Paul Bacelar

"Matthieu" wrote in message
news:#
Bonjour,

J'ai créé un service web sous Visual Studio 2003. J'exécute une requête


sql
et affiche le résultat en XML.



<WebMethod(Description:= "bla bla en test")> _

Public Function GetAllResultsWithSQLQuery() As DataSet



Dim conn As New SqlConnection("machaine")

Dim sql As String = "SELECT bla bla WHERE MiseEnLigne = 1 AND
(CONVERT(datetime, DateFin) >= '12/05/2005') ORDER BY DateFin DESC"



Dim myCommand As New SqlDataAdapter(sql, conn)

Dim Results As New DataSet



Try

myCommand.Fill(Results, "Results")


Catch exc As Exception

Console.WriteLine(exc.Message)

End Try

conn.Close()

Return Results

End Function





Cette requête fonctionne très bien. Tout est renvoyé correctement. Un beau
fichier XML. :)

J'essaye de convertir cette requête en procédure stockée SQL Server.



Dans SQL SERVER, j'ai donc la procédure suivante :



CREATE PROCEDURE AppelsResultsSuivantDate @ParamDateDuJour DateTime AS

SELECT blabla WHERE MiseEnLigne = 1

AND (CONVERT(datetime, DateFin) >= @ParamDateDuJour)

ORDER BY DateFin DESC



Mon code sous Visual Studio est :



<WebMethod(Description:= _

"Cette méthode de services web XML (...) ::en test")> _

Public Function GetAllResultsWithProcStock(ByVal strDateDuJour As
Date) As DataSet



Dim conn As New SqlConnection("ma chaine")

Dim daResultsAs SqlDataAdapter

Dim dsResults As New DataSet

Dim workParam As SqlParameter = Nothing



'appelle la procédure stockée

daResults = New SqlDataAdapter("AppelsResultsSuivantDate", conn)



'ajoute le paramêtre d'entrée de la date

workParam = New SqlParameter("@ParamDateDuJour",
System.Data.SqlDbType.DateTime)



workParam.Direction = ParameterDirection.Input

workParam.Value = (strDateDuJour)

daResults.SelectCommand.Parameters.Add(workParam)



Try

'exécute la procédure stockée et remplit un dataset

daResults.Fill(dsResults, "MonResultat")

Catch exc As Exception

Console.WriteLine(exc.Message)

End Try



conn.Close()

Return dsResults

End Function



Quand je teste l'appli, j'ai beau tester mes entrées de date, rien à


faire.
J'obtiens ça :



<?xml version="1.0" encoding="utf-8" ?>

- <DataSet xmlns="http://tempuri.org/MonWebService01/AfficheDonnees">

- <xs:schema id="NewDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

- <xs:element name="NewDataSet" msdata:IsDataSet="true"
msdata:Locale="fr-FR">

- <xs:complexType>

<xs:choice maxOccurs="unbounded" />

</xs:complexType>

</xs:element>

</xs:schema>

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" />

</DataSet>



Je ne comprends pas pourquoi ça ne fonctionne plus ! Quelqu'un a une idée


?
J'imagine que ça vient du format de date... Mais j'ai aussi essayé en
mettant une valeur string mais sans succès !

Merci par avance,




Avatar
Matthieu
Oups ...

Effectivement. ça fonctionne maintenant !

Merci beaucoup.

"Paul Bacelar" a écrit dans le message
de news: ctfoek$da7$
Je pense que vous devez specifier le type de votre requête.

daResults.SelectCommand.CommandType = CommandType.StoredProcedure;

--
Paul Bacelar

"Matthieu" wrote in message
news:#
Bonjour,

J'ai créé un service web sous Visual Studio 2003. J'exécute une requête


sql
et affiche le résultat en XML.



<WebMethod(Description:= "bla bla en test")> _

Public Function GetAllResultsWithSQLQuery() As DataSet



Dim conn As New SqlConnection("machaine")

Dim sql As String = "SELECT bla bla WHERE MiseEnLigne = 1 AND
(CONVERT(datetime, DateFin) >= '12/05/2005') ORDER BY DateFin DESC"



Dim myCommand As New SqlDataAdapter(sql, conn)

Dim Results As New DataSet



Try

myCommand.Fill(Results, "Results")


Catch exc As Exception

Console.WriteLine(exc.Message)

End Try

conn.Close()

Return Results

End Function





Cette requête fonctionne très bien. Tout est renvoyé correctement. Un
beau
fichier XML. :)

J'essaye de convertir cette requête en procédure stockée SQL Server.



Dans SQL SERVER, j'ai donc la procédure suivante :



CREATE PROCEDURE AppelsResultsSuivantDate @ParamDateDuJour DateTime AS

SELECT blabla WHERE MiseEnLigne = 1

AND (CONVERT(datetime, DateFin) >= @ParamDateDuJour)

ORDER BY DateFin DESC



Mon code sous Visual Studio est :



<WebMethod(Description:= _

"Cette méthode de services web XML (...) ::en test")> _

Public Function GetAllResultsWithProcStock(ByVal strDateDuJour As
Date) As DataSet



Dim conn As New SqlConnection("ma chaine")

Dim daResultsAs SqlDataAdapter

Dim dsResults As New DataSet

Dim workParam As SqlParameter = Nothing



'appelle la procédure stockée

daResults = New SqlDataAdapter("AppelsResultsSuivantDate", conn)



'ajoute le paramêtre d'entrée de la date

workParam = New SqlParameter("@ParamDateDuJour",
System.Data.SqlDbType.DateTime)



workParam.Direction = ParameterDirection.Input

workParam.Value = (strDateDuJour)

daResults.SelectCommand.Parameters.Add(workParam)



Try

'exécute la procédure stockée et remplit un dataset

daResults.Fill(dsResults, "MonResultat")

Catch exc As Exception

Console.WriteLine(exc.Message)

End Try



conn.Close()

Return dsResults

End Function



Quand je teste l'appli, j'ai beau tester mes entrées de date, rien à


faire.
J'obtiens ça :



<?xml version="1.0" encoding="utf-8" ?>

- <DataSet xmlns="http://tempuri.org/MonWebService01/AfficheDonnees">

- <xs:schema id="NewDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

- <xs:element name="NewDataSet" msdata:IsDataSet="true"
msdata:Locale="fr-FR">

- <xs:complexType>

<xs:choice maxOccurs="unbounded" />

</xs:complexType>

</xs:element>

</xs:schema>

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" />

</DataSet>



Je ne comprends pas pourquoi ça ne fonctionne plus ! Quelqu'un a une idée


?
J'imagine que ça vient du format de date... Mais j'ai aussi essayé en
mettant une valeur string mais sans succès !

Merci par avance,