OVH Cloud OVH Cloud

Recherche dans un sous-formulaire

14 réponses
Avatar
rose
bonjour =E0 tout le NG,


j'ai presque lu les 738 r=E9sultats que proposent les archives de ce NG
et je ne trouve pas de solution =E0 mon probl=E8me...
et pourtant, beaucoup semblent s'=EAtre pos=E9 cette m=EAme question:

j'ai un formuaire principal, en haut : Entreprises
et un sous-formulaire, en bas : Contacts

pour une entreprise s=E9lectionn=E9e, j'ai les contacts correspondants
qui s'affichent dans le sous-formulaire du bas (relation 1 =E0
plusieurs), c'est normal...

mon pb (et celui de beaucoup d'autres) c'est que je veux faire
l'inverse:
je veux chercher un contact dans mon sous-formulaire (en bas), et voir
appara=EEtre l'entreprise =E0 laquelle il appartient (en haut)

dans ce NG, on parle de champs p=E8re et fils, de findfirst, et autre
code VBA, j'ai tent=E9 des essais, mais j'ai pas r=E9ussi =E0 faire
appara=EEtre l'entreprise du contact recherch=E9.

merci pour votre aide (PS:je travaille avec Access 2002)

Rose

10 réponses

1 2
Avatar
Jessy Sempere [MVP]
Bonjour

Pour ce que tu souhaites, il n'est nul besoin d'utiliser un formulaire
avec un sous formulaire...

Tu fais une zone de texte indépendante et tu mets comme source :
=RechDom("[Entreprise]";"tblContact";"[Contact]='" & NomduContact & "'")

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"rose" a écrit dans le message de
news:
bonjour à tout le NG,


j'ai presque lu les 738 résultats que proposent les archives de ce NG
et je ne trouve pas de solution à mon problème...
et pourtant, beaucoup semblent s'être posé cette même question:

j'ai un formuaire principal, en haut : Entreprises
et un sous-formulaire, en bas : Contacts

pour une entreprise sélectionnée, j'ai les contacts correspondants
qui s'affichent dans le sous-formulaire du bas (relation 1 à
plusieurs), c'est normal...

mon pb (et celui de beaucoup d'autres) c'est que je veux faire
l'inverse:
je veux chercher un contact dans mon sous-formulaire (en bas), et voir
apparaître l'entreprise à laquelle il appartient (en haut)

dans ce NG, on parle de champs père et fils, de findfirst, et autre
code VBA, j'ai tenté des essais, mais j'ai pas réussi à faire
apparaître l'entreprise du contact recherché.

merci pour votre aide (PS:je travaille avec Access 2002)

Rose
Avatar
rose
Bonjour Jessy

le problème est que je dois utiliser un formulaire, je n'ai pas le
choix, ça m'est imposé...

mais si je pars sur ton idée, tu veux bien préciser ou détailler un
peu plus cette fameuse zone de texte, je la mets où, dans un
formulaire?
j'aimerai bien creuser cette idée...

merci
Rose
Avatar
Jessy Sempere [MVP]
Ok

En fait, il te faut le formulaire, je disais que ce dont tu n'avais pas
besoin, c'était le sous formulaire...

Donc oui, tu mets ta zone de texte sur ton formulaire et tu lui met
comme source de donnée ce que je te disais auparavant.
(faudra changer la synthaxe pour la faire correspondre à tes noms
de tables et de champ)

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"rose" a écrit dans le message de
news:
Bonjour Jessy

le problème est que je dois utiliser un formulaire, je n'ai pas le
choix, ça m'est imposé...

mais si je pars sur ton idée, tu veux bien préciser ou détailler un
peu plus cette fameuse zone de texte, je la mets où, dans un
formulaire?
j'aimerai bien creuser cette idée...

merci
Rose
Avatar
rose
Jessy,

merci de répondre aussi rapidement,

j'ai mis dans mon formulaire principal une zone de texte et comme
source, ce que tu m'indiques:
=RechDom("[Entreprise]";"tblContact";"[Contact]='" & NomduContact &
"'")

je ne distingue pas, hélas, les changements à effectuer; par quoi je
remplace:

[Entreprise], par la clé primaire de mon formulaire principal?
[Contact], par la clé primaire de mon sous-formulaire?
tblContact, c'est le nom de ma table T_Contacts
NomduContact, est-ce le nom que je dois donner à ma zone de texte
nouvellement insérée?

j'ai effectué ces remplacements de la sorte, dans Source contrôle de
ma zone de texte mais ça me met #Erreur
pourtant, ça m'intéresse, j'aimerai bien y arriver...

Rose
Avatar
rose
hello Jessy,

j'y arrive pas ;o(

quelqu'un a une autre idée? je suis preneuse!
merci

Rose
Avatar
3stone
Bonjour,

"rose" j'ai presque lu les 738 résultats que proposent les archives de ce NG



84.033 en ce moment... ;-)
http://groups.google.com/group/microsoft.public.fr.access?start=0

