Erreur requete

Fermé
lune212 Messages postés 19 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 31 juillet 2013 - 16 juil. 2013 à 10:18
 lune212 - 18 juil. 2013 à 20:38
Bonjour,

Je viens demander votre aide parce qu'aprés lecture de 1000 et 1 forum je n'arrive toujours pas à trouver ce qui ne marche pas.
J ai une erreur d'exécution (Trop peu de parametres. 1 attendu) et je pense que c est ma requete sql qui ne marche pas.
En fait j'ai une zone de texte(nommé num) dans mon formulaire access sur laquelle je souhaite faire une requete pour savoir si le numero entré dans cette zone existe dans ma base de donnée.

Option Compare Database

Private Sub Commande1_Click()





Me.Requery
Dim sql As String
Dim rs As DAO.Recordset
sql = " SELECT * FROM [demande_d'achat] WHERE [N°_DA] = '" & Me.num & "';"
Debug.Print sql
Set rs = CurrentDb.OpenRecordset(sql)

If Not rs.EOF Then
MsgBox "Ce numero de da est réussie", vbInformation, "Redirection ..."
DoCmd.OpenForm "Menu_Animateur_affectationETsuivi", acNormal, , , , acWindowNormal
DoCmd.Close acForm, "Authentification_Administrateur"
Else
MsgBox "Numero incorrect ", vbInformation, "Connexion"
End If
End If

End Sub


2 réponses

blux Messages postés 26036 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 mai 2024 3 289
16 juil. 2013 à 14:24
Salut,

plutôt que de créer un recordset, prends la fonction dlookup(), elle convient tout à fait pour ce que tu souhaites faire...
0
lune212 Messages postés 19 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 31 juillet 2013
17 juil. 2013 à 11:05
Merci pour ta réponse mais je ne connais pas cette fonction et du coup je ne sais pas comment il faut faire
0
blux Messages postés 26036 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 mai 2024 3 289
17 juil. 2013 à 11:14
Regarde l'aide à son sujet, elle permet de renvoyer une valeur d'un champ d'une table avec un paramétrage.

Dans ton cas, cela pourrait ressembler à ça :

if not isnull(dlookup("[N° DA]#,"[demande_d'achat]","[N°_DA] = '" & Me.num & "'")) then
    MsgBox "Ce numero de da est réussie", vbInformation, "Redirection ..."
    DoCmd.OpenForm "Menu_Animateur_affectationETsuivi", acNormal, , , , acWindowNormal
    DoCmd.Close acForm, "Authentification_Administrateur"
Else
    MsgBox "Numero incorrect ", vbInformation, "Connexion"
End If
0
lune212 Messages postés 19 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 31 juillet 2013
17 juil. 2013 à 15:50
Merci pour ta réponse....enfin ça marche.
il faut juste mettre " à la place de # ( ça doit etre une erreur de frappe :) ) ...ce qui donne

If Not IsNull(DLookup("[id]", "[affaire]", "[id] = Form![num]")) Then ......
0
blux Messages postés 26036 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 mai 2024 3 289
17 juil. 2013 à 16:10
Oui, je ne ms suis pas relu, c'est bien une erreur de frappe.
Les fonctions de domaine, comme dlookup, offrent une vaste possibilité de calculs divers et variés sans être obligé de créer des requêtes à rallonge.
On trouve : dsum() pour faire la somme de champs répondant à un critère, davg() pour la moyenne, dmin() pour trouver le plus petit, etc etc...
0
lune212 Messages postés 19 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 31 juillet 2013
18 juil. 2013 à 10:25
merci en tout cas pour tous ces éclairages, ça va m'etre utile mais j'ai encore une question.
en fait le numero que je récupere est la clé de ma table, je veux savoir comment pré-remplir automatiquement les champs d'un formulaire vers le quel je redirige l'utilisateur avec cet identifiant et les infos qui lui sont associés dans la table?

Merci d'avance
0
blux Messages postés 26036 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 14 mai 2024 3 289
18 juil. 2013 à 10:32
Il faut que tu prépares la requête qui renvoie les informations concernant l'utilisateur et que tu la mettes en .rowsource de ton formulaire...
0