OVH Cloud OVH Cloud

Requete avec Left$ en ADO

4 réponses
Avatar
Eric
Bonjour
j'ai un petit prob avec une requete simple en utilisant la fonction Left$ en
ADO. cette requete fonctionne correctevement via DAO ??
explication :

critère$ = "SELECT * FROM LIGNE WHERE ( num_Ord = " &rstclient.field(1) & _
" AND Left$(Nom_Art,2) <> '**' )"
l'instruction renvoi une erreur : -2147217900 "syntax error"

sans l'instruction Left$(...) ça fonctionne bien
num_Ord est un champ numérique de LIGNE
Nom_Art est un champ caractère de LIGNE
L'instruction Left$ n'est pas autorisé en ADO ???
bon y'a bien une solution en passant par une variable mais c'est pour
simplifier le code.

Merci

4 réponses

Avatar
FL
Bonjour,

Left$ est une fonction VB, et non une fonction connue du langage SQL. Il
faut donc faire une concaténation avant et après Left$ :

critère$ = "SELECT * FROM LIGNE WHERE ( num_Ord = " &rstclient.field(1) & _
" AND " & Left$(Nom_Art,2) & " <> '**' )"


"Eric" a écrit dans le message de news:

Bonjour
j'ai un petit prob avec une requete simple en utilisant la fonction Left$


en
ADO. cette requete fonctionne correctevement via DAO ??
explication :

critère$ = "SELECT * FROM LIGNE WHERE ( num_Ord = " &rstclient.field(1) &


_
" AND Left$(Nom_Art,2) <> '**' )"
l'instruction renvoi une erreur : -2147217900 "syntax error"

sans l'instruction Left$(...) ça fonctionne bien
num_Ord est un champ numérique de LIGNE
Nom_Art est un champ caractère de LIGNE
L'instruction Left$ n'est pas autorisé en ADO ???
bon y'a bien une solution en passant par une variable mais c'est pour
simplifier le code.

Merci


Avatar
Zoury
Salut ! :O)
critère$ = "SELECT * FROM LIGNE WHERE ( num_Ord = " &rstclient.field(1) &


_
" AND Left$(Nom_Art,2) <> '**' )"



Ptit conseil : je te suggère d'éviter de faire des "SELECT *" dans tes
applications. Cela force le serveur à créer la liste lui même ce qui demande
plus de temps et de ressources car il doit la retrouver via une ou des
requêtes. Aussi beaucoup de programmeur font des "SELECT *" alors qu'ils
n'ont besoin que de quelques champs dans la table, la quantité de données
retourner peut donc varier énormement, en fonction de la table bien sûr, ce
qui, en plus, gruge de la bande passante sur le réseau lorsque les données
sont retournées au client.

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Renfield
Left$ est une instruction de VB.

en SQL pas de $

critère$ = "SELECT * FROM LIGNE WHERE ( num_Ord = " &rstclient.field(1) & "
AND Left(Nom_Art,2) <> '**' )"

tout simplement ^^


"Eric" a écrit dans le message de
news:
Bonjour
j'ai un petit prob avec une requete simple en utilisant la fonction Left$


en
ADO. cette requete fonctionne correctevement via DAO ??
explication :

critère$ = "SELECT * FROM LIGNE WHERE ( num_Ord = " &rstclient.field(1) &


_
" AND Left$(Nom_Art,2) <> '**' )"
l'instruction renvoi une erreur : -2147217900 "syntax error"

sans l'instruction Left$(...) ça fonctionne bien
num_Ord est un champ numérique de LIGNE
Nom_Art est un champ caractère de LIGNE
L'instruction Left$ n'est pas autorisé en ADO ???
bon y'a bien une solution en passant par une variable mais c'est pour
simplifier le code.

Merci


Avatar
Renfield
Faisant cela, tu considère que Nom_Art est une variable VB.... Il s'agit
cependant d'un champ de la table LIGNE

"FL" <flerin@(ajout pour éviter spam)telelogos.com> a écrit dans le message
de news:
Bonjour,

Left$ est une fonction VB, et non une fonction connue du langage SQL. Il
faut donc faire une concaténation avant et après Left$ :

critère$ = "SELECT * FROM LIGNE WHERE ( num_Ord = " &rstclient.field(1) &


_
" AND " & Left$(Nom_Art,2) & " <> '**' )"


"Eric" a écrit dans le message de news:

> Bonjour
> j'ai un petit prob avec une requete simple en utilisant la fonction


Left$
en
> ADO. cette requete fonctionne correctevement via DAO ??
> explication :
>
> critère$ = "SELECT * FROM LIGNE WHERE ( num_Ord = " &rstclient.field(1)


&
_
> " AND Left$(Nom_Art,2) <> '**' )"
> l'instruction renvoi une erreur : -2147217900 "syntax error"
>
> sans l'instruction Left$(...) ça fonctionne bien
> num_Ord est un champ numérique de LIGNE
> Nom_Art est un champ caractère de LIGNE
> L'instruction Left$ n'est pas autorisé en ADO ???
> bon y'a bien une solution en passant par une variable mais c'est pour
> simplifier le code.
>
> Merci