Problème requête sql

cs_loxo Messages postés 9 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 12 juillet 2006 - 11 juil. 2006 à 12:43
AdilELHASSOUNI Messages postés 145 Date d'inscription vendredi 11 janvier 2002 Statut Membre Dernière intervention 19 juin 2007 - 13 juil. 2006 à 10:46
Bonjour
je suis dans vb6 avec access et j'aimerai faire une requête sql qui selectionne mais query ABORNEMENT et qui rajoute une condition lot variable strlot_fact et Commune strCommune_par_defaut.

 strSQL = "SELECT qry_ABORNEMENT.* FROM qry_ABORNEMENT WHERE (((tbl_PARCELLES.Lot)= " & Chr(34) & strlot_fact & Chr(34) & " ) and ((tbl_COMMUNES.Commune)=" & Chr(34) & strCommune_par_defaut & Chr(34) & " ));"

quelqu'un peut il m'aider je dois avoir une erreur de syntaxe ou un truc comme ça

Merci d'avance

9 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 juil. 2006 à 12:59
Salut,

tes chr(34) doivent provoquer une erreur.
=> Il ne faut entourer les variables avec "

Sinon, avant * FROM, t'as mis un point. Normal ??
Si NON, enlève le et remplace le par un espace.
Si OUI, rajoute un espace entre le point et FROM.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
11 juil. 2006 à 13:33
Salut :)

Bon déjà le qry_ABORNEMENT.* ne doit pas géné sauf que lorsqu'il n'y a qu'une seule table je n'en vois pas l'utilité (a toi de voir)

Par contre je n'ai jamais vu de requete SQL avec des " (chr 34 de la table ascii) mais plutot avec des ' (char 39 de la table ascii) ce qui permet d'aileur de les viré pour avoir la requete suivante :
strSQL "SELECT * FROM qry_ABORNEMENT WHERE tbl_PARCELLES.Lot  '" & strlot_fact & "' and tbl_COMMUNES.Commune = '" &
strCommune_par_defaut & "';"

Normalement comme ca ca doit marché ...

Et par pitié meme si vous commenté pas vos codes sources, faites les comprehensibles par une simple lecture.
0
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
11 juil. 2006 à 13:45
oula pire encore j'avais pas vu les tables ....

Voyons voir ...
1 ere etape on vire le vb

SELECT *
FROM
qry_ABORNEMENT,
tbl_PARCELLES, 

tbl_COMMUNES

WHERE tbl_PARCELLES.Lot =   'blablabla'
AND tbl_COMMUNES.Commune = 'blablabla'

2 eme etape on met des alias
SELECT A.*

FROM
qry_ABORNEMENT A,
tbl_PARCELLES P, 

tbl_COMMUNES C

WHERE P.Lot =  'blablabla'

AND C.Commune = 'blablabla'


3 eme etape on met les tables en relation
SELECT A.*

FROM
qry_ABORNEMENT A,
tbl_PARCELLES P, 

tbl_COMMUNES C

WHERE P.id = A.Lot

AND C.id = A.Commune

AND P.Lot = 'blabla le strlot'

AND  P.Commune = 'blablabla le strcommune'

J'espere que c'est bien ca les champs dans la table Abornement


Bilan on a une string vb qui sera :

strSQL = "SELECT A.* FROM
qry_ABORNEMENT A, tbl_PARCELLES P, tbl_COMMUNES C WHERE P.id A.Lot AND C.id A.Commune AND P.Lot = '" & strlot_fact
& "' AND  P.Commune = '" &
strCommune_par_defaut
& "';"

Voila voila la normalement tout il est bon en tout cas j'espere
Ha et puis :) qry_ABORNEMENT je trouve pas ca super comme nom de table surtout quand tu as bien mis "tbl_" pour les autres :p
0
AdilELHASSOUNI Messages postés 145 Date d'inscription vendredi 11 janvier 2002 Statut Membre Dernière intervention 19 juin 2007 1
11 juil. 2006 à 13:46
Salut
Effectivement Mortalino, l'erreur est provoquée par chr(34).
Il faut soit remplacer chr(34) par chr(39) et ceci si le type de donnees du champ lot est Texte. Soit reecrire la requete sous cette forme : (en ajoutant des appostophes ' )
strSQL = "SELECT qry_ABORNEMENT.* FROM qry_ABORNEMENT WHERE (((tbl_PARCELLES.Lot)= '" & strlot_fact &  "' ) and ((tbl_COMMUNES.Commune)='" &  strCommune_par_defaut & "' ));"
bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_loxo Messages postés 9 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 12 juillet 2006
11 juil. 2006 à 17:13
Merci beaucoup pour votre aide je vais me penché dessus!

au fait qry_ABORNEMENT n'est pas une table mais une requete déjà existante dans access.

merci tout le monde
0
AdilELHASSOUNI Messages postés 145 Date d'inscription vendredi 11 janvier 2002 Statut Membre Dernière intervention 19 juin 2007 1
11 juil. 2006 à 17:54
Salut
peux-tu nous citer les types de donnees des champs lot et Commune.
et Est ce que la valeur de recherche contient " (guillemets) ?
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
12 juil. 2006 à 09:04
Si jamais il y a des guillemets, il faudra que tu utilise un replace pour eviter les erreurs!

(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire<>
0
cs_loxo Messages postés 9 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 12 juillet 2006
12 juil. 2006 à 22:00
salut

oui lot est de type string et commune aussi

merci d'avance
0
AdilELHASSOUNI Messages postés 145 Date d'inscription vendredi 11 janvier 2002 Statut Membre Dernière intervention 19 juin 2007 1
13 juil. 2006 à 10:46
Pardon
je viens d'apercevoir une erreur de syntaxe dans l'ordre SQL:
Dans votre ordre SQL vous utilisez qry_ABORNEMENT  dans la clause FROM alors que dans la clause WHERE vous avez tapé tbl_COMMUNES et  tbl_PARCELLES.
Chose impossible. Si Votre requete contient les champs commune et Lot Votre syntaxe devrait etre comme suit :
strSQL = "SELECT qry_ABORNEMENT.* FROM qry_ABORNEMENT WHERE (((qry_ABORNEMENT.Lot)= '" & strlot_fact &  "' ) and ((qry_ABORNEMENT.Commune)='" &  strCommune_par_defaut & "' ));"

Bonne chance
0
Rejoignez-nous