Liens entre formulaires sous access

thomichna Messages postés 94 Statut Membre -  
sucrette83 Messages postés 81 Statut Membre -
Bonjours à tout le monde. J'ai tiujours le meme soucis que la semaine dernière :
J'aimerais lier tous les formulaires d'nue base de donnée entre eux par rapport aux enregistrements de sorte que si je choisie le deuxieme enregistrement du 1er formualire alors tous les autres se mettront sur le 2eme. Les formulaires sont disposés les uns apres les autres car c'est un questionnaire.Mais comment faut-il faire ??

14 réponses

zenon Messages postés 729 Statut Membre 180
 
Pour que le passage d'un formulaire à l'autre "aboutisse" sur le même enregistrement, il y a plusieurs solutions et quelques exigences.

Access doit pouvoir identifier les enregistrements comme ayant un rapport entre eux:

Par exemple, l'utilisateur s'identifie avant de remplir le questionnaire. Access peut récupérer la clé primaire de cet enregistrement (même sans aucune intervention de l'utilisateur et de manière invisible) et l'utiliser pour passer d'un formeulaire à l'autre. Il suffit de laisser le formulaire d'inscription ouvert en arrière plan et de définir la valeur de la clé externe dans le(s) formulaire(s) cible(s).

Ou encore, comme signalé plus haut, on peut se contenter d'utiliser un champ Date, mais cela ne fonctionnerait que si un et un seul enregistrement est généré par jour (ce qui semble incertain).

Dans un cas comme dans l'autre, lorsque tu enregistres de nouvelles données, le(s) formulaire(s) doivent pointer vers un nouvel enregistrement.
Le code VB sur ouverture du formulaire devrait être:

DoCmd.OpenForm "LeNomDuFormulaire",,,AcFormAdd

Puis, s'il n'y a pas de relation entre les tables, il faut définir la valeur de la clé externe:

[NomDeLaCléExterne] = [NomDeLaCléPrimaireDuFormIdentification]

A la relecture des données, le principe est le même mais il faut filtrer les enregistrements.
6
thomichna Messages postés 94 Statut Membre 3
 
ok, le seul soucis est que les utilisateurs de la base ne veulent pas mettre la date sur chaque page. Il faudrait un moyen pour qu'elle se mette automatiquement par exemple...
2
zenon Messages postés 729 Statut Membre 180
 
C'est pas difficile:

Crée un table T_Utilisateur (par exemple) en mode création avec

- Champ N°Utilisateur (N°Auto)
- Autant de champs que tu le souhaites pour caractériser l'utilisateur (NOm, Prénom, DNaissance,Adresse, ...)
Choisis le champ N°Auto comme clé primaire (clique sur la ligne puis sur la clé dans la barre d'outils) De tte manière, à la fermeture de la table, access te demande si tu souhaites créer une clé primaire)

Ensuite, dans chacune des tables qui fondent tes formulaires, en mode création, tu ajoutes un champ N°Utilisateur (format numérique). Il faut aussi, bien sûr ajouter ce champ dans tous les formulaires.

Ensuite, dans la fenêtre relations (menu outils) tu ajoutes toutes les tables et tu relies les champs N°Utilisateur des différentes tables. L'idéal est de choisir l'option "respecter l'intégrité référentielle" mais cela ne sera possible que si tes tables sont vides.

Et c'est tout.

Pour la suite, le plus simple est de créer un formulaire avec l'assistant

Tu devras travailler de manière séquentielle. Choisis les tables Utilisateurs et une des autres tables avec tous les champs nécessaire, cliques sur suivant. Tu te vois alors proposer différents modes de tri. Choisis celui qui te propose deux formulaire indépendants. Le reste est automatique.
Tu te retrouves avec deux formulaires, l'un reprenant les données de la table utilisateurs et l'autre, appelé par un bouton qui ouvre le formulaire fondé sur l'autre table. Tu peux ensuite en mode création modifier la présentation mais aussi consulter le code de manière à pouvoir faire la même chose sans l'assitant la prochaine fois...

J'espère que c'est plus clair...

Bien à toi!
2
zenon Messages postés 729 Statut Membre 180
 
Pour ça pas de soucis, il suffit d'ajouter un champ date dans la table et de définir une valeur par défaut en mode création de la table: Date().
Dès lors, la date du jour sera automatiquement ajoutée à tout nouvel enregistrement.
NB: Cette méthode ne fonctionne que si un seul enregistrement est créé par jour. Sinon, il ne s'agit plus d'un critère permettant d'identifier un et un seul enregistrement...

Demandes-tu aux utilisateurs de s'identifier?
Si oui, il est très simple d'utiliser la clé primaire de la table utilisateurs (qui ne doit pas obligatoirement comporter de renseignements nominatifs) comme clé externe dans les tables connexes. C'est la meilleure technique.
1

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

Posez votre question
zenon Messages postés 729 Statut Membre 180
 
Si je comprends bien, la solution que je t'avais proposée ne fonctionne pas.
Tu avais dit que le champ date était présent et unique dans toutes les tables et à défaut de clé primaire ou externe, j'avais proposé de l'utiliser pour filtrer les enregistrments...

Il faut trouver une (autre) caractéristique commune aux différents formulaires permettant de désigner un et un seul enregistrement de chacun des formulaires et l'utiliser comme filtre.
Si cette clé n'existe pas, il faudra la créer. Sinon il sera impossible d'y arriver de manière fiable.
0
thomichna Messages postés 94 Statut Membre 3
 
Ok, j'ai mis le champs de la date. c'est nikel, ça affiche date automatiquement mais quand j'appuie sur le bouton pour passer sur le formualire suivant, il reste sur le premeir enregisterment quand j'étais par exemple sur le 2eme enregistrelment dans le 1er formualire... Et je voudrait que ça suive enter les formulaires...
J'ai mis en clef primaire la date mais ça n'a rien fait...
Merci de ta patience....
0
thomichna Messages postés 94 Statut Membre 3
 
oula, ça devient un peu complex là...Si on laisse tomber le champs date qui apparement est le mieux, il faut donc :
- l'utilisater s'identifie
- il faut une clef externe sur chaque questionnaire.
Leprobleme est que je ne sais faire ni l'un, ni l'autre...hum.
0
thomichna Messages postés 94 Statut Membre 3
 
Merci, je pense que j'ai réussi ce que tu voulais ma faire faire. Mais c'est pas ce que joulais, du moins je ne pense pas.... Je veux juste que tout les formulaires soit reliés par rapport à leur enregistrement. Je ne sais pas si tu vois ce que je veux te veux dire :

- Ma base est constitué d'une trentaine de formulaire qui ont tous une table différente.
- La première page décrit les grandes trames du projets
- Après, on choisit un produit et on rentre dans 4-5 formulaires pour finir le questionnaire.
- Suivant ce que l'on choisit au départ, on va dans des formulaires différents.

Voila, j'aimerai que chaques enregistrements correspondent à une modification du projet. C'est pour ça que se serait bien que les enregistrements soient liés.
Si par exemple l'utilisateur rempli une première fois le questionnaire, et il veut faire une modification 2 semaines après. Il faudrait que l'utilisateur choisissent enregistrement 1 (et non 0) sur la premiere page, et alors, tous les enregistrements des formulaires suivant soient sur l'enregistrement 1. Et ainsi de suite..
0
zenon Messages postés 729 Statut Membre 180
 
Avec cette première étape l'utilisateur peut en tous cas retrouver son propre enregistrement.

Ensuite, s'il y a plusieurs possibilités de questionnaires, tu peux les imbriquer de la même manière: si chacune des tables comporte la clé externe permettant de la rattacher à l'utilisateur, tu peux créer une liste déroulante permettant le choix du produit ou des boutons de commande qui ouvrent le formulaire ad hoc. Dans les critères, il suffira d'insérer la référence au N°Utilisateur.

Idem pour naviguer d'un formulaire à l'autre.
0
random Messages postés 1612 Statut Membre 155
 
si tu disposes d'une clef de type compteur tu peux mettre dans les formulaires
quand enregistement change
mavariable=enregistrement compteur
puis
for each truc in forms
truc.filters= clause where
next each
0
neghe
 
Bonjour,
moi c'est fousse
j'aimerais modifier a ma guise les messages d'erreur que access affiche
par exemple lorsque je saisi du texte dans un champ de type date ou lorsque je saisi une clé deux fois dans une même table
0
belfil
 
bonjour à tous,

Moi je voudras reprendre la meme données saisie sur le 1er formulaire sur le 2eme formulaire automatiquement sans la saisir une autre fois sur le 2eme formulaire.

c'est a dire, il ya un meme champ sur deux formulaires différents.

Merci
0
mozess
 
comment faire le lien entre deux formulaires sous access 2003 et comment mettre deux formulaires sur la meme page de formulaire.
0
sucrette83 Messages postés 81 Statut Membre 7
 
Sniff, moi c'est presque ce que je voulais faire, mais apperemment il n'y a plus beaucoup de réponses...

Je souhaite mettre en place une Base de Donées "PARRAINAGE"
Un parrain peut avoir plusieurs Filleuls
Un filleul n'est pas forcément client au départ, il a donc un N°Coupon.
Un filleul devenu client peut devenir aussi parrain (la ca complique un peu, il faut pouvoir retracer l'historique)
C'est ce fameux N° Coupon qui sera le lien pour : les parrains, les commandes, les Clients

J'ai 8 tables.
1 : Parrains (N° Client Parrain; Vendeur parrain; Titre, Nom, Prénom, Adresse, mail; N°Coupon Filleul)
2 : Filleuls (N° Coupon filleul; Vendeur attribué; Origine du contact; Date du coupon; Nom;prénom; adresse... N° Client (si devenu client); choix cadeau parrain)
3 : Commandes( N° Coupon Filleul; N° Commande; Systeme vendu; prix; date commande; date validation commande; Commande annulée (oui/non); date envoi cadeau parrain; date envoi cadeau filleul)
4 : Cadeau filleuls ( Ref cadeau; nom; cout)
5 : Cadeaux Parrains (ref cadeau; nom; cout)
6 : Expedition (Type envoi; cout)
7 : Vendeurs (N° vendeur, Nom, Prenom, Région)
8 : Type installation (installation cout)

Voila... Comment créer des formulaires pour simplifier toute ma saisie? (250 parrains - 600 filleuls!!! 450 commandes)

Surtout, comment éviter de ressaisir le N° Client parrain; N° Client Filleul et N°Coupon Filleul???

Peut on créer des bouton pour rejoindre plusieurs formulaires (comme dans l'exemple Microsoft "Traitement des commandes) ?

Merci a tous
0