Utilisation dlookup
Fermé
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
-
2 mars 2015 à 09:48
Tessel75 - 7 mars 2015 à 16:36
Tessel75 - 7 mars 2015 à 16:36
A voir également:
- Dlookup access
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- Acer quick access ✓ - Forum Windows
- Controller access network - Télécharger - Contrôle parental
- Recovery access - Télécharger - Récupération de données
18 réponses
Bonjour,
L'écriture de DLookUp est : DLookUp("Variable","Table", "Critères")
Ton écriture du critère est fautive : " N°= " & N°
En même temps, le critère est souvent embêtant à écrire parce que le paramètre a souvent le même nom que la valeur qu'il doit prendre. Il faut donc écrire un critère sous la forme :
" N°=Forms!NomFormulaire!NomContrôle " (Attention aux guillemets)
Enfin ton "Nz()" ne sert à rien parce qu'il sert à convertir une valeur nulle (null) par une valeur quelconque, le plus souvent 0
Bonne suite
L'écriture de DLookUp est : DLookUp("Variable","Table", "Critères")
Ton écriture du critère est fautive : " N°= " & N°
En même temps, le critère est souvent embêtant à écrire parce que le paramètre a souvent le même nom que la valeur qu'il doit prendre. Il faut donc écrire un critère sous la forme :
" N°=Forms!NomFormulaire!NomContrôle " (Attention aux guillemets)
Enfin ton "Nz()" ne sert à rien parce qu'il sert à convertir une valeur nulle (null) par une valeur quelconque, le plus souvent 0
Bonne suite
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
2 mars 2015 à 14:44
2 mars 2015 à 14:44
Bonsoir merci pour la réponse.
effectivement c'est vraiment difficile.
code :
cette fois-ci message d'erreur est différent :
ne trouve pas le formulaire auquel il fait référence.
merci pour l'aide
effectivement c'est vraiment difficile.
code :
dbexpiration = Nz(DLookup("[datexpiration]", "expiration", "N°=Forms!Marques2!datexpiration "))
cette fois-ci message d'erreur est différent :
ne trouve pas le formulaire auquel il fait référence.
merci pour l'aide
Il faut que ton formulaire soit ouvert, sinon, évidemment il ne peut pas le trouver!!!
Et aussi, il vaut mieux supprimer tes [ ] qui encombrent plutôt qu'autre chose, et pareil pour ton Nz()
De toutes façons, quand tu as des expressions en chaine à la suite, il faut toujours les entrer une par une pour voir ce qui coince et être sûr que la précédente a bien été comprise par le logiciel.
Et aussi, il vaut mieux supprimer tes [ ] qui encombrent plutôt qu'autre chose, et pareil pour ton Nz()
De toutes façons, quand tu as des expressions en chaine à la suite, il faut toujours les entrer une par une pour voir ce qui coince et être sûr que la précédente a bien été comprise par le logiciel.
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
2 mars 2015 à 19:44
2 mars 2015 à 19:44
Bonsoir merci pour la réponse.
Voilà j'ai fait exactement ce dont vous m'avez conseillé, mais c'est le même problème.
Aidez moi SVP à régler ce problème.
Merci pour l'aide
Voilà j'ai fait exactement ce dont vous m'avez conseillé, mais c'est le même problème.
code :Dim dbexpiration As Date
dbexpiration = DLookup("datexpiration", "expiration", "N° = Forms!expiration!datexpiration ")
Texte137.Value = dbexpiration
Aidez moi SVP à régler ce problème.
Merci pour l'aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Envoie un extrait de ta base avec les éléments impliqués via cjooint.com et met le lien donné dans ta réponse
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
3 mars 2015 à 09:46
3 mars 2015 à 09:46
Bonjour merci pour l'aide.
S'agissant du problème en question, voilà ce j'ai fait :
en fait j'ai 02 tables :
1- tables1, Champs :[N°, clé]; [societe];[Adresse]; [DatEffet]; [Durée]; [type] ;[DatExpiration].
2- marques Champs :[NumMarque, clé]; [marques]; [Type];[DatEffet]; [Durée];[DatExpiration]
requête : expiration
programme :
voilà ce qui a été fait.
merci pour l'aide.
S'agissant du problème en question, voilà ce j'ai fait :
en fait j'ai 02 tables :
1- tables1, Champs :[N°, clé]; [societe];[Adresse]; [DatEffet]; [Durée]; [type] ;[DatExpiration].
2- marques Champs :[NumMarque, clé]; [marques]; [Type];[DatEffet]; [Durée];[DatExpiration]
requête : expiration
SELECT DISTINCT Table1.Societe, marques.marque, marques.DatEffet, marques.Durée, marques.Datexpiration FROM Table1 INNER JOIN marques ON Table1.N° = marques.NumC GROUP BY Table1.Societe, marques.marque, marques.DatEffet, marques.Durée, marques.Datexpiration;
programme :
Dim dbexpiration As Date
dbexpiration = DLookup("datexpiration", "marques", "N°=Forms!marques!datexpiration ")
Texte141.Value = dbexpiration
voilà ce qui a été fait.
merci pour l'aide.
Bonjour,
Je t'ai demandé d'envoyer un extrait de ta base par cjoint.com (excuse pour la faute de frappe précédente). La tu envoie la version SQL d'une requête et une expression de variable. Je ne peux rien en faire.
Je t'ai demandé d'envoyer un extrait de ta base par cjoint.com (excuse pour la faute de frappe précédente). La tu envoie la version SQL d'une requête et une expression de variable. Je ne peux rien en faire.
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
3 mars 2015 à 13:46
3 mars 2015 à 13:46
je pourrais vous envoyer en jpg, j'ai demandé à mon responsable, un refus catégorique, histoire de confidentialité
D'abord tu n'avais pas dit que tu étais en stage et que tu avais un supérieur.
Deuxièmement ma question est purement technique et ne concerne absolument pas les données dont je me contrefiche, il suffit de mettre 4 ou 5 lignes avec n'importe quels chiffres, la méthode sera exactement la même qu'avec des vrais chiffres.
3èmement: je ne comprends rien à la liaison que tu fais entre ta requête, ton formulaire "marques", et ton contrôle "datexpiration ". Et je ne vois pas ce que tu veux extraire. Le problème est bien là.
On peut d'aider, mais encore faut-il avoir un minimum de matériel.
Deuxièmement ma question est purement technique et ne concerne absolument pas les données dont je me contrefiche, il suffit de mettre 4 ou 5 lignes avec n'importe quels chiffres, la méthode sera exactement la même qu'avec des vrais chiffres.
3èmement: je ne comprends rien à la liaison que tu fais entre ta requête, ton formulaire "marques", et ton contrôle "datexpiration ". Et je ne vois pas ce que tu veux extraire. Le problème est bien là.
On peut d'aider, mais encore faut-il avoir un minimum de matériel.
massiInfo
Messages postés
3
Date d'inscription
mardi 3 mars 2015
Statut
Membre
Dernière intervention
5 mars 2015
5 mars 2015 à 11:23
5 mars 2015 à 11:23
Bonjour, merci pour la réponse
j'ai rien dis de mal, dans la ces contraire je demande pardon.
ma question est : comment utiliser Dlookup, et ce pour pouvoir afficher dans mon formulaire principal un champ d'une requête.
voila comment ma base de données se présente :
en fait j'ai 02 tables :
1- tables1, Champs :[N°, clé]; [societe];[Adresse]; [DatEffet]; [Durée]; [type] ;[DatExpiration].
2- marques Champs :[NumMarque, clé]; [marques]; [Type];[DatEffet]; [Durée];[DatExpiration]
requête : que j'ai nommé "expiration" composé avec les champs de la table 2 : c-à-d, NumMarque, clé]; [marques]; [Type];[DatEffet]; [Durée];[DatExpiration].
maintenant, ma question est comment afficher le champ [datExpiration] dans mon formulaire principal.
ce que j'ai fait :
résultat : il m'affiche le premier enregistrement pour l'ensemble des enregistrements soit "12/02/2015"
voilà, merci et pardon.
je m'exprime mal en français peut être c'est cela qui me joue des tours.
Cordialement.
j'ai rien dis de mal, dans la ces contraire je demande pardon.
ma question est : comment utiliser Dlookup, et ce pour pouvoir afficher dans mon formulaire principal un champ d'une requête.
voila comment ma base de données se présente :
en fait j'ai 02 tables :
1- tables1, Champs :[N°, clé]; [societe];[Adresse]; [DatEffet]; [Durée]; [type] ;[DatExpiration].
2- marques Champs :[NumMarque, clé]; [marques]; [Type];[DatEffet]; [Durée];[DatExpiration]
requête : que j'ai nommé "expiration" composé avec les champs de la table 2 : c-à-d, NumMarque, clé]; [marques]; [Type];[DatEffet]; [Durée];[DatExpiration].
maintenant, ma question est comment afficher le champ [datExpiration] dans mon formulaire principal.
ce que j'ai fait :
Private Sub Texte141_Click()
Dim dbexpiration As Date
dbexpiration = DLookup("datexpiration", "expiration", "N°='" & N° & "'")
Texte141.Value = dbexpiration
résultat : il m'affiche le premier enregistrement pour l'ensemble des enregistrements soit "12/02/2015"
voilà, merci et pardon.
je m'exprime mal en français peut être c'est cela qui me joue des tours.
Cordialement.
ReBonjour,
Ce que tu ne veux pas comprendre c'est que d'ici on n'a pas accès à ta base et qu'on ne sait pas sur quoi tu travailles et que tu veux obtenir avec ce que tu as déjà fait, donc on ne peut que donner des conseils très ponctuels et très techniques.
La question est alors de savoir ce qu'est ton "N°" et d'où il sort (ou par où tu vas le rentrer)
Ou alors, je ne peux que te conseiller de faire des tests successifs avec des valeurs que tu rentres toi même pour vérifier que ta fonction est correcte.
Et seulement quand tu es sûr, alors tu rentres ton paramètre.
Ce que tu ne veux pas comprendre c'est que d'ici on n'a pas accès à ta base et qu'on ne sait pas sur quoi tu travailles et que tu veux obtenir avec ce que tu as déjà fait, donc on ne peut que donner des conseils très ponctuels et très techniques.
La question est alors de savoir ce qu'est ton "N°" et d'où il sort (ou par où tu vas le rentrer)
Ou alors, je ne peux que te conseiller de faire des tests successifs avec des valeurs que tu rentres toi même pour vérifier que ta fonction est correcte.
Et seulement quand tu es sûr, alors tu rentres ton paramètre.
massiInfo
Messages postés
3
Date d'inscription
mardi 3 mars 2015
Statut
Membre
Dernière intervention
5 mars 2015
5 mars 2015 à 15:46
5 mars 2015 à 15:46
Bonsoir je vais vous envoyer la base données.
merci pour votre aide.
je sais pas comment vous envoyer la base de données
merci
merci pour votre aide.
je sais pas comment vous envoyer la base de données
merci
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
5 mars 2015 à 18:24
5 mars 2015 à 18:24
Bonjour, Je vous envoi une partie de la base de données
merci pour l'aide
https://www.cjoint.com/c/ECfsJmqbKDa
merci pour l'aide
https://www.cjoint.com/c/ECfsJmqbKDa
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
6 mars 2015 à 17:11
6 mars 2015 à 17:11
Bonsoir,
il me semble que le lien ne fonctionne pas...!
je pourrais vous l'envoyer de nouveau
merci
il me semble que le lien ne fonctionne pas...!
je pourrais vous l'envoyer de nouveau
merci
Bonjour,
Après bien des difficultés j'ai pu ouvrir la base.
Remarque1 : Il est complètement inutile de compacter la base avant l'envoi, cjoint.com supporte très bien des fichiers un peu gros, et celui-là de 470 Ko est très petit. De plus la plupart des objets était masquée, ça n'a pas facilité les choses.
Pour répondre à ta question principale: Il faut que tu retiennes que pas plus l'ordinateur que les internautes susceptibles de te répondre ne sont des devins et ne peuvent pas inventer des données et des paramètres qui ne sont pas indiquées clairement.
Tu écris:
"Dim dbexpiration As Date
dbexpiration = DLookup("datexpiration", "expiration", "N°='" & N° & "'")
Texte141.Value = dbexpiration"
mais sans indiquer ce qu'est "N°", ni où aller chercher la valeur à prendre. En plus, il n'existe pas de donnée appelée "N°" dans la requête "expiration"
Il faut que tu écrives une expression du genre:
"Dim dbexpiration As Date
N°=Me!ContrôleN°
dbexpiration = DLookup("datexpiration", "expiration", "N°='" & N° & "'")
Texte141.Value = dbexpiration"
Où Me!... veut dire que la valeur à prendre est à chercher dans le formulaire lui-même
Càd qu'il faut créer un contrôle "N°" et que tu entres le champ "N°" dans la requête "expiration"
Après ça tu verras que ça marche.
Bonne suite.
Après bien des difficultés j'ai pu ouvrir la base.
Remarque1 : Il est complètement inutile de compacter la base avant l'envoi, cjoint.com supporte très bien des fichiers un peu gros, et celui-là de 470 Ko est très petit. De plus la plupart des objets était masquée, ça n'a pas facilité les choses.
Pour répondre à ta question principale: Il faut que tu retiennes que pas plus l'ordinateur que les internautes susceptibles de te répondre ne sont des devins et ne peuvent pas inventer des données et des paramètres qui ne sont pas indiquées clairement.
Tu écris:
"Dim dbexpiration As Date
dbexpiration = DLookup("datexpiration", "expiration", "N°='" & N° & "'")
Texte141.Value = dbexpiration"
mais sans indiquer ce qu'est "N°", ni où aller chercher la valeur à prendre. En plus, il n'existe pas de donnée appelée "N°" dans la requête "expiration"
Il faut que tu écrives une expression du genre:
"Dim dbexpiration As Date
N°=Me!ContrôleN°
dbexpiration = DLookup("datexpiration", "expiration", "N°='" & N° & "'")
Texte141.Value = dbexpiration"
Où Me!... veut dire que la valeur à prendre est à chercher dans le formulaire lui-même
Càd qu'il faut créer un contrôle "N°" et que tu entres le champ "N°" dans la requête "expiration"
Après ça tu verras que ça marche.
Bonne suite.
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
6 mars 2015 à 21:57
6 mars 2015 à 21:57
Bonsoir, merci pour votre réponse.
pardon pour le cassement de tête causé.
svp vous ne pouvez pas corriger sur l'exemple svp.
pour ce qui est du "N°" c'est le champ clé de la table1.
la valeur à prendre c'est la date du champ "DatExpiration" de la requête expiration.
en faite le résultat recherché est d'extraire la date de fin de contrat avec l'opération : DatEffet +durée = DatExpiration.
Merci pour l'aide.
pardon pour le cassement de tête causé.
svp vous ne pouvez pas corriger sur l'exemple svp.
pour ce qui est du "N°" c'est le champ clé de la table1.
la valeur à prendre c'est la date du champ "DatExpiration" de la requête expiration.
en faite le résultat recherché est d'extraire la date de fin de contrat avec l'opération : DatEffet +durée = DatExpiration.
Merci pour l'aide.
Bonjour,
Ci-joint la base corrigée. J'ai été obligé d'apporter qq modifications sur la base elle-même parce qu'elle était verrouillée et mise en ouverture sur un formulaire menu principal.
Il faut donc que tu prennes les corrections apportées comme des modèles dont il faut t'inspirer plus que faire des simples copier/coller.
En particulier à regarder la requête "expiration" et la requête sous-jacente du formulaire "Concessionnaires" qui en plus n'a pas besoin d'un contrôle indépendant "Datexpiration", au contraire.
Et puis enfin tu dois vérifier chaque fois ton code VBA , en le compilant de temps en temps, car il y a beaucoup d'erreurs qui le font fermer de manière intempestive.
Bonne suite
http://cjoint.com/?3ChoE3Sakmf
Ci-joint la base corrigée. J'ai été obligé d'apporter qq modifications sur la base elle-même parce qu'elle était verrouillée et mise en ouverture sur un formulaire menu principal.
Il faut donc que tu prennes les corrections apportées comme des modèles dont il faut t'inspirer plus que faire des simples copier/coller.
En particulier à regarder la requête "expiration" et la requête sous-jacente du formulaire "Concessionnaires" qui en plus n'a pas besoin d'un contrôle indépendant "Datexpiration", au contraire.
Et puis enfin tu dois vérifier chaque fois ton code VBA , en le compilant de temps en temps, car il y a beaucoup d'erreurs qui le font fermer de manière intempestive.
Bonne suite
http://cjoint.com/?3ChoE3Sakmf
massi112
Messages postés
9
Date d'inscription
lundi 2 mars 2015
Statut
Membre
Dernière intervention
7 mars 2015
7 mars 2015 à 15:21
7 mars 2015 à 15:21
Bonsoir merci pour la réponse.
ça ne fonctionne toujours pas
dbexpiration = DLookup("datexpiration", "expiration", "N°='" & N° & "'")
erreur 3464
merci quand même
ça ne fonctionne toujours pas
dbexpiration = DLookup("datexpiration", "expiration", "N°='" & N° & "'")
erreur 3464
merci quand même
Je t'ai dit que la syntaxe de l'expression était : DLookup("VariableRecherchée","TableRequête", "[Paramètre]= Valeur ") .
C'est pour ça qu'il est toujours difficile d'aller faire rechercher la valeur sur un paramètre défini quelque part dans le code; il vaut mieux écrire; DLookup("VariableRecherchée","TableRequête", "[Paramètre]= Forms!NomFormulaire!NomContrôle")
ou alors tu écris :
N° = Forms!NomFormulaire!NomContrôle
DLookup("VariableRecherchée","TableRequête",
"[Paramètre]= " & N° & " " )
Tu ne suis pas les conseils et tu t'emmêles dans les guillemets.
C'est pour ça qu'il est toujours difficile d'aller faire rechercher la valeur sur un paramètre défini quelque part dans le code; il vaut mieux écrire; DLookup("VariableRecherchée","TableRequête", "[Paramètre]= Forms!NomFormulaire!NomContrôle")
ou alors tu écris :
N° = Forms!NomFormulaire!NomContrôle
DLookup("VariableRecherchée","TableRequête",
"[Paramètre]= " & N° & " " )
Tu ne suis pas les conseils et tu t'emmêles dans les guillemets.