OVH Cloud OVH Cloud

Lien entre une table et un formmulaire

6 réponses
Avatar
Romuald
Salut à tous,

Voici mon problème:

J'ai ouvert une table, et dans cette table je clique sur un enregistrement.
Ensuite, je clique sur un bouton personnalisé de la barre d'outils pour
afficher cet enregistrement directement dans le formulaire. Mais je veux
afficher tous les enregistrements dans mon formulaire, et pointer directement
àl'ouverture sur celui que j'avais sélectionné dans ma table.

J'ai écrit "Screen.ActiveDatasheet.CurrentRecord" pour connaître
l'enregistrement courant de ma table.

Ensuite, j'ai écrit DoCmd.OpenForm "NomDeMonForm"....?

Mais comment lui indiquer l'enregistrement sur lequel il doit pointer à
l'ouverture ?

J'ai vu aussi qu'il exite dans les macros "AttiendreEnregistrement" ????

Merci de votre aide.

6 réponses

Avatar
Raymond [mvp]
Bonjour.

il ne faut pas procéder ainsi. Un formulaire peut être rattaché à une table
ou une requête (en totalité ou en partie) ou même à plusieurs tables en
relation.
il existe un assistant qui fait ça tout seul. dans la fenêtre base de
données , tu cliques à gauche sur "Formulaires", tu cliques sur le bouton
Nouveau et ensuite dans la petite fenêtre, sur assistant formulaire. tu suis
les instructions et il va te créer un formulaire tout prêt pour travailler
avec ta table, en interrogation, modification, suppression et ajout.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Romuald" a écrit dans le message de
news:
Salut à tous,

Voici mon problème:

J'ai ouvert une table, et dans cette table je clique sur un
enregistrement.
Ensuite, je clique sur un bouton personnalisé de la barre d'outils pour
afficher cet enregistrement directement dans le formulaire. Mais je veux
afficher tous les enregistrements dans mon formulaire, et pointer
directement
àl'ouverture sur celui que j'avais sélectionné dans ma table.

J'ai écrit "Screen.ActiveDatasheet.CurrentRecord" pour connaître
l'enregistrement courant de ma table.

Ensuite, j'ai écrit DoCmd.OpenForm "NomDeMonForm"....?

Mais comment lui indiquer l'enregistrement sur lequel il doit pointer à
l'ouverture ?

J'ai vu aussi qu'il exite dans les macros "AttiendreEnregistrement" ????

Merci de votre aide.


Avatar
Romuald
Bonjour Raymond,

Oui, je vois bien ce que tu veux me dire, mais ça ne règle pas mon problème.

Nous avons un formulaire appelé "Tableau" qui liste tous les enregistrements
d'une table "Table_Donnees". Ce formulaire est représenté sous forme de
lignes et de colonnes, de la même façon que si tu ouvres une table.

Nous avons aussi un autre formulaire appelé "Saisie" qui permet de saisir de
nouvelles données.

En résumé nous avons 2 formulaires, l'un en consultation sous forme de
tableau et l'autre permettant la saisie des données. Tous les 2 sont reliés à
la même table.

Lorsque l'on est sur le formulaire en forme de tableau, je voudrais par
exemple cliquer sur un enregistrement, cliquer sur un bouton dans la barre
d'outils, et ouvrir le formulaire permettant la saisie mais en pointant
directement avec l'enregistrement sélectionné du formualire précédent. Dans
ce formulaire de saisie, on retourve aussi tous les enregistrements.

Voilà mon problème, j'espère que je me suis bien expliqué.

Comment je peux faire en macro ou bien en code VB ?

Merci


Bonjour.

il ne faut pas procéder ainsi. Un formulaire peut être rattaché à une table
ou une requête (en totalité ou en partie) ou même à plusieurs tables en
relation.
il existe un assistant qui fait ça tout seul. dans la fenêtre base de
données , tu cliques à gauche sur "Formulaires", tu cliques sur le bouton
Nouveau et ensuite dans la petite fenêtre, sur assistant formulaire. tu suis
les instructions et il va te créer un formulaire tout prêt pour travailler
avec ta table, en interrogation, modification, suppression et ajout.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Romuald" a écrit dans le message de
news:
Salut à tous,

Voici mon problème:

J'ai ouvert une table, et dans cette table je clique sur un
enregistrement.
Ensuite, je clique sur un bouton personnalisé de la barre d'outils pour
afficher cet enregistrement directement dans le formulaire. Mais je veux
afficher tous les enregistrements dans mon formulaire, et pointer
directement
àl'ouverture sur celui que j'avais sélectionné dans ma table.

J'ai écrit "Screen.ActiveDatasheet.CurrentRecord" pour connaître
l'enregistrement courant de ma table.

Ensuite, j'ai écrit DoCmd.OpenForm "NomDeMonForm"....?

Mais comment lui indiquer l'enregistrement sur lequel il doit pointer à
l'ouverture ?

J'ai vu aussi qu'il exite dans les macros "AttiendreEnregistrement" ????

Merci de votre aide.







Avatar
Raymond [mvp]
Tu travailles donc sur un formulaire en continu. Pourquoi ne pas mettre un
bouton bascule sur ce formulaire qui mettra à oui ou non la saisie de
donnée ou la modification ? Sans changer de formulaire tu pourras passer de
l'interrogation à la saisie de nouveaux enregistrements et revenir en
basculant le bouton .

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Romuald" a écrit dans le message de
news:
Bonjour Raymond,

