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

Requête avec table imbriquée

8 réponses
Avatar
David
Bonjour,=20

J'ai un formulaire (1 fiche par client) qui utilise un=20
sous-formulaire pour la liste des actions de contact=20
op=E9r=E9, style le 1/4 appel, le 3/4 mail, etc ....

J'ai besoin de faire un autre formulaire qui reprend le=20
nom du client et seulement le dernier enregistrement du=20
sous-formulaire ... Pour ce faire j'ai fait une requ=EAte,=20
et pour chacun des champs du sous-formulaire, je choisis=20
dernier, mais cela ne marche pas... Est-ce que qqun peut=20
m'aider ....

Merci

8 réponses

Avatar
Eric
Bojour David

"David" écrivait news:
Bonjour,

J'ai un formulaire (1 fiche par client) qui utilise un
sous-formulaire pour la liste des actions de contact
opéré, style le 1/4 appel, le 3/4 mail, etc ....

J'ai besoin de faire un autre formulaire qui reprend le
nom du client et seulement le dernier enregistrement du
sous-formulaire ... Pour ce faire j'ai fait une requête,
et pour chacun des champs du sous-formulaire, je choisis
dernier, mais cela ne marche pas... Est-ce que qqun peut
m'aider ....



Si tu mets la fonction Dernier sur chaque champ de ta requête, tu ne
pourras pas obtenir ce que tu désires car tu obtiens pour chaque type de
contact le dernier et non pas le dernier contact en date, quelque soit le
contact.

Je te propose la solution suivante, mais il doit y avoir certainement
mieux:

Un 1er formulaire comprenant les champs IdClient et NomClient au minimum
de la table Client, une zone de texte nommée Lien dont la propriété
Visible sera mise à Non. Son contenu sera précisé plus tard
Appelons le FicheClientDernierContact.

Un 2ème formulaire tabulaire ListeContact basé sur la table ContactClient
qui doit avoir le champs suivants :
IdContact : NumAuto
IdClient : Numero Entier Long
DateContact : Date/Heure - Format abrégé
TypeContact : Texte
Commentaire : Mémo
(à adapter suivant ton cas)

Dans ce 2eme formulaire, basé sur la table ci-dessus tu mets les champs:
DateContact, TypeContact & Commentaire
Propriété du formulaire :
Ajout Autorisé : Non
Boutons de déplacement : Non

Ce formulaire tu l'inséres, après l'avoir sauvé, dans le 1er avec
l'assistant. (la laison se fera automatiquement sur l'IdClient)

Définissons le contenu du champ Lien du 1er formulaire:
=RechDom("[IdContact]";"ContactClient";"[dateContact]=#" & Format(MaxDom
("[DateContact]";"ContactClient";"Numclient=" &
[numclient]);"mm/jj/aaaa") & "# and NumClient=" & [NumClient])

ceci va te retourner l'IdContact du dernier contact que tu as eu avec le
client quelque soit le type de contact (mel, fax, tel, visite,...)

Appelles les propriétés du 2ème formulaire(ListeContact),
Onglet Données - Source :
SELECT [ContactClient].[DateContact], [ContactClient].[TypeContact],
[ContactClient].[Commentaires] FROM ContactClient WHERE
((([ContactClient].[IdContact])=Formulaires!FicheClientDernierContact!
Lien));


Voila, j'espère que ca te dépannera

A+
Eric

PS :
A toi de gérer le cas où il n'y a pas eu de contact avec certains
clients, etc ...
Il est clair que beaucoup d'amélioratons peuvent être apportées.

Avatar
Eric
re

Lire pour
=RechDom("[IdContact]";"ContactClient";"[dateContact]=#" &
Format(MaxDom("[DateContact]";"ContactClient";"Numclient=" &
[numclient]);"mm/jj/aaaa") & "# and NumClient=" & [NumClient])

ceci :

=RechDom("[IdContact]";"ContactClient";"[dateContact]=#" &
Format(MaxDom("[DateContact]";"ContactClient";"IdClient=" &
[IdClient]);"mm/jj/aaaa") & "# and IdClient=" & [IdClient])



Sorry & en esperant qu'il n'y ait pas d'autres fautes.
Eric
Avatar
Pierre CFI [mvp]
si dans une req une date est pas en format date US (1 point en moins qui comptera, et sera sur le livret scolaire)

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news:
re

Lire pour
=RechDom("[IdContact]";"ContactClient";"[dateContact]=#" &
Format(MaxDom("[DateContact]";"ContactClient";"Numclient=" &
[numclient]);"mm/jj/aaaa") & "# and NumClient=" & [NumClient])

ceci :

