Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2010, 15h49   #1
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Par défaut Sélection dans un sous formulaire pour ouvrir un formulaire

Bonjour,

Voici mon problème actuel, j'ai un formulaire principale "frmSelectPatient" qui contient un sous formulaire "ListePatiente" en mode feuille de données

J'aimerais, lorsque je clic dans une ligne de se sous formulaire, sélection l'enregistrement (ou ce qu'il faut) puis au clic sur un bouton, ouvrir un autre formulaire "frmManagement" basé évidement sur l'enregistrement sélectionné.

j'ai trouvé ceci dans le forum
http://www.developpez.net/forums/d97...us-formulaire/

et cela dans la faq
http://access.developpez.com/faq/?page=Forms#PassValeur

mais je suis bien incapable d'adapter le tout. La clef primaire est pour les deux tables des formulaires "frmManagement" et "ListePatiente" sur un numéro auto "N°"

Merci pour votre aide
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 16h49   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Bonjour,

Peux-tu poster une BDD réduite compatible Access2000 pour que nous puissions dialoguer sur du concret ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 17h07   #3
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Bonjour Claude

Voici une base avec 1 seul enregistrement.

Ouvre dont le formulaire "frmSelectPatient"
tu y trouvera le sous formulaire d’où doit être faite la sélection, le bouton "Sélection" n'a pas de code, je pense qu'il en faut un pour "capturer" l'enregistrement pour que le deuxième bouton fonctionne "CRF Management", mais si on peut se passer du premier bouton ça me va.

Merci pour ton aide
Fichiers attachés
Type de fichier : zip Access_2000_db1.zip (38,1 Ko, 10 affichages)
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 17h28   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Je peux lire ta BDD, mais tu devrais y ajouter quelques données pour que je puisse tester.

Les tables tblCRFManagement, tblListePatiente, doivent contenir quelques exemples anonymes mais cohérents.

Je te propose un double-clic sur un contrôle du sous-formulaire pour déclencher l'ouverture de tblCRFManagement OK ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 18h03   #5
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Voila la base avec un peu de données

Je m'excuse pour cette question bête, mais quand tu dis, contrôle du sous formulaire, est-ce via un bouton ou un champs ? si c'est un bouton, va-t-il rester en place lors du défilement dans le sous formulaire ( il y aura plus de 3600 lignes )

Merci beaucoup
Fichiers attachés
Type de fichier : zip Access_2000_db1_2.zip (38,1 Ko, 6 affichages)
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 19h47   #6
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Voici la marche à suivre :

Ouvrir "tblListePatiente sous-formulaire" en mode design.

Sélectionner le contrôle [N°] ---> afficher les propriétés
Ouvrir onglet événements, double-clic sur « sur double-clic » ---> "[Procédure événementielle]" apparaît
Cliquer sur le bouton avec les …
----> l’éditeur de VBA s’ouvre et tu vois ceci :

Code :
1
2
3
4
5
6
Option Compare Database
Option Explicit
 
Private Sub N°_DblClick(Cancel As Integer)
 
End Sub

Tu remplaces tout par ceci
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Compare Database
Option Explicit
 
Private Sub CodeSite_DblClick(Cancel As Integer)
DoCmd.OpenForm "tblCRFManagement", acNormal, , "[N°] =" & Me.N°
End Sub
 
Private Sub ID_DblClick(Cancel As Integer)
DoCmd.OpenForm "tblCRFManagement", acNormal, , "[N°] =" & Me.N°
End Sub
 
Private Sub Monogram_DblClick(Cancel As Integer)
DoCmd.OpenForm "tblCRFManagement", acNormal, , "[N°] =" & Me.N°
End Sub
 
Private Sub N°_DblClick(Cancel As Integer)
DoCmd.OpenForm "tblCRFManagement", acNormal, , "[N°] =" & Me.N°
End Sub
C’est à dire que pour chacun des contrôles de "tblListePatiente sous-formulaire", à l’événement double-clic est associé un code
- qui ouvre le formulaire
- avec comme filtre la valeur du contrôle [N°] de l’enregistrement de "tblListePatiente sous-formulaire" sélectionné.
Comment ça marche.
Dans le formulaire "frmSelectPatient", lorsque tu double-cliques sur n'importe quel contrôle du sous-formulaire, tu ouvres "tblCRFManagement" au bon endroit.


Si après tout cela il te reste un peu de temps lis ceci

- conventions typographiques
http://argyronet.developpez.com/office/vba/convention/

ça n'a rien à voir avec le problème actuel mais cela te servira certainement.

Reviens si problème.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 20h04   #7
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Je ne vais pas revenir juste pour te dire que j'ai un problème, je reviens avant tout pour te dire MERCI pour le temps que tu passes à m'aider (ainsi que les autres) alors MERCI

Mais effectivement, il y a un problème, le formulaire "tblCRFManagement" s'ouvre bien, je peux y entrer des données, mais elles ne sont pas liées au champs N° du sous-formulaire, c'est ce seul champs qui permet d'identifier à coups sûr les enregistrement, pour les autres, il y a malheureusement des doublons.

Donc pour l'instant ca s'ouvre mais sans liaisons entre les données, si j'entre des données, par exemple, pour le 3eme enregistrement du sous formulaire dans "tblCRFManagement" je le ferme, je l'ouvre à nouveau les données ne sont plus là, mais elles sont attribuées au premier enregistrement du sous formulaire.

Je ne sais pas si tu me suis, j'avoue c'est compliqué

Merci encore !!
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 20h11   #8
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Exemple, je viens d'ajouter des enregistrements, le dernier est 999-PPP, j'ai double cliqué, rempli le formulaire et sauvegardé. (j'ai ecris 999-ppp dans le champs if visit not done...)

A l'ouverture, le formulaire est vide, par contre si j'ouvre 898-RER qui est l'avant dernier enregistrement pour lequel je n'ai pas rempli de formulaire, je me retrouve avec l'enregistrement du 999-PPP

J'espere que cette fois c'est plus clair

Voir la base jointe Merci
Fichiers attachés
Type de fichier : zip Access_2000_db1_3.zip (39,6 Ko, 7 affichages)
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 20h48   #9
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Je ne comprends pas ce que tu expliques.
Chez moi, cela semble OK.
Dans l'enregistrement pour la patiente [N°] = 8 je vois effectivement un 999-ppp mais j'ai l'impression qu'il résulte d'un test antérieur.
Si je le supprime à la main dans la table et que je recommence la procédure avec le N° 9, le phénomène a disparu.

Recommence un autre exemple et vois si tu peux reproduire l'anomalie que tu crains.

Je reste à l'écoute.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 21h00   #10
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Je viens de re faire un essai et il y a toujours un problème

J'ai vidé toutes les tables et ajouté des enregistrements pour tblListePatiente, le dernier enregistrement est 011-UIO j'ai donc rempli le formulaire via double clic pour cette enregistrement.
En regardant dans la table tblListePatiente, la sous table n'affiche rien et en regardant dans la table tblCRFManagement, l'enregistrement précédemment ajouté pour 011-UIO est présent et la sous table liée est vide.

Si par contre j'entre les données dans les tables les enregistrements coïncident bien.

Voir la base jointe pour l'exemple.

Merci
Fichiers attachés
Type de fichier : zip Access_2000_db1_4.zip (39,1 Ko, 13 affichages)
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 21h28   #11
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Je crains que ta BDD a quelques défaut de conception.

La clé de voûte du système a l'air d'être le [N°].
C'est à dire un autonum de tblCRFManagement.

Si je regarde ton exemple de test, tu es parvenu à créer des patientes avec un N° qui n'est pas dans tblCRFManagement.

Veux-tu essayer d'expliquer en quelques mots ce que tu veux faire.

nb je reste à l'écoute encore 30' (chez nous, il sera alors 22:00)
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 21h43   #12
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Il est certain qu'il doit y avoir des problèmes dans la base, je ne suis pas un spécialiste.

Dans l'état ou elle est, elle est pratiquement terminée... puisque le but est de suivre pour chaque personne (la liste du sous formulaire) l'évolution de saisie des dossiers (CRFManagement) le reste ne sera que des états.

La vue actuelle avec le sous formulaire est pour reprendre l'aspect d'une base existante (mais dont je n'ai pas accès, mde) pour ne pas perdre les personnes qui font la saisie de données.

Actuellement pour identifier de manière unique chaque personne, c'est l'ensemble "Center et ID" j'ai donc utilisé N° qui est unique.
Pour chaque personne il n'y qu'un enregistrement unique pour dans CRFManagement.

Voila j'ai fait le tour. Je te remercie pour ton aide, bonne soirée, la mienne va commencer il est 15h42

Merci
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 21h53   #13
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Reviens si je peux t'aider.
Ce que je t'ai envoyé ne fonctionne correctement que si tu as la garantie qu'à un [N°] de patiente correspond un et un seul [N°] dans tblCRFManagement. Ce n'est manifestement pas le cas actuellement.
Au plaisir.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 22h04   #14
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Merci Claude

J'ai pu jeter un oeil sur l'autre base en production, le passage dans CRFManagement se fait via un filtre de sélection, mais comment pourquoi qu'est-ce que... reste sans réponse.

Merci pour ton aide c'est très apprécié !!
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 06h17   #15
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Bonjour,
Vois la BDD en annexe.
J'ai modifié ceci :

Supprimer les relations pour pouvoir modifier la structure des tables.
On verra plus tard comment les rétablir.
NB Dans ma réflexion, je n’ai pas considéré la table « tblAddNewPatient », on devrait essayer de s’en passer.


dans la table tblCRFManagement
a) Supprimer tous les enregistrements
b) Modifier le type de [N°] : autonum ---> numérique long

dans le formulaire "tblListePatiente sous-formulaire" le double-clic provoque :

Code :
DoCmd.OpenForm "tblCRFManagement", acNormal, , "[N°] =" & Me.N°, , , Me.N°
On ouvre le formulaire avec un filtre et en paramètre le N° ---> voir utilisation point suivant


dans le formulaire tblCRFManagement
Cycle --> Enregistrement en cours
Dans l’événement Sur activation, ce code :

Code :
1
2
3
4
Private Sub Form_Current()
'créer l'enregistrement pour cette patiente s'il n'existe pas encore
If Me.OpenArgs <> "" Then Me.N° = Me.OpenArgs
End Sub
Ce code s’exécute à la première ouverture du formulaire pour cette patiente.


-----------

Dis si le comportement actuel correspond à ce que tu recherches.

PS Avec les noms que tu choisis pour nommer tes objets et tes contrôles, c’est garanti : tu va te mêler les pinceaux !
Dans un post précédent, je t’indiquais une adresse si tu avais le temps.
Tu devrais prendre le temps … ça t’en fera gagner…
Bonne journée.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 15h24   #16
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
Bon matin

Merci Claude, c'est exactement ce que je recherche, MERCI !

J'ai bien corrigé les noms des objets mais dans la base 2003, je vais repartir avec la tienne qui à l'avantage de fonctionner.

La table "tblAddNewPatient" n'est pas utilisée, je vais la supprimer.

En ce qui concerne les relations, je vais dire une bêtise, mais ça marche sans, faut-il vraiment en rajouter ?

As-tu d'autres très bon conseils ?

Merci encore
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 15h34   #17
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Citation:
En ce qui concerne les relations, je vais dire une bêtise, mais ça marche sans, faut-il vraiment en rajouter ?
Ta voiture peut aussi rouler sans roue de secours.
Cela reste néanmoins pratique en cas de crevaison !

Cela dépend de ce que tu veux faire.
Idem pour les conseils.

Si tu veux plus, tu dois dire plus.
Bon matin à toi aussi.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 16h04   #18
Membre à l'essai
 
Inscription : juillet 2008
Messages : 59
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : juillet 2008
Messages : 59
Points : 20
Points : 20
J'aime autant qu'il y ai au moins 1 roue de secours, mais j'ignore ou la placer

La suite pour moi est la création de rapport, il ne devrait pas y avoir d'autres tables.

Il me manque un formulaire de recherche et puis c'est tout.

Merci
Jonkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 16h15   #19
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 238
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 238
Points : 11 025
Points : 11 025
Ok, il y a des exemples dans la FAQ.
Reviens si problème.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h54.


 
 
 
 
Partenaires

Hébergement Web