OVH Cloud OVH Cloud

petite mise au point à propos de DLookup

6 réponses
Avatar
brainburnt
alors tout d'abord bonjour a tous,

voila ma question:

Imaginons une table comme suit:

- numAuto (auto-increment)
- numAction (num=E9rique)
- numCommentaire (num=E9rique)
- tempsAction(num=E9rique)

avec les enregistrements suivants:

- 01 ; 10 ; 12 ; 2.5
- 02 ; 10 ; 14 ; 3
- 03 ; 10 ; 19 ; 6
- 04 ; 12 ; 18 ; 3
- ...

imaginons que je veuille faire un DLookUp pour r=E9cup=E9rer
numCommentaire et que je fasse:
temp =3D DLookup("[numCommentaire]", "MA_TABLE", "[numAction] =3D 10")

J'aimerais savoir ce que va me renvoyer DLookUp, =E0 savoir un
enregistrement, une erreur ou alors un tableau contenant mes 3
enregistrements...

Il va de soit que =E7a m'arrangerait qu'il ne me renvoie qu'une seule
valeur, j'int=E9grerais alors mon DLookUp dans un Loop et je pourrais
alors faire mes traitements sur les diff=E9rentes valeurs.


Merci d'avance de vos r=E9ponses.

6 réponses

Avatar
Tisane
Bonjour brainburnt,

Imaginons une table comme suit:
- numAuto (auto-increment)
- numAction (numérique)
- numCommentaire (numérique)
- tempsAction(numérique)
avec les enregistrements suivants:
- 01 ; 10 ; 12 ; 2.5
- 02 ; 10 ; 14 ; 3
- 03 ; 10 ; 19 ; 6
- 04 ; 12 ; 18 ; 3
- ...
imaginons que je veuille faire un DLookUp pour récupérer
numCommentaire et que je fasse:
temp = DLookup("[numCommentaire]", "MA_TABLE", "[numAction] = 10")
J'aimerais savoir ce que va me renvoyer DLookUp, à savoir un
enregistrement, une erreur ou alors un tableau contenant mes 3
enregistrements...
[...]


Pourquoi tu n'essaies pas ?-)

--
Tisane

Avatar
Eric
Bonjour,

Avec un petit coup de F1 sur DLookUp(), on obtient, entre autres
informations, dans la catégorie Remarques:
<COPY>
La fonction RechDom (DLookup) renvoie une seule valeur de champ à partir
de l'information spécifiée dans critère. L'argument critère est
facultatif, mais si vous ne lui associez pas de valeur, la fonction
RechDom (DLookup) renvoie simplement une valeur aléatoire dans le domaine.

Si aucun enregistrement ne satisfait à critère ou si domaine ne contient
pas d'enregistrement, la fonction RechDom (DLookup) renvoie la valeur Null.

Si plusieurs enregistrements satisfont à critère, la fonction RechDom
(DLookup) renvoie la valeur du champ de la première occurrence. Il est
recommandé de choisir un critère qui garantira l'unicité de la valeur de
champ renvoyée par la fonction RechDom (DLookup). Il se peut que vous
vouliez utiliser une valeur de clé primaire pour ce critère, comme [N°
employé] dans l'exemple suivant pour garantir que la fonction RechDom
(DLookup) renvoie une valeur unique :
Dim varX As Variant
varX = DLookup("[Nom]", "Employés", "[N° employé] = 1")
</COPY>

Je pense que tu as toutes les infos en main là !

alors tout d'abord bonjour a tous,

voila ma question:

Imaginons une table comme suit:

- numAuto (auto-increment)
- numAction (numérique)
- numCommentaire (numérique)
- tempsAction(numérique)

avec les enregistrements suivants:

- 01 ; 10 ; 12 ; 2.5
- 02 ; 10 ; 14 ; 3
- 03 ; 10 ; 19 ; 6
- 04 ; 12 ; 18 ; 3
- ...

imaginons que je veuille faire un DLookUp pour récupérer
numCommentaire et que je fasse:
temp = DLookup("[numCommentaire]", "MA_TABLE", "[numAction] = 10")

J'aimerais savoir ce que va me renvoyer DLookUp, à savoir un
enregistrement, une erreur ou alors un tableau contenant mes 3
enregistrements...

Il va de soit que ça m'arrangerait qu'il ne me renvoie qu'une seule
valeur, j'intégrerais alors mon DLookUp dans un Loop et je pourrais
alors faire mes traitements sur les différentes valeurs.


Merci d'avance de vos réponses.



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Raymond [mvp]
Bonjour.

Dlookup, dans ce cas, renvoie la 1ere valeur qu'il trouve de façon
aléatoire.
deux dlookup immédiat ne renverront pas forcément la même valeur car la
recherche est aléatoire et il n'y a pas de paramètre de tri dans cette
fonction.
un dlookup dans une boucle, ça doit être quelque chose !