=RechDom("[IdContact]";"ContactClient";"[dateContact]=#" &
Format(MaxDom("[DateContact]";"ContactClient";"IdClient=" &
[IdClient]);"mm/jj/aaaa") & "# and IdClient=" & [IdClient])



Sorry & en esperant qu'il n'y ait pas d'autres fautes.
Eric




Avatar
Eric
"Pierre CFI [mvp]" écrivait
news:Oy#:

si dans une req une date est pas en format date US (1 point en moins
qui comptera, et sera sur le livret scolaire)



Bonjour,

j'en suis pas sûr.

Dans le requêteur, je mets en critere du champ DateFacture: 24/04/02,
entouré de dièses automatiquement par Access, donc date Fr comme tu vois et
exemple cohérent contrairement parfois à ceux livrés par Microsoft du genre
01/01/02 où on ne sait pas si c'est le jour ou le mois en premier.

le sql traduit est :
SELECT tFacture.NumFacture, tFacture.MontantHT, tFacture.DateFacture
FROM tFacture
WHERE (((tFacture.DateFacture)=#4/24/2002#));

et là, que contate-te-je !!! #4/24/02# surprenant non ?????

donc j'en déduis qu'il est toujours préférable de basculer les dates au
format US.

Aurais-je tort ? Je suis toujours partant pour apprendre.

Eric

Avatar
Pierre CFI [mvp]
justement en sql çà passe en us, donc il faut le mettre en français dans l'editeur, en us en sql ou vba
-2 points pour tentative de rebellion :o))

Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news:
"Pierre CFI [mvp]" écrivait
news:Oy#:

si dans une req une date est pas en format date US (1 point en moins
qui comptera, et sera sur le livret scolaire)



Bonjour,

j'en suis pas sûr.

Dans le requêteur, je mets en critere du champ DateFacture: 24/04/02,
entouré de dièses automatiquement par Access, donc date Fr comme tu vois et
exemple cohérent contrairement parfois à ceux livrés par Microsoft du genre
01/01/02 où on ne sait pas si c'est le jour ou le mois en premier.

le sql traduit est :
SELECT tFacture.NumFacture, tFacture.MontantHT, tFacture.DateFacture
FROM tFacture
WHERE (((tFacture.DateFacture)=#4/24/2002#));

et là, que contate-te-je !!! #4/24/02# surprenant non ?????

donc j'en déduis qu'il est toujours préférable de basculer les dates au
format US.

Aurais-je tort ? Je suis toujours partant pour apprendre.

Eric



Avatar
Eric
Maitre, ;-))

explique-moi comment marche RechDom (ou une autre fonction de domaine), du
moins ce qu'il y a derriere mais uniquement le critère.

Que je tape DLookUp et que ca soit traduit par RechDom, je m'imagine qu'il
y a des tables d'équivalence sur les mots "réservés".
Mais par contre, le 3eme argument correspond bien à la clause Where d'un
Select, non ? donc pour moi je pensais qu'il était nécessaire de respecter
la manière de l'écrire en langage SQL. (Il est vrai que si je laisse le
date au format Fr ca marche aussi, mais ne serait-ce pas du à
l'interpreteur?).

J'espère que je vais pas avoir 00 ce coup-là, sinon je suis condamné à
revenir à la session de Septembre, adieu les voyages dans les iles :(


Un élève studieux mais long à la détente
Avatar
Pierre CFI [mvp]
dans une req ou une source d'une zone de texte, effectivement il met la fonction anglaise en français, mais c'est tout, si tu mets
des ' au lieu de ; , il plante, idem pour les formats, toutes instructions et traduire en anglais, donc il faut laisser format
francais , dans les expressions françaises. C'est un peu logique, le pekin moyen qui fait sa req en francais, je vois pas comment il
pourrait devener que les dates sont us
cela dit les champs dans word sont maintenant en US

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news:
Maitre, ;-))

explique-moi comment marche RechDom (ou une autre fonction de domaine), du
moins ce qu'il y a derriere mais uniquement le critère.

Que je tape DLookUp et que ca soit traduit par RechDom, je m'imagine qu'il
y a des tables d'équivalence sur les mots "réservés".
Mais par contre, le 3eme argument correspond bien à la clause Where d'un
Select, non ? donc pour moi je pensais qu'il était nécessaire de respecter
la manière de l'écrire en langage SQL. (Il est vrai que si je laisse le
date au format Fr ca marche aussi, mais ne serait-ce pas du à
l'interpreteur?).

J'espère que je vais pas avoir 00 ce coup-là, sinon je suis condamné à
revenir à la session de Septembre, adieu les voyages dans les iles :(


Un élève studieux mais long à la détente




Avatar
David
Juste pour vous dire merci à tous les deux ...

Je vais attaquer sérieusement le problème avec toutes les
infos que vous m'avez donné.

Sympa.

A plus