plus une... (celle-i ;-)



j'ai un formuaire principal, en haut : Entreprises
et un sous-formulaire, en bas : Contacts

pour une entreprise sélectionnée, j'ai les contacts correspondants
qui s'affichent dans le sous-formulaire du bas (relation 1 à
plusieurs), c'est normal...

mon pb (et celui de beaucoup d'autres) c'est que je veux faire
l'inverse:
je veux chercher un contact dans mon sous-formulaire (en bas), et voir
apparaître l'entreprise à laquelle il appartient (en haut)



Ok, mais le contact que tu cherche dans le sous formulaire,
peut-il être le contact pour plusieures entreprises ou une seule ?


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Avatar
rose
bonjour Pierre (3stone),

you said:" Ok, mais le contact que tu cherche dans le sous formulaire,
peut-il être le contact pour plusieures entreprises ou une seule ? "

ce fameux contact que je recherche n'appartient qu'à une seule et
même entreprise (relation 1 entreprise pour plusieurs contacts)
t'as une idée de comment je pourrais faire?

merci, tu me donnes souvent un coup de main...

PS: les 738 résultats correspondent aux mots-clés 'recherche
sous-formulaire' :o)

Rose
Avatar
3stone
Salut,

"rose"
you said:" Ok, mais le contact que tu cherche dans le sous formulaire,
peut-il être le contact pour plusieures entreprises ou une seule ? "

ce fameux contact que je recherche n'appartient qu'à une seule et
même entreprise (relation 1 entreprise pour plusieurs contacts)
t'as une idée de comment je pourrais faire?



Si la table T_Entreprises est en relation avec la T_Contacts
par le champ IDentreprise...

Si tu ajoute un TextBox "txtRecherche" à ton formulaire principal,
tu peux faire quelque chose comme :



Dim NoEntreprise As Long

NoEntreprise = Nz(DLookup("IDentreprise", "T_Contacts", "NomContact='" & txtRecherche & "'"), 0)

If NoEntreprise > 0 Then

With Me.RecordsetClone
.FindFirst "IDentreprise=" & NoEntreprise
Me.Bookmark = .Bookmark
End With

Else

MsgBox "Pas trouvé"

End If


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Avatar
rose
merci Pierre,

j'ai essayé le code et j'ai plusieurs questions:

NoEntreprise est une variable? qui correspond à un nombre (long)?
si je tape du texte dans txtRecherche, est-ce que ça va marcher?
je veux bien que tu m'expliques rapidement ce que signifie le code,
stp

IDentreprise: c'est la clé primaire de ma table T_Entreprises ou de ma
table T_Contacts? car j'ai essayé les 2 et il m'affiche à chaque fois
le msgbox Pas trouvé

j'ai placé ce code sur l'évènement Après MAJ, ai-je bien fait?

merci encore
Rose
Avatar
3stone
Rose ??

"rose"
j'ai essayé le code et j'ai plusieurs questions:

NoEntreprise est une variable? qui correspond à un nombre (long)?


Positionne ton curseur dur DIM et tu pousse sur F1

(c'est fou ce qu'on trouve avec F1 ;-)


si je tape du texte dans txtRecherche, est-ce que ça va marcher?


Tu doute de ces 3 lignes de code ? ;-)


je veux bien que tu m'expliques rapidement ce que signifie le code,
stp

IDentreprise: c'est la clé primaire de ma table T_Entreprises ou de ma
table T_Contacts? car j'ai essayé les 2 et il m'affiche à chaque fois
le msgbox Pas trouvé


C'est tout de même suffisement "parlant"...

IDentreprise est l'identifiant de la table entreprise
(un numéroauto par exemple)

NoEntreprise va mémoriser l'identifiant IDentreprise qui DOIT
se trouver dans la table Contacts avec IDcontact (identifiant contact)
et le nom du contact.

.FindFirst "IDentreprise=" & NoEntreprise
ira chercher le premier "identifiant entreprise" qui aura la valeur Noentreprise

et le "Bookmark" synchronise le formulaire sur le signet trouvé



j'ai placé ce code sur l'évènement Après MAJ, ai-je bien fait?

oui... vu qu'il doit réagir après la saisie dans ce textbox...



Une autre solution (peut-être plus simple pour toi) est de créer une requête
avec le champ "IDentreprise" de la table T_Entreprises et le champ "NomContact"
de la table "T_Contacts"

Tu crée une liste déroulante baséee sur cette requête dans le formulaire principal,
et tu ajoute le code suivant dans l'après mise à jour de la liste:

With Me.RecordsetClone
.FindFirst "IDentreprise=" & Me.NomDeLaListe
Me.Bookmark = .Bookmark
End With


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
1 2