Souci avec ma requête

[Résolu]
Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous,

j'ai un souci avec ma requête SQL,je veux faire une selection depuis des paramètres rentrés dans un formulaire. avec ce code la :
requete_id = "SELECT id_contrevenant FROM contrevenant WHERE (contrevenant.nom=[Formulaires]![saisie2]![nom] AND contrevenant.prenom=[Formulaires]![saisie2]![prenom] AND contrevenant.date_naiss=[Formulaires]![saisie2]![date_naiss] AND contrevenant.lieu_naiss=[Formulaires]![saisie2]![lieu_naiss] AND contrevenant.code_postal=[Formulaires]![saisie2]![code_postal])" & ";"

Set enreg = base.OpenRecordset(requete_id)


Mais lors de l'exécution, j'ai un message d'erreur de vba : "Erreur d'exécution '3061' Trop peu de paramètres. 5 attendu." alors que tous les champs en paramètres sont remplis dans mon formulaire...

J'ai donc essayé en récupérant les valeurs des paramètres dans des variables et en lançant la requête avec les variables mais j'ai le même message d'erreur avec cette fois 3 paramètres attendus.

    nom = Forms!saisie2!nom
    prenom = Forms!saisie2!prenom
    daten = Forms!saisie2!date_naiss
    lieun = Forms!saisie2!lieu_naiss
    codep = Forms!saisie2!code_postal
 
    requete_id "Select id_contrevenant FROM contrevenant WHERE (contrevenant.nom nom AND contrevenant.prenom = prenom AND contrevenant.date_naiss = daten AND contrevenant.lieu_naiss = lieun AND contrevenant.code_postal = codep);"

    Set enreg = base.OpenRecordset(requete_id)




Merci par avance pour votre aide :)

10 réponses

OK, le souci était pas du tout au niveau du point virgule mais plutôt des guillemets, cottes et dièses à placer pour les champs de types string et les dates...

Merci de votre aide quand même.

Voici la bonne requête :
requete_id "Select id_contrevenant FROM contrevenant WHERE (contrevenant.nom '" & nom & "'   AND contrevenant.prenom ='" & prenom & "' AND contrevenant.date_naiss =  #" & daten & "#  AND contrevenant.lieu_naiss = '" & lieun & "' AND contrevenant.code_postal = '" & codep & "');"
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
Tu as mis tes variables entre les guillemets !
Un simple messagebox de requete_id te ferais prendre conscience de cette énormité.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
ooouuuupppsss désolé, pourtant je l'ai fait ça m'a pas choqué sur le coup.
Merci beaucoup :)
requete_id = "Select id_contrevenant FROM contrevenant WHERE (contrevenant.nom = nom AND contrevenant.prenom = prenom AND contrevenant.date_naiss = daten AND contrevenant.lieu_naiss = lieun AND contrevenant.code_postal = codep);"


requete_id "Select id_contrevenant FROM contrevenant WHERE (contrevenant.nom nom AND contrevenant.prenom = prenom AND contrevenant.date_naiss = daten AND contrevenant.lieu_naiss = lieun AND contrevenant.code_postal = codep)";


Soyons Toujours à la disposition des autres (si la personne à bien posée son problem)
Malgré avoir mis des guillemets, j'ai toujours le même message qui me dis qu'il y a trop peu d'arguments et que 3 sont attendus.

    nom = Forms!saisie2!nom
    prenom = Forms!saisie2!prenom
    daten = CStr(Forms!saisie2!date_naiss)
    lieun = Forms!saisie2!lieu_naiss
    codep = Forms!saisie2!code_postal
    
    requete_id "Select id_contrevenant FROM contrevenant WHERE (contrevenant.nom " & nom & "   AND contrevenant.prenom = " & prenom & " AND contrevenant.date_naiss =  " & daten & "  AND contrevenant.lieu_naiss = " & lieun & " AND contrevenant.code_postal = " & codep & ");"
    MsgBox (requete_id)
    Set enreg = base.OpenRecordset(requete_id)


Le MsgBox affiche pourtant cela :
@MINDONGO : Je ne vois pas ce que tu as changé dans les requêtes les deux que tu m'a mis sont les mêmes que moi ...
regarde bien ici:

"; et non ;"

requete_id "Select id_contrevenant FROM contrevenant WHERE (contrevenant.nom nom AND contrevenant.prenom = prenom AND contrevenant.date_naiss = daten AND contrevenant.lieu_naiss = lieun AND contrevenant.code_postal = codep)"; 'ici tu doit juste mettre le point virgule après votre " 


Soyons Toujours à la disposition des autres (si la personne à bien posée son problem)
@MINDONGO : Ca ne fonctionne pas avec le point virgule à la fin ca me met "erreur de compilation : attendu : Fin d'instruction"

Et j'avais changé ma requête entre temps car mes variable étaient entre les guillemets donc ca prenait leur noms et non leurs valeurs donc voici la bonne, mais qui me réclame toujours 3 arguments alors que les 5 sont bien spécifiés :

    nom = Forms!saisie2!nom
    prenom = Forms!saisie2!prenom
    daten = CStr(Forms!saisie2!date_naiss)
    lieun = Forms!saisie2!lieu_naiss
    codep = Forms!saisie2!code_postal
    
    requete_id "Select id_contrevenant FROM contrevenant WHERE (contrevenant.nom " & nom & "   AND contrevenant.prenom = " & prenom & " AND contrevenant.date_naiss =  " & daten & "  AND contrevenant.lieu_naiss = " & lieun & " AND contrevenant.code_postal = " & codep & ");"
    MsgBox (requete_id)
    Set enreg = base.OpenRecordset(requete_id)


Voilà toujours la même erreur :



Et le MsgBox qui contient pourtant les bonnes valeurs :
Ok, en fait je fesait allusion à un autre truc



Soyons Toujours à la disposition des autres (si la personne à bien posée son problem)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
OK, le souci était pas du tout au niveau du point virgule mais plutôt des guillemets, cottes et dièses à placer pour les champs de types string et les dates...

Merci de votre aide quand même


Elle est bien bonne, celle-là (surtout le "quand-même") !
Relisons ce que je t'avais dit :
Tu as mis tes variables entre les guillemets !
Un simple messagebox de requete_id te ferais prendre conscience de cette énormité.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.