Récup clé primaire s/ les autres formulaires

Résolu/Fermé
Polhux1 Messages postés 8 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 3 avril 2009 - 28 mars 2009 à 16:20
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 - 6 avril 2009 à 22:38
Bonjour,

(Access 2003) Pour ma thèse, je dois, entre autres, faire le suivi de patients greffés.
J'ai plus de 255 champs d'information d'où inutilité de penser à un seul formulaire ou à une création avec mise à jour à partir d'une requête.
J'ai donc fait un tri et j'ai 7 formulaires correspondant à 7 tables. Chacune de ces tables a comme clé primaire commune, le "CodePatient". Je pensais naïvement que je n'aurais pas de problème à lier les formulaires afin que dès l'implémentation du premier formulaire, je puisse récupérer le CodePatient pour les autres formulaires en écrivant, à partir d'un bouton de commande :

Private Sub Commande10_Click()
DoCmd.OpenForm "CMS_Infos_Sur_Greffe", ,
"CodePatient=Forms!CMS_Généralités_Patient!CodePatient"
End Sub

CMS_Généralités_Patient étant mon premier formulaire, CMS_Infos_Sur_Greffe étant le 2ème formulaire.

Hélas, cela ne fonctionne pas.
Quelqu'un a-t-il une idée pour me permettre de récupérer automatiquement la clé implémentée du premier formulaire, sur les formulaires suivants étant entendu que cette clé devient également la clé de la table alimentée par le nouveau formulaire.

Merci d'avance
A voir également:

17 réponses

Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
6 avril 2009 à 22:38
Bonjour Polhux1,
Voir MP.
Bonne fêtes de Pâques
1
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
29 mars 2009 à 22:47
Bonjour,
Est-ce que les tables contiennent déjà des données ?
0
Polhux1 Messages postés 8 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 3 avril 2009
1 avril 2009 à 16:44
Bonsoir,

Non. J'ai évidemment déjà tester mais j'ai supprimer les enregistrements
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
1 avril 2009 à 18:20
Bonjour,
Juste une question, comment est défini le [CodePatient] ... ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polhux1 Messages postés 8 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 3 avril 2009
1 avril 2009 à 20:30
En 10 caractères alphanumériques.

