Problème dans requête SQL avec VBA

Résolu
cuber Messages postés 20 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 20 janvier 2005 - 7 juil. 2004 à 09:30
cs_silv Messages postés 7 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 27 juillet 2004 - 22 juil. 2004 à 12:03
Bonjour,
j'ai un problème avec une requête de suppression en SQL dont voici le code:

sqldel1$ =  "DELETE FROM TBL_ActivNep WHERE Mois=" & Mois_var
sqldel2$ = " AND Année=" & Année_var
sqldel3$ = " AND CIP=" & CIP_Label
sqldel4$ =  " AND Paramètres=" & Param_box 
sqldel$  = sqldel1 + sqldel2 + sqldel3 + sqldel4

db.Execute sqldel


C'est la partie en gras que n'apprécie pas le programme.
Pour info, la variable Param_box est définies comme String et contient des mots tels que "Centrale d'achat" ou "MDD".

Selon si le mot est en plusieurs ou seul l'erreur n'est pas la même.
Erreur lorsque qu'un mot est du type "Centrale d'achat":
Erreur d'exécution' 3075'
Erreur de syntaxe (opérateur absent)

Erreur lorsqu'un mot est du type "MDD":
Erreur d'exécution '3061'
Trop peu de paramètres. 1 attendu.

Voilà si quelqu'un peu résoudre mon problème avec cette requête ça serait sympa.

15 réponses

cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
7 juil. 2004 à 10:47
pour les requétes SQL pour les strings c'est comme ca :

"....WHERE MonChamps = ' " & MaVariable & " '.....

It@li@
3
cuber Messages postés 20 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 20 janvier 2005
7 juil. 2004 à 13:07
Ta solution marche presque mais vb me met toujours l'erreur
Erreur d'exécution '3061'
Trop peu de paramètres. 1 attendu.

Franchement je vois pas pourquoi ça merde :sad)
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
7 juil. 2004 à 13:26
tu peux me donner les types de tes champs....

Mois
Année
CIP
Paramètres

verifies en mode Pas à pas si tes champs ne sont pas null

It@li@
0
cuber Messages postés 20 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 20 janvier 2005
7 juil. 2004 à 13:33
Alors
Mois : Entier
Année : Entier
CIP : Entier long
Paramètres: Texte
Ces champs ne peuvent pas être null , j'ai posé un protection si c'est le cas.

J'ai déjà lancé ma requête sans Paramètres et ça fonctionne et en fait ça merde qu'avec Paramètres. Et j'en ai besoin sinon l'effacement ne sera pas bon.
0

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

Posez votre question
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
7 juil. 2004 à 13:44
sqldel1$ = "DELETE FROM TBL_ActivNep WHERE Mois=" & Mois_var
sqldel2$ = " AND Année=" & Année_var
sqldel3$ = " AND CIP=" & CIP_Label
sqldel4$ = " AND Paramètres='" & Param_box & "' "
sqldel$ = sqldel1 + sqldel2 + sqldel3 + sqldel4

aprés Param_box & ....double cote + Simple cote + double cote
It@li@
0
cuber Messages postés 20 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 20 janvier 2005
7 juil. 2004 à 13:47
Merci
Oki ça marche nickel maintenant je vais chercher comment faire pour pas que ça plante à cause de la chaîne
" Centrale d'achat" car l'apostrophe fait merder
Je pense qu'il y a un moyen de le coder ou de faire autrement
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
7 juil. 2004 à 14:08
Non utilises le Predicat ESCAPE de l' SQL qui te permettra dutiliser le caractére '

It@li@
0
cs_silv Messages postés 7 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 27 juillet 2004
21 juil. 2004 à 13:50
Salut ;
voila j'ai a peu pres le meme problème que cuber (erreur 3075), sauf que pour moi, il s'agit d'un insert et dans ce cas, est ce que tu peux utiliser escape? pour pouvoir utiliser le caractère '

merci d'avance
silv
0
cuber Messages postés 20 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 20 janvier 2005
21 juil. 2004 à 15:38
Peux-tu me rappeler ton erreur car je sais pas pourquoi mais chez moi il n'y a que ton message d'affiché et les autres sont vides?
Comme ça je verais si je peux t'aider
0
cuber Messages postés 20 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 20 janvier 2005
21 juil. 2004 à 15:38
Peux-tu me rappeler ton erreur car je sais pas pourquoi mais chez moi il n'y a que ton message d'affiché et les autres sont vides?
Comme ça je verais si je peux t'aider
0
cs_silv Messages postés 7 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 27 juillet 2004
22 juil. 2004 à 09:18
ben voila j'ai tenté une commande

sql = " INSERT INTO table(champ1) values(' " & variable & " ');"

et y me sort une erreur 3075.
j'ai vu dans ton message que ca venait certainement du quote ou du doublequote de fin de variable qu'il doit interpreté comme la fin de commande sql, mais je ne sais pas comment faire : peut etre en utilisant la commande escape mais je n'arrive pas a l'integrer dans le insert
0
cuber Messages postés 20 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 20 janvier 2005
22 juil. 2004 à 10:05
oki je vois ton erreur en fait cela vient de ta variable si elle contient un apostrophe, il faut que tu fasses une fonction qui lise ta variable et qui remplace ton apostrophe par un double quote ou par \' (mais chez moi cette 2ème sol ne marche pas).
Je crois que cette fonction est seur le forum je vais chercher et si je la trouve je te mets le lien après.
0
cuber Messages postés 20 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 20 janvier 2005
22 juil. 2004 à 10:14
0
cs_silv Messages postés 7 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 27 juillet 2004
22 juil. 2004 à 10:57
oki

j'essaie ca tout de suite

merci
0
cs_silv Messages postés 7 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 27 juillet 2004
22 juil. 2004 à 12:03
ca tourne nickel

merci encore

Silv
0
Rejoignez-nous