Problème requête sql

Signaler
Messages postés
9
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
12 juillet 2006
-
Messages postés
145
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
19 juin 2007
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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 !
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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.
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

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
Messages postés
145
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
19 juin 2007
1
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
Messages postés
9
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
12 juillet 2006

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
Messages postés
145
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
19 juin 2007
1
Salut
peux-tu nous citer les types de donnees des champs lot et Commune.
et Est ce que la valeur de recherche contient " (guillemets) ?
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
31
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<>
Messages postés
9
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
12 juillet 2006

salut

oui lot est de type string et commune aussi

merci d'avance
Messages postés
145
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
19 juin 2007
1
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