Merci de l'intérêt porté à la question.
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
1 avril 2009 à 23:00
Bonjour Polhux1 ,
En relisant votre premier poste, j’en déduis que vous avez une table principale [CMS_Généralités_Patient] avec clef primaire (indexé =Oui - Sans doublons) sur [CodePatient] (10 caractères) et 6 autres tables dans lesquels vous avez regroupé les informations par exemple [CMS_Infos_Sur_Greffe], [CMS_Infos – 1], [CMS_Infos – 2], etc.
Vous devez établir les relations entre les tables (Sur Outils base de données et Relations.
Sur les 6 tables vous devez avoir un champ [CodePatient], avec une clef primaire (indexé =non).
Pour les formulaires vous les basés toujours sur une requête qui contient au minimum la table principale [CMS_Généralités_Patient] + une autre table (les 7 ensembles c’’est possibles)
De cette manière si vous entrez des données complémentaires (Greffe ou autres) les [CodePatient] seront automatiquement dans les tables concernées.
Pour l’instant c’est tout se que je peux vous proposer avec les informations à dispositions.
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
2 avril 2009 à 00:01
Bonjour,
Est-ce que je suis dansle bon sens : https://www.cjoint.com/?eeacX0NB0q
0
Polhux1 Messages postés 8 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 3 avril 2009
2 avril 2009 à 14:09
Pour la dernière question, je pense que c'est oui. Toutes mes tables commencent bien par
CodePatient (= 12345qwer8 dans votre exemple).

J'avais bien établi une relation entre [CodePatient] de chaque table.

Par contre, vous écrivez "… Sur les 6 tables, vous devez avoir un champ [CodePatient], avec une clef primaire (indexé =non)…). Dois-je conserver [CodePatient] comme clé primaire mais dans ce cas, Access n'accepte pas que la clé primaire ne soit pas indexée ou bien, créer dans les 6 autres tables une clé primaire quelconque indexée et considérer [CodePatient] comme une clé secondaire ?

A titre d'infos, comme dit dans mon premier post, parce que je dépasse 255 champs, Access refuse d'enregistrer une requête sur les 7 tables. C'était mon intention première.

Merci de votre aide.
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
2 avril 2009 à 15:18
Bonjour Polhux1,
Pour ceci :
Dois-je conserver [CodePatient] comme clé primaire mais dans ce cas, Access n'accepte pas que la clé primaire ne soit pas indexée ou bien, créer dans les 6 autres tables une clé primaire quelconque indexée et considérer [CodePatient] comme une clé secondaire ?
Réponse :
Oui s’il n’y a qu’un seul code patient par table. Pour le indexé =Non j’ai fait une erreur car c’était possible dans les versions antérieurs, excusez moi.
Pour la requête je viens de réaliser un essai avec 9 tables et c’est parfait.
Est-il possible de voir la structure de votre base, si oui, la compacter puis la compresser en ZIP ou RAR et la mettre sur https://www.cjoint.com/ et poster le lien.
0
Polhux1 Messages postés 8 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 3 avril 2009
2 avril 2009 à 16:15
Bonjour Jean-Pierre,

Comme demandé, j'ai envoyé le développement Access sous le lien

https://www.cjoint.com/?eeqk35fw1F

Merci pour le temps passer à me renseigner.
Salutations,
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
2 avril 2009 à 17:25
Bonjour Polhux1,
Merci de votre confiance.
Est-ce que le problème est bien celui lié aux 7 commandes au bas du formulaire [CMS_Généralités_Patient] et qui génère l’erreur sur cette ligne de code :
DoCmd.OpenForm "CMS_Autres_Infos", , "CodePatient=Forms!CMS_Généralités_Patient!CodePatient"
Merci de votre réponse.
0
Polhux1 Messages postés 8 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 3 avril 2009
2 avril 2009 à 17:45
Jean-Pierre,

Oui, c'est exact. Je désire pouvoir passer d'un formulaire à l'autre en omettant parfois certaines informations faisant l'objet d'un des formulaires (les CHU me communiquent parfois certaines infos après les échantillons sanguins).

Pour moi, peu importe la manière de passer d'un formulaire à l'autre.

Les commandes attachées aux 7 boutons :
DoCmd.OpenForm "1 des formulaires", ,
"CodePatient=Forms!CMS_Généralités_Patient!CodePatient"

faisait l'objet d'une réponse à un post de ce forum ou du moins, ce que j'en avais déduit, mais peut-être erronément.

Cordialement
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
2 avril 2009 à 18:20
Bonjour Polhux1,
Merci.
J'ai déjà regardé une partie et il y a un autre problème qu'il faut régler pour commencer.
Sur le menue générale vous avez 2 choix (Création nouveau patient et Mise à jour..) il se trouve que les 2 commandes ouvre le formulaire [CMS_Généralités_Patient] en mode nouvelle enregistrement.
Pour le premier c'est en ordre, par contre dès que l'on passe au formulaire suivant il est évident qu'il n'y a pas de code patient donc introuvable dans la table d'ou l'erreur d'exécution 3011. Mesure, il faut ouvrir le formulaire suivant comme nouvel enregistrement et lui donner le code patient.
Pour le deuxième, il faut corriger et le faire ouvrir sur tous les enregistrements ou via un masque de recherche et la suite devrait marcher.
Je regarde dans se sens, j'ai juste besoin d'un peu de temps (environ 1 jour.)
Est-ce que cela vous convient ou voulez-vous apporter les corrections vous même ?
0
Polhux1 Messages postés 8 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 3 avril 2009
2 avril 2009 à 18:23
Non, toute aide avisée est la bienvenue et je vous en remercie.

Cordialement
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
2 avril 2009 à 18:33
Bonjour Polhux1,
Je vous donnes des nouvelles demain après-midi.
Bonne soirée.
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
3 avril 2009 à 16:31
Bonjour Polhux1,
Voilà sa marche. : http://www.cijoint.fr/cjlink.php?file=cj200904/cij5eph9Ro.zip
J’ai introduit une variable [RefCodPat] qui garde le code du patient tout au long du parcours sur les autres formulaires et sera initialisé lorsque vous changez de patient.
J’ai adapté des contrôles dans chaque procédures touchée (elles sont marquées [' MODIFIER ***** 3.04.2009 ……..] et vous trouvez aussi un petit texte explicatif.
Note : je pense que le bouton de commande [Généralités patient] du formulaire [CMS_Généralités_Patient] devrait pointer vers le menue général plutôt que sur lui même.
Au cas où, vous me faites signe… !
0
Polhux1 Messages postés 8 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 3 avril 2009
3 avril 2009 à 20:21
Bonsoir Jean-Pierre,

Je vous remercie grandement pour l'aide que vous m'avez apportée. En effet, de fait cela marche. J'ai testé avec les infos sur 2 patients. Il faudra toutefois que je teste encore, car je me suis retrouvé un moment avec une partie des infos sur un premier enregistrement et l'autre partie, sur un 2ème enregistrement (j'avais arrêté au 4ème formulaire puis j'avais repris au 5ème).
D'accord pour le bouton "Généralités patients".

Je ne puis exclure d'avoir encore recours à vos conseils, mais d'ores et déjà je vous remercie encore une fois pour le temps passé à m'aider.

Salutations
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 426
3 avril 2009 à 20:53
Merci Polhux1, de rien.
Si nécessaire, vous connaissez le chemin.
Bonne fin de semaine.
0