Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

syntaxe RechDom

3 réponses
Avatar
agathe_lorin
Je réitère ma question car vraiment je ne comprends oujours pas la
syntaxe de RechDom, ou même SomDom, CpteDom etc...
Peut on m'expliquer la différence entre cees différentes expressions:
=somdom("[montant]";"[commandes];"[code client]='rattc'")
Ici je comprends que l'on veuille afficher la somme du montant de la
table commandes quand le code client = RATTC

=RechDom("[Société]";"fournisseurs";"[N° fournisseur]="&[N°
fournisseur])
ou
=RechDom("[contact]";"[fournisseurs]";"[N°
fournisseur]=formulaires![N° fournisseur]")

Quelle est la différence entre les 2 syntaxes (les exemples choisis
sont pris au hasard dans l'aide d'access ou autre donc ne
correspondent pas aux meme bases)?

=RechDom("[Département]";"T_départements";"[Dép]='"&[texte77]&"'")
La encore pourquoi deds apostropes et des guillemets et même si ça
permet d'indiquer du texte littéral je ne comprends pas leur
emplacement: pourquoi après le =, etc...

J'ai vraiment du mal avec cette fonction. Je n'arrive pas à trouver la
logique de la syntaxe.
Voila et surtout merci d'avance à ceux qui vont m'éclairer.

3 réponses

Avatar
soraya.sarl
Bonjour agathe,

la logique de ces syntaxe tient de l'utilisation de la concaténation
d'éléments de texte quand il y a une utilisation de variable.

Chacune des trois parties des formules de domaine (RechDom...) doit etre un
élément de texte.

=somdom("[montant]";"[commandes];"[code client]='rattc'")
Dans le premier cas, la troisieme partie est entre guillemets comme les
autres. mais comme le critere fait référence à une valeur qui est elle meme
du texte, cette valeur (rattc) doit etre entre guillemets comme toutes les
valeurs textes. mais comme il s'agit d'une expression déjà entre guillemet,
il faut utiliser l'apostrophe pour qu'il n'y ai pas de confusion entre les
guillemets de l'expression globale et les "guillemets" (apostrophe donc) de
la valeur de critere. Si le code client était un champs de type numérique,
tu ne rencontrerais pas cette particularité puisqu'alors cette troisieme
partie s'écrirait "[Code client]=1" par exemple.


=RechDom("[Société]";"fournisseurs";"[N° fournisseur]="&[N°fournisseur])
Dans le deuxieme cas tu n'a pas de notion d'apostrophe (aussi appelé cote)
car le champs [N° fournisseur] doit etre de type numérique mais comme c'est
une valeur variable elle est concaténé avec un &.


=RechDom("[contact]";"[fournisseurs]";"[N° fournisseur]=formulaires![N°
fournisseur]")
Quant au troisieme exemple si tu veux mon avis il est faux et je serais
étonné qu'il fonctionne mais ca m'est déjà arrivé de devoir corriger des
syntaxes prises directement dans l'aide d'access alors... Pour moi la
syntaxe serait plutot :
=RechDom("[contact]";"[fournisseurs]";"[N° fournisseur]="&
formulaires![MonFormulaire]![N° fournisseur])
et si le champs [N° fournisseur] était de type texte se serait alors :
=RechDom("[contact]";"[fournisseurs]";"[N° fournisseur]='"&
formulaires![MonFormulaire]![N° fournisseur]&"'")


=RechDom("[Département]";"T_départements";"[Dép]='"&[texte77]&"'")
Dans le quatrieme cas, la valeur est également variable et il faut que le
resultat de la syntaxe du critere respecte exactement les memes regle que
dans le premier cas. on utilise alors la concatenation en ayant ce principe
à l'esprit. Tu retrouves donc le début et la fin de ton expression qui est
fixe (et donc entre guillemet) et le milieu qui est l'expression de la
variable (pas entre guillemet), le tout relié par des &.
tu as donc :
"[Dép]='"
[texte77]
"'"
quand la variable prend une valeur cela donne donc le resultat suivant pour
la valeur 75 par exemple
" [ D é p ] = ' 75 ' "

C'est pas toujours d'une grande évidence a priori la syntaxe des expressions
et je m'y suis beaucoup perdu personnellement au début, mais il faut prendre
le coups et ca vient après plusieurs exemples...

En espérant avoir été a peu près clair..

Alexis

----- Original Message -----
From: "Baobab"
Newsgroups: microsoft.public.fr.access
Sent: Tuesday, October 07, 2003 11:57 AM
Subject: syntaxe RechDom


Je réitère ma question car vraiment je ne comprends oujours pas la
syntaxe de RechDom, ou même SomDom, CpteDom etc...
Peut on m'expliquer la différence entre cees différentes expressions:
=somdom("[montant]";"[commandes];"[code client]='rattc'")
Ici je comprends que l'on veuille afficher la somme du montant de la
table commandes quand le code client = RATTC

=RechDom("[Société]";"fournisseurs";"[N° fournisseur]="&[N°
fournisseur])
ou
=RechDom("[contact]";"[fournisseurs]";"[N°
fournisseur]=formulaires![N° fournisseur]")

Quelle est la différence entre les 2 syntaxes (les exemples choisis
sont pris au hasard dans l'aide d'access ou autre donc ne
correspondent pas aux meme bases)?

=RechDom("[Département]";"T_départements";"[Dép]='"&[texte77]&"'")
La encore pourquoi deds apostropes et des guillemets et même si ça
permet d'indiquer du texte littéral je ne comprends pas leur
emplacement: pourquoi après le =, etc...

J'ai vraiment du mal avec cette fonction. Je n'arrive pas à trouver la
logique de la syntaxe.
Voila et surtout merci d'avance à ceux qui vont m'éclairer.


Avatar
Charles ERNST
Si le champ [N° fournisseur] du formulaire courant est 15432 par exemple
=RechDom("[Société]";"fournisseurs";"[N° fournisseur]="&[N° fournisseur])
deviendra à l'exécution
=RechDom("[Société]";"fournisseurs";"[N° fournisseur]432")
Si le champ [Texte77] du formulaire courant est "abcdef",
=RechDom("[Département]";"T_départements";"[Dép]='"&[texte77]&"'") deviendra
à l'exécution
=RechDom("[Département]";"T_départements";"[Dép]='abcdef'")

Sans les guillements, la construction de la chaine est possible
"[Dép]«cdef") mais l'exécution sera fautive
mais dans le cas d'une référence :
=RechDom("[contact]";"[fournisseurs]";"[N° fournisseur]=formulaires![Nom du
formulaire]![Texte77]"),
access se charge de faire correctement la conversion de la référence

dans les exemples ci-dessus on compose une chaine de caractère en
concaténant des éléments par & :
"[Dép]='"&[texte77]&"'" donne "[Dép]='contenudducontroletexte77'"

La syntaxe ci-dessous est fautive :
=RechDom("[contact]";"[fournisseurs]";"[N° fournisseur]=formulaires![N°
fournisseur]")
Il faudrait écrire
=RechDom("[contact]";"[fournisseurs]";"[N° fournisseur]=formulaires![Nom du
formulaire]![N° fournisseur]")

Si l'on est dans le formulaire formulaires![Nom du formulaire], on obtient
le même résultat. que plus haut

Cependant si on a deux formulaires ouverts : F1 et F2
Si Formulaires![F1] et formulaires![F2] contiennent chacun un contrôle [N°
Fournisseur] et que celui de F1 contient 100 et celui de F2 contient 200
=RechDom("[Société]";"fournisseurs";"[N° fournisseur]="&[N° fournisseur])
deviendra à l'exécution dans F1
=RechDom("[Société]";"fournisseurs";"[N° fournisseur]0")
dans F2
=RechDom("[Société]";"fournisseurs";"[N° fournisseur] 0)
par contre
=RechDom("[contact]";"[fournisseurs]";"[N° fournisseur]=formulaires![F1]![N°
fournisseur]")
qu'il soit éxécuté dans F1 ou F2 renverra toujours 100


"Baobab" a écrit dans le message de
news:
Je réitère ma question car vraiment je ne comprends oujours pas la
syntaxe de RechDom, ou même SomDom, CpteDom etc...
Peut on m'expliquer la différence entre cees différentes expressions:
=somdom("[montant]";"[commandes];"[code client]='rattc'")
Ici je comprends que l'on veuille afficher la somme du montant de la
table commandes quand le code client = RATTC

=RechDom("[Société]";"fournisseurs";"[N° fournisseur]="&[N°
fournisseur])
ou
=RechDom("[contact]";"[fournisseurs]";"[N°
fournisseur]=formulaires![N° fournisseur]")

Quelle est la différence entre les 2 syntaxes (les exemples choisis
sont pris au hasard dans l'aide d'access ou autre donc ne
correspondent pas aux meme bases)?

=RechDom("[Département]";"T_départements";"[Dép]='"&[texte77]&"'")
La encore pourquoi deds apostropes et des guillemets et même si ça
permet d'indiquer du texte littéral je ne comprends pas leur
emplacement: pourquoi après le =, etc...

J'ai vraiment du mal avec cette fonction. Je n'arrive pas à trouver la
logique de la syntaxe.
Voila et surtout merci d'avance à ceux qui vont m'éclairer.


Avatar
3stone
Salut,

"Baobab" a écrit
| Peut on m'expliquer la différence entre cees différentes expressions:
| =somdom("[montant]";"[commandes];"[code client]='rattc'")
| Ici je comprends que l'on veuille afficher la somme du montant de la
| table commandes quand le code client = RATTC
|
| =RechDom("[Société]";"fournisseurs";"[N° fournisseur]="&[N° fournisseur])

Ici, on compare la valeur de [N° fournisseur] de la table "fournisseurs"
avec un contrôle [N° fournisseur] sur le formulaire qui contient le code...


| =RechDom("[contact]";"[fournisseurs]";"[N°
| fournisseur]=formulaires!NomDuFormulaire![N° fournisseur]")

(tu a une erreur de recopie... il manque le nom du formulaire)

Alors que ici, on fait cette comparaison avec le contrôle [N° fournisseur]
qui peut se trouver sur une *autre* formulaire ouvert...
puisque on indique le nom de formulaire (ouvert) !

| Quelle est la différence entre les 2 syntaxes (les exemples choisis
| sont pris au hasard dans l'aide d'access ou autre donc ne
| correspondent pas aux meme bases)?

Comme expiqué, avec la première tu reste dans le formulaire qui
contient le code... alors qu'avec la seconde tu peux renseigner
n'importe quel formulaire ouvert!


| =RechDom("[Département]";"T_départements";"[Dép]='"&[texte77]&"'")
| La encore pourquoi deds apostropes et des guillemets et même si ça
| permet d'indiquer du texte littéral je ne comprends pas leur
| emplacement: pourquoi après le =, etc...

Si [Dép] est un champ numérique, tu fait "[Dép]=" & [texte77]

=>> 36 = 36

Si [Dép] est un champ texte, tu doit renseigner une chaine de catractères...
cela se fait en "entourant" avec des apostrophes...

"[Dép]= '" & [texte77] & "'"

=>> "36" = "36"

Simple, non ;-))


Regarde également ceci:
http://www.mvps.org/accessfr/general/gen0018.htm


--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------