OVH Cloud OVH Cloud

comment passer un paramètre date à sql server

4 réponses
Avatar
gdon
Bonjour
j'essaie de passer une date à une proc Stockée mais j'ai toujours la même
erreur :
"fonctionnalité optionnelle non implémentée"

voici mes divers essais :
PS.Parameters.Append .CreateParameter("dateavis", adDDate, adParamInput, 8,
Date)
PS.Parameters.Append .CreateParameter("dateavis", adDBDate, adParamInput, 8,
Date)
PS.Parameters.Append .CreateParameter("dateavis", cdate(adchar),
adParamInput, 8,
Format(Date, "dd/mm/yyyy"))

voici la déclaration dans ma PS :
@dateavis as datetime

si quelqu'un a une solution je suis preneuse !
Merci d'avance

4 réponses

Avatar
david
Salut,

Je ne voix pas pourquoi utiliser un createParameter pour passer ta date
à ta PS.

Fait plutôt comme ceci (plus court):
set myRst = myCnx.Execute("MaPS '" + format(Date(), "yyyy/dd/mm") +
"'")
Il y a deux converstion automatique en SQL serveur vers un DateTime :
- text -> date : cas présenté. Dans ce cas, il est plus prudent
d'écrire la date dans le format internationnal yyyy/dd/mm.
- nombre -> date :il faudra convertir la date en un nombre de jours
écoulés depuis le 1 janvier 1900. Mais dans ce cas, attention suivant
les versions de language, de système 1 n'a pas la même valeur (1
janvier, 31 décembre, ...). Fait un test pour voir avec ton analyseur
de requête SQL.

Voila, A+
Dvd
gdon a écrit :

Bonjour
j'essaie de passer une date à une proc Stockée mais j'ai toujours la même
erreur :
"fonctionnalité optionnelle non implémentée"

voici mes divers essais :
PS.Parameters.Append .CreateParameter("dateavis", adDDate, adParamInput, 8,
Date)
PS.Parameters.Append .CreateParameter("dateavis", adDBDate, adParamInput, 8,
Date)
PS.Parameters.Append .CreateParameter("dateavis", cdate(adchar),
adParamInput, 8,
Format(Date, "dd/mm/yyyy"))

voici la déclaration dans ma PS :
@dateavis as datetime

si quelqu'un a une solution je suis preneuse !
Merci d'avance


Avatar
gdon
En fait j'ai oublié de préciser que j'avais plusieurs paramètres à envoyer à
ma PS.
Mais pour le moment le seul qui me pose des soucis c'est la date.

set myRst = myCnx.Execute("MaPS '" + format(Date(), "yyyy/dd/mm") +
"'")

Puis-je utiliser cette syntaxe avec plusieurs paramètres ?

"david" a écrit :

Salut,

Je ne voix pas pourquoi utiliser un createParameter pour passer ta date
à ta PS.

Fait plutôt comme ceci (plus court):
set myRst = myCnx.Execute("MaPS '" + format(Date(), "yyyy/dd/mm") +
"'")
Il y a deux converstion automatique en SQL serveur vers un DateTime :
- text -> date : cas présenté. Dans ce cas, il est plus prudent
d'écrire la date dans le format internationnal yyyy/dd/mm.
- nombre -> date :il faudra convertir la date en un nombre de jours
écoulés depuis le 1 janvier 1900. Mais dans ce cas, attention suivant
les versions de language, de système 1 n'a pas la même valeur (1
janvier, 31 décembre, ...). Fait un test pour voir avec ton analyseur
de requête SQL.

Voila, A+
Dvd
gdon a écrit :

> Bonjour
> j'essaie de passer une date à une proc Stockée mais j'ai toujours la même
> erreur :
> "fonctionnalité optionnelle non implémentée"
>
> voici mes divers essais :
> PS.Parameters.Append .CreateParameter("dateavis", adDDate, adParamInput, 8,
> Date)
> PS.Parameters.Append .CreateParameter("dateavis", adDBDate, adParamInput, 8,
> Date)
> PS.Parameters.Append .CreateParameter("dateavis", cdate(adchar),
> adParamInput, 8,
> Format(Date, "dd/mm/yyyy"))
>
> voici la déclaration dans ma PS :
> @dateavis as datetime
>
> si quelqu'un a une solution je suis preneuse !
> Merci d'avance




Avatar
david
salut,

sans aucun problème, la syntaxe générale d'appel à une procédure
stockée en SQL (puisque c'est ce qui est écrit comme 1° paramètre
du execute):
Ident_ProcStock [[param1],param2[,...]]]
Tu peux donc utiliser autant de paramètres que le nécessite ta
ProcStock (mais dans le bon ordre).
N'oublie pas que l'écriture des paramètres doit respectger le
paramètrage de langage de ton SQL.
Avantage par rapport au positionnement des parameters, si tu en oublies
un, SQL te renvoi une erreur.

A+
David
gdon a écrit :

En fait j'ai oublié de préciser que j'avais plusieurs paramètres à envoyer à
ma PS.
Mais pour le moment le seul qui me pose des soucis c'est la date.

set myRst = myCnx.Execute("MaPS '" + format(Date(), "yyyy/dd/mm") +
"'")

Puis-je utiliser cette syntaxe avec plusieurs paramètres ?

"david" a écrit :

