Récup clé primaire s/ les autres formulaires
Résolu
Polhux1
Messages postés
8
Statut
Membre
-
Le Pingou Messages postés 12348 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12348 Date d'inscription Statut Contributeur Dernière intervention -
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
(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:
- Récup clé primaire s/ les autres formulaires
- Clé usb non détectée - Guide
- Clé windows 8 - Guide
- Clé usb - Accueil - Stockage
- Formater clé usb - Guide
- Clé bootable windows 10 - Guide
17 réponses
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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.
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.
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.
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.
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,
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,
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.
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.
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
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
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 ?
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 ?
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… !
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… !
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
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