OVH Cloud OVH Cloud

demande explication requete SQL

5 réponses
Avatar
Rahan
Salut a tous

je suis sous sql server 2000

je n utilise pas de proc stockees lors de mes maj, je
fais des requetes parametrees, ma question est pourquoi
ca ne marche pas !

dim decValue=cdec(textbox1.text) 'recup et cast ma value

select * from table
where champs=@champ

cmd.parameter.add
("@champs",sqltype.decimal).value=decValue

dans mon sql j ai du decimal 4,2 cad 2 decimal apres la
virgule

et il me trouve pas ma valeur a cause du . j ai l
impression par contre si je lui passe un string (12,05
par ex)
la c ok !

merci da vance

5 réponses

Avatar
Fred.M.
Bonsoir Rahan,
J'avoue ne pas trop comprendre ta question...

Tu nous parles de mises à jour avec paramètre, mais tu nous montres un
"select * from ...". Donc s'agit t-il réellement d'une récupération
d'enregistrement critériée ou d'une réelle mise à jour ?
Dans le 1er cas, déclare un récordset et affecte lui le résultat de ta
requête:
set Rs = Cmd.Execute

Dans le 2ème cas, si tu ne veux pas utiliser les ADO.net, pourquoi
n'utilises-tu pas directement la syntaxe SQL de mise à jour ?
ChaineSQL= "Update TaTable Set TonChamp = " & TaVariable1 & " Where
TonCritere = " & TaVarCritere
Cmd.Execute


"Rahan" a écrit :

Salut a tous

je suis sous sql server 2000

je n utilise pas de proc stockees lors de mes maj, je
fais des requetes parametrees, ma question est pourquoi
ca ne marche pas !

dim decValueÍec(textbox1.text) 'recup et cast ma value

select * from table
where champs=@champ

cmd.parameter.add
("@champs",sqltype.decimal).valueÞcValue

dans mon sql j ai du decimal 4,2 cad 2 decimal apres la
virgule

et il me trouve pas ma valeur a cause du . j ai l
impression par contre si je lui passe un string (12,05
par ex)
la c ok !

merci da vance






Avatar
Christophe Fiessinger [MS]
Bonjour,
Vous pouvez aussi utiliser une procedure stockée pour la MAJ.
Cordialement,
CF.

"Fred.M." wrote in message
news:
Bonsoir Rahan,
J'avoue ne pas trop comprendre ta question...

Tu nous parles de mises à jour avec paramètre, mais tu nous montres un
"select * from ...". Donc s'agit t-il réellement d'une récupération
d'enregistrement critériée ou d'une réelle mise à jour ?
Dans le 1er cas, déclare un récordset et affecte lui le résultat de ta
requête:
set Rs = Cmd.Execute

Dans le 2ème cas, si tu ne veux pas utiliser les ADO.net, pourquoi
n'utilises-tu pas directement la syntaxe SQL de mise à jour ?
ChaineSQL= "Update TaTable Set TonChamp = " & TaVariable1 & " Where
TonCritere = " & TaVarCritere
Cmd.Execute


"Rahan" a écrit :

> Salut a tous
>
> je suis sous sql server 2000
>
> je n utilise pas de proc stockees lors de mes maj, je
> fais des requetes parametrees, ma question est pourquoi
> ca ne marche pas !
>
> dim decValueÍec(textbox1.text) 'recup et cast ma value
>
> select * from table
> where champs=@champ
>
> cmd.parameter.add
> ("@champs",sqltype.decimal).valueÞcValue
>
> dans mon sql j ai du decimal 4,2 cad 2 decimal apres la
> virgule
>
> et il me trouve pas ma valeur a cause du . j ai l
> impression par contre si je lui passe un string (12,05
> par ex)
> la c ok !
>
> merci da vance
>
>
>
>


Avatar
Rahan
merci pour la reponse

c vrai que j etais pas clair mais que ca soit un select
ou update mon pb c justement quand je passe dans le
"where critere=" & MonCritere
si critere est de type decimale (format 00.00) dans
sqlserver et MonCritere est un decimal vb net , il ne
trouve rien dans mon where
ex: si dans sqlserver j ai critere.12 et je declare
dans mon code une var MonCritere.12
en executant mon sql il ne trouvera pas la valeur 12.12 ,
le seul moyen que j ai trouve c faire un cast string et
replace(MonCritere,",",".") et je ne comprend pas !

voila donc t as une idee du pourquoi

-----Message d'origine-----
Bonsoir Rahan,
J'avoue ne pas trop comprendre ta question...

Tu nous parles de mises à jour avec paramètre, mais tu


nous montres un
"select * from ...". Donc s'agit t-il réellement d'une


récupération
d'enregistrement critériée ou d'une réelle mise Ã


jour ?
Dans le 1er cas, déclare un récordset et affecte lui


le résultat de ta
requête:
set Rs = Cmd.Execute

Dans le 2ème cas, si tu ne veux pas utiliser les