> Salut,
>
> Je ne voix pas pourquoi utiliser un createParameter pour passer ta date
> à ta PS.
>
> Fait plutôt comme ceci (plus court):
> set myRst = myCnx.Execute("MaPS '" + format(Date(), "yyyy/dd/mm") +
> "'")
> Il y a deux converstion automatique en SQL serveur vers un DateTime :
> - text -> date : cas présenté. Dans ce cas, il est plus prudent
> d'écrire la date dans le format internationnal yyyy/dd/mm.
> - nombre -> date :il faudra convertir la date en un nombre de jours
> écoulés depuis le 1 janvier 1900. Mais dans ce cas, attention suiva nt
> les versions de language, de système 1 n'a pas la même valeur (1
> janvier, 31 décembre, ...). Fait un test pour voir avec ton analyseur
> de requête SQL.
>
> Voila, A+
> Dvd
> gdon a écrit :
>
> > Bonjour
> > j'essaie de passer une date à une proc Stockée mais j'ai toujours la même
> > erreur :
> > "fonctionnalité optionnelle non implémentée"
> >
> > voici mes divers essais :
> > PS.Parameters.Append .CreateParameter("dateavis", adDDate, adParamInp ut, 8,
> > Date)
> > PS.Parameters.Append .CreateParameter("dateavis", adDBDate, adParamIn put, 8,
> > Date)
> > PS.Parameters.Append .CreateParameter("dateavis", cdate(adchar),
> > adParamInput, 8,
> > Format(Date, "dd/mm/yyyy"))
> >
> > voici la déclaration dans ma PS :
> > @dateavis as datetime
> >
> > si quelqu'un a une solution je suis preneuse !
> > Merci d'avance
>
>


Avatar
gdon
Bonjour,
je sais j'ai mis du temps pour tester !!!
MAIS MERCI ça marche bien sauf que ...
voilà cette méthode me pose pb pour passer des champs texte qui possèdent
des caractères tel que l'apostrophe DONC j'ai trouvé une autre solution. J'en
profite pour ceux que ça pourrait intéresser de mettre le passage d'un
décimal.

Set Ps_w = New ADODB.Command

With Ps_w
.CommandType = adCmdStoredProc
.CommandText = "[ps_insert_absence]"
.ActiveConnection = db
End With

Dim MonParam3 As ADODB.Parameter
Set MonParam3 = New ADODB.Parameter
With MonParam3
.Name = "@abs_nomagt"
.Direction = adParamInput
.Type = adVarChar
.Size = 25
.Value = Trim(GridDetail.Columns(11).Text)
End With
Ps_w.Parameters.Append MonParam3

Dim MonParam6 As ADODB.Parameter
Set MonParam6 = New ADODB.Parameter
Dim maDate As String
maDate = Date
With MonParam6
.Name = "@abs_date_init"
.Direction = adParamInput
.Type = adVarChar
.Size = 20
.Value = maDate
End With
Ps_w.Parameters.Append MonParam6

Dim MonParam13 As ADODB.Parameter
Set MonParam13 = New ADODB.Parameter
With MonParam13
.Name = "@abs_nbjour"
.Direction = adParamInput
.Type = adDouble
.Value = CDbl(Replace(GridDetail.Columns(6).Text, ".", ","))
End With
Ps_w.Parameters.Append MonParam13

Ps_w.Execute


"david" a écrit :

salut,

sans aucun problème, la syntaxe générale d'appel à une procédure
stockée en SQL (puisque c'est ce qui est écrit comme 1° paramètre
du execute):
Ident_ProcStock [[param1],param2[,...]]]
Tu peux donc utiliser autant de paramètres que le nécessite ta
ProcStock (mais dans le bon ordre).
N'oublie pas que l'écriture des paramètres doit respectger le
paramètrage de langage de ton SQL.
Avantage par rapport au positionnement des parameters, si tu en oublies
un, SQL te renvoi une erreur.

A+
David
gdon a écrit :

> En fait j'ai oublié de préciser que j'avais plusieurs paramètres à envoyer à
> ma PS.
> Mais pour le moment le seul qui me pose des soucis c'est la date.
>
> set myRst = myCnx.Execute("MaPS '" + format(Date(), "yyyy/dd/mm") +
> "'")
>
> Puis-je utiliser cette syntaxe avec plusieurs paramètres ?
>
> "david" a écrit :
>
> > Salut,
> >
> > Je ne voix pas pourquoi utiliser un createParameter pour passer ta date
> > à ta PS.
> >
> > Fait plutôt comme ceci (plus court):
> > set myRst = myCnx.Execute("MaPS '" + format(Date(), "yyyy/dd/mm") +
> > "'")
> > Il y a deux converstion automatique en SQL serveur vers un DateTime :
> > - text -> date : cas présenté. Dans ce cas, il est plus prudent
> > d'écrire la date dans le format internationnal yyyy/dd/mm.
> > - nombre -> date :il faudra convertir la date en un nombre de jours
> > écoulés depuis le 1 janvier 1900. Mais dans ce cas, attention suivant
> > les versions de language, de système 1 n'a pas la même valeur (1
> > janvier, 31 décembre, ...). Fait un test pour voir avec ton analyseur
> > de requête SQL.
> >
> > Voila, A+
> > Dvd
> > gdon a écrit :
> >
> > > Bonjour
> > > j'essaie de passer une date à une proc Stockée mais j'ai toujours la même
> > > erreur :
> > > "fonctionnalité optionnelle non implémentée"
> > >
> > > voici mes divers essais :
> > > PS.Parameters.Append .CreateParameter("dateavis", adDDate, adParamInput, 8,
> > > Date)
> > > PS.Parameters.Append .CreateParameter("dateavis", adDBDate, adParamInput, 8,
> > > Date)
> > > PS.Parameters.Append .CreateParameter("dateavis", cdate(adchar),
> > > adParamInput, 8,
> > > Format(Date, "dd/mm/yyyy"))
> > >
> > > voici la déclaration dans ma PS :
> > > @dateavis as datetime
> > >
> > > si quelqu'un a une solution je suis preneuse !
> > > Merci d'avance
> >
> >