Problème dans requête SQL avec VBA [Résolu]

Signaler
Messages postés
20
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
20 janvier 2005
-
Messages postés
7
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 juillet 2004
-
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

Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
pour les requétes SQL pour les strings c'est comme ca :

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

It@li@
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
20
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
20 janvier 2005

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)
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
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@
Messages postés
20
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
20 janvier 2005

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.
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
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@
Messages postés
20
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
20 janvier 2005

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
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Non utilises le Predicat ESCAPE de l' SQL qui te permettra dutiliser le caractére '

It@li@
Messages postés
7
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 juillet 2004

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
Messages postés
20
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
20 janvier 2005

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
Messages postés
20
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
20 janvier 2005

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
Messages postés
7
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 juillet 2004

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
Messages postés
20
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
20 janvier 2005

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.
Messages postés
20
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
20 janvier 2005

Messages postés
7
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 juillet 2004

oki

j'essaie ca tout de suite

merci
Messages postés
7
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 juillet 2004

ca tourne nickel

merci encore

Silv