ADO.net, pourquoi
n'utilises-tu pas directement la syntaxe SQL de mise Ã


jour ?
ChaineSQL= "Update TaTable Set TonChamp = " &


TaVariable1 & " Where
TonCritere = " & TaVarCritere
Cmd.Execute


"Rahan" a écrit :

Salut a tous

je suis sous sql server 2000

je n utilise pas de proc stockees lors de mes maj, je
fais des requetes parametrees, ma question est




pourquoi
ca ne marche pas !

dim decValueÍec(textbox1.text) 'recup et cast ma




value

select * from table
where champs=@champ

cmd.parameter.add
("@champs",sqltype.decimal).valueÞcValue

dans mon sql j ai du decimal 4,2 cad 2 decimal apres




la
virgule

et il me trouve pas ma valeur a cause du . j ai l
impression par contre si je lui passe un string (12,05
par ex)
la c ok !

merci da vance






.



Avatar
Rahan
et pour les dataset etc.... il y a aucun soucis lors de
la maj mais j utilise des update et datareader directs
car c moins gourmand que les dataset du moins c ce que
dit la msdn

-----Message d'origine-----
Bonsoir Rahan,
J'avoue ne pas trop comprendre ta question...

Tu nous parles de mises à jour avec paramètre, mais tu


nous montres un
"select * from ...". Donc s'agit t-il réellement d'une


récupération
d'enregistrement critériée ou d'une réelle mise Ã


jour ?
Dans le 1er cas, déclare un récordset et affecte lui


le résultat de ta
requête:
set Rs = Cmd.Execute

Dans le 2ème cas, si tu ne veux pas utiliser les


ADO.net, pourquoi
n'utilises-tu pas directement la syntaxe SQL de mise Ã


jour ?
ChaineSQL= "Update TaTable Set TonChamp = " &


TaVariable1 & " Where
TonCritere = " & TaVarCritere
Cmd.Execute


"Rahan" a écrit :

Salut a tous

je suis sous sql server 2000

je n utilise pas de proc stockees lors de mes maj, je
fais des requetes parametrees, ma question est




pourquoi
ca ne marche pas !

dim decValueÍec(textbox1.text) 'recup et cast ma




value

select * from table
where champs=@champ

cmd.parameter.add
("@champs",sqltype.decimal).valueÞcValue

dans mon sql j ai du decimal 4,2 cad 2 decimal apres




la
virgule

et il me trouve pas ma valeur a cause du . j ai l
impression par contre si je lui passe un string (12,05
par ex)
la c ok !

merci da vance






.



Avatar
Paul Bacelar
C'est la mécanique de localisation de chaînes de caractères représentants
des nombres:
Essayez:
"where critere=" &
MonCritere.ToString(System.Globalization.CultureInfo.InvariantCulture);
--
Paul Bacelar

"Rahan" wrote in message
news:020401c4d77d$f691ca50$
merci pour la reponse

c vrai que j etais pas clair mais que ca soit un select
ou update mon pb c justement quand je passe dans le
"where critere=" & MonCritere
si critere est de type decimale (format 00.00) dans
sqlserver et MonCritere est un decimal vb net , il ne
trouve rien dans mon where
ex: si dans sqlserver j ai critere.12 et je declare
dans mon code une var MonCritere.12
en executant mon sql il ne trouvera pas la valeur 12.12 ,
le seul moyen que j ai trouve c faire un cast string et
replace(MonCritere,",",".") et je ne comprend pas !

voila donc t as une idee du pourquoi

-----Message d'origine-----
Bonsoir Rahan,
J'avoue ne pas trop comprendre ta question...

Tu nous parles de mises à jour avec paramètre, mais tu


nous montres un
"select * from ...". Donc s'agit t-il réellement d'une


récupération
d'enregistrement critériée ou d'une réelle mise Ã


jour ?
Dans le 1er cas, déclare un récordset et affecte lui


le résultat de ta
requête:
set Rs = Cmd.Execute

Dans le 2ème cas, si tu ne veux pas utiliser les


ADO.net, pourquoi
n'utilises-tu pas directement la syntaxe SQL de mise Ã


jour ?
ChaineSQL= "Update TaTable Set TonChamp = " &


TaVariable1 & " Where
TonCritere = " & TaVarCritere
Cmd.Execute


"Rahan" a écrit :

Salut a tous

je suis sous sql server 2000

je n utilise pas de proc stockees lors de mes maj, je
fais des requetes parametrees, ma question est




pourquoi
ca ne marche pas !

dim decValueÍec(textbox1.text) 'recup et cast ma




value

select * from table
where champs=@champ

cmd.parameter.add
("@champs",sqltype.decimal).valueÞcValue

dans mon sql j ai du decimal 4,2 cad 2 decimal apres




la
virgule

et il me trouve pas ma valeur a cause du . j ai l
impression par contre si je lui passe un string (12,05
par ex)
la c ok !

merci da vance






.