Oui, je vois bien ce que tu veux me dire, mais ça ne règle pas mon
problème.

Nous avons un formulaire appelé "Tableau" qui liste tous les
enregistrements
d'une table "Table_Donnees". Ce formulaire est représenté sous forme de
lignes et de colonnes, de la même façon que si tu ouvres une table.

Nous avons aussi un autre formulaire appelé "Saisie" qui permet de saisir
de
nouvelles données.

En résumé nous avons 2 formulaires, l'un en consultation sous forme de
tableau et l'autre permettant la saisie des données. Tous les 2 sont
reliés à
la même table.

Lorsque l'on est sur le formulaire en forme de tableau, je voudrais par
exemple cliquer sur un enregistrement, cliquer sur un bouton dans la barre
d'outils, et ouvrir le formulaire permettant la saisie mais en pointant
directement avec l'enregistrement sélectionné du formualire précédent.
Dans
ce formulaire de saisie, on retourve aussi tous les enregistrements.

Voilà mon problème, j'espère que je me suis bien expliqué.

Comment je peux faire en macro ou bien en code VB ?

Merci



Avatar
Romuald
Re-bonjour Raymond,

Tout d'abord merci pour ton aide.

Dans le formulaire de saisie, nous avons des contrôles de calcul sur des
dates. Les valeurs dans ces contrôles ne sont pas sauvegardées, c'est
seulement pour l'affichage.

Donc, je pense qu'il me faut bien un bouton permettant d'afficher mon
formulaire de saisie et en pointant sur l'enregistrement du formulaire
d'affichage.

"Screen.ActiveForm.CurrentRecord" me donne bien le numéro d'enregistrement
en cours, et j'ouvre mon formulaire de saisie avec OpenForm, mais comment
passer ce fameux numéro d'enregistrement ?????


Tu travailles donc sur un formulaire en continu. Pourquoi ne pas mettre un
bouton bascule sur ce formulaire qui mettra à oui ou non la saisie de
donnée ou la modification ? Sans changer de formulaire tu pourras passer de
l'interrogation à la saisie de nouveaux enregistrements et revenir en
basculant le bouton .

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Romuald" a écrit dans le message de
news:
Bonjour Raymond,

Oui, je vois bien ce que tu veux me dire, mais ça ne règle pas mon
problème.

Nous avons un formulaire appelé "Tableau" qui liste tous les
enregistrements
d'une table "Table_Donnees". Ce formulaire est représenté sous forme de
lignes et de colonnes, de la même façon que si tu ouvres une table.

Nous avons aussi un autre formulaire appelé "Saisie" qui permet de saisir
de
nouvelles données.

En résumé nous avons 2 formulaires, l'un en consultation sous forme de
tableau et l'autre permettant la saisie des données. Tous les 2 sont
reliés à
la même table.

Lorsque l'on est sur le formulaire en forme de tableau, je voudrais par
exemple cliquer sur un enregistrement, cliquer sur un bouton dans la barre
d'outils, et ouvrir le formulaire permettant la saisie mais en pointant
directement avec l'enregistrement sélectionné du formualire précédent.
Dans
ce formulaire de saisie, on retourve aussi tous les enregistrements.

Voilà mon problème, j'espère que je me suis bien expliqué.

Comment je peux faire en macro ou bien en code VB ?

Merci








Avatar
YannX
"Romuald" a écrit dans le message de
news:
Dans le formulaire de saisie, nous avons des contrôles de calcul sur des
dates. Les valeurs dans ces contrôles ne sont pas sauvegardées, c'est
seulement pour l'affichage.

Donc, je pense qu'il me faut bien un bouton permettant d'afficher mon
formulaire de saisie et en pointant sur l'enregistrement du formulaire
d'affichage.
Il est parfaitement possible d'avoir des champs affichés non liés

directement à un champ de données, y compris dans une présentation table
avec par exemple du SQL, donc ce n'est pas une raison suffisante !


Sinon, on peut passer les argument en allant les chercher en VBA
dans l'autre formulaire
dans Saisie :
DoCmd.GotoRecord .......Forms![Tableau].[clé record voulu]......
Mais pourquoi deux alors qu'un suffirait

Y@+

Avatar
Raymond [mvp]
Tu passes le no d'enregistrement par le paramètre openargs de OpenForm et tu
le récupères dans l'autre formulaire par la propriété Openargs.
tu peux aussi récupérer la clé primaire directement et ensuite faire un
findfirst dans ton nouveau formulaire:
x = Forms!Formulaire1!Cléprimaire
tu peux aussi récupérer le numéro d'enregistrement par :
x= Forms!Formulaire1.CurrentRecord
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Romuald" a écrit dans le message de
news:
Re-bonjour Raymond,

Tout d'abord merci pour ton aide.

Dans le formulaire de saisie, nous avons des contrôles de calcul sur des
dates. Les valeurs dans ces contrôles ne sont pas sauvegardées, c'est
seulement pour l'affichage.

Donc, je pense qu'il me faut bien un bouton permettant d'afficher mon
formulaire de saisie et en pointant sur l'enregistrement du formulaire
d'affichage.

"Screen.ActiveForm.CurrentRecord" me donne bien le numéro d'enregistrement
en cours, et j'ouvre mon formulaire de saisie avec OpenForm, mais comment
passer ce fameux numéro d'enregistrement ?????