il vaudrait mieux envisager de passer par une requête et un recordset.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13183 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"brainburnt" a écrit dans le message de news:

alors tout d'abord bonjour a tous,

voila ma question:

Imaginons une table comme suit:

- numAuto (auto-increment)
- numAction (numérique)
- numCommentaire (numérique)
- tempsAction(numérique)

avec les enregistrements suivants:

- 01 ; 10 ; 12 ; 2.5
- 02 ; 10 ; 14 ; 3
- 03 ; 10 ; 19 ; 6
- 04 ; 12 ; 18 ; 3
- ...

imaginons que je veuille faire un DLookUp pour récupérer
numCommentaire et que je fasse:
temp = DLookup("[numCommentaire]", "MA_TABLE", "[numAction] = 10")

J'aimerais savoir ce que va me renvoyer DLookUp, à savoir un
enregistrement, une erreur ou alors un tableau contenant mes 3
enregistrements...

Il va de soit que ça m'arrangerait qu'il ne me renvoie qu'une seule
valeur, j'intégrerais alors mon DLookUp dans un Loop et je pourrais
alors faire mes traitements sur les différentes valeurs.


Merci d'avance de vos réponses.
Avatar
brainburnt
Suite à ton très bon conseil ^^ j'ai donc fais un test mais cette
fois une autre question survient.

Imaginons une table comme suit:

- numAuto (auto-increment)
- numAction (numérique)
- numCommentaire (numérique)
- tempsAction(numérique)

avec les enregistrements suivants:

- 01 ; 10 ; 12 ; 2.5
- 02 ; 10 ; 14 ; 3
- 03 ; 10 ; 19 ; 6
- 04 ; 12 ; 18 ; 3
- ...



imaginons que je récupère la première valeur, à savoir 12 et que je
supprime cette enregistrement de la table

j'ai donc un
Do until (temp = null)
strSQL = 'requete de suppression
docmd.runSQL (strSQL)
temp = DLookup("[numCommentaire]", "MA_TABLE", "[numAction] = 10")
Loop

mais là je ne sais pas comment actualiser la table pour qu'il prenne
en compte la suppression avant que je ne relance mon DLookUP.

Merci d'avance





Tisane wrote:
Bonjour brainburnt,

Imaginons une table comme suit:
- numAuto (auto-increment)
- numAction (numérique)
- numCommentaire (numérique)
- tempsAction(numérique)
avec les enregistrements suivants:
- 01 ; 10 ; 12 ; 2.5
- 02 ; 10 ; 14 ; 3
- 03 ; 10 ; 19 ; 6
- 04 ; 12 ; 18 ; 3
- ...
imaginons que je veuille faire un DLookUp pour récupérer
numCommentaire et que je fasse:
temp = DLookup("[numCommentaire]", "MA_TABLE", "[numAction] = 10")
J'aimerais savoir ce que va me renvoyer DLookUp, à savoir un
enregistrement, une erreur ou alors un tableau contenant mes 3
enregistrements...
[...]


Pourquoi tu n'essaies pas ?-)

--
Tisane



Avatar
3stone
Salut,

"brainburnt"
Imaginons une table comme suit:
- numAuto (auto-increment)
- numAction (numérique)
- numCommentaire (numérique)
- tempsAction(numérique)

avec les enregistrements suivants:
- 01 ; 10 ; 12 ; 2.5
- 02 ; 10 ; 14 ; 3
- 03 ; 10 ; 19 ; 6
- 04 ; 12 ; 18 ; 3
- ...

imaginons que je veuille faire un DLookUp pour récupérer
numCommentaire et que je fasse:
temp = DLookup("[numCommentaire]", "MA_TABLE", "[numAction] = 10")

J'aimerais savoir ce que va me renvoyer DLookUp, à savoir un
enregistrement, une erreur ou alors un tableau contenant mes 3
enregistrements...

Il va de soit que ça m'arrangerait qu'il ne me renvoie qu'une seule
valeur, j'intégrerais alors mon DLookUp dans un Loop et je pourrais
alors faire mes traitements sur les différentes valeurs.
------------------------

Je ne te conseille pas d'utiliser une fonction de domaine comme Dlookup()
dans une boucle ! Un recordset est indiqué dans ce cas là.

Aussi, ne pas oublier que c'est la clé primaire (et non la clé externe)
qui permet d'identifier un enregistrement !!

- Ouvrir un recordset en indiquant un ordre de tri sur un ou plusieurs champs
-> démarrer la boucle avec test sur EOF
- traitement
-> boucler


les archives sont pleines de codes qui peuvent t'inspirer ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
brainburnt
Un grand merci à vous tous, car grâce à vous ma fonction fonctionne
parfaitement.

Merci beaucoup