Lien entre tables ACCESS 2003 [Résolu]

raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 14:49 - Dernière réponse : tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention
- 1 août 2006 à 10:57
Bonjour,

J'ai créé une base de données Access à mon travail pour regrouper
mes informations clients.
Il y a une table 'client' avec les données générales (nom, adresse,
contact etc) puis des tables annexes 'compta', 'paie', 'gescom'
(précisions que je vends des logiciels de gestion).

J'ai donc créé un formulaire qui récapitule les données de la base
'client' et j'ai ajouté des boutons de commandes menant aux 3 autres
tables.

Le problème c'est que si je suis par exemple sur le client n°20 et
que je clique sur le bouton 'compta' pour connaître les infos
concernant son logiciel de compta, ça m'ouvre le formulaire 'compta'
mais je me remets au client n°1 !

Comment puis-je faire pour qu'il me mette directement les infos du
même numéro client ?
Est-ce qu'il faut mettre du code ? (car je ne sais pas faire...)

Merci de votre aide précieuse !
Raphaëlle
Afficher la suite 

Votre réponse

21 réponses

Meilleure réponse
cs_thephil 189 Messages postés mercredi 21 août 2002Date d'inscription 19 janvier 2011 Dernière intervention - 31 juil. 2006 à 15:04
3
Merci
il faut (de mes souvenirs d'access) insérer ton formulaire compta dans le formulaire client en tant que sous formulaire, et spécifier les propriétés champs père et champs fils, pour indiquer au sous formulaire compta que tu veux voir les infos liée/correspondant à celle de ton formulaire principal.

Merci cs_thephil 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_thephil
Meilleure réponse
tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention - 31 juil. 2006 à 15:09
3
Merci
Bonjour,


Sur le bouton qui ouvre le formulaire, il y a du code. Tu dois avoir du code style :


DoCmd.OpenForm "Compta", ......

Compta est le nom supposé de ton formulaire.


Après cette ligne, tu rajoutes :
Forms!Compta.Recordset.Filter "[N Client] " & Me.[N Client]


[N Client] est le nom du champ de la table Compta qui contient les numéros de client


Me.[N Client] est le nom du contrôle qui contient le numéro de client du formulaire principal qui te sert à ouvri r les autres.

Yann

Merci tri_yann 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de tri_yann
Meilleure réponse
cs_thephil 189 Messages postés mercredi 21 août 2002Date d'inscription 19 janvier 2011 Dernière intervention - 31 juil. 2006 à 15:36
3
Merci
essaie de mettre Forms!client à la place de Me .... à tout hasard.
enfin le nom du form client.

Merci cs_thephil 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_thephil
Meilleure réponse
tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention - 31 juil. 2006 à 15:50
3
Merci
Ca me parait difficilement insérable dans une macro. Ce n'est pas très compliqué d'ouvrir un formulaire en code VBA :


Formulaire pricipal en mode création - Clique 2 fois sur le bouton pour avoir la fenêtre propriété - Dans l'onglet Evenement - Sur Clic - Clique sur les (...) à droite. Tu tombes dans l'éditeur VBA

Il te place en dessous d'une private Sub - Tu tapes :

Docmd.OpenForm "Compta"Forms!compta.Recordset.Filter "[Client] " & Me.[Intitulé]

La première ligne est pour ouvrir le formulaire que tu veux en le désignant par son nom ("Compta"). Docmd.OpenForm est une commande spéciale Access.
La deuxième ligne spécifie au formulaire que tu as ouvert que tu veux appliquer un filtre. Tu n'auras donc que les enregistrements qui t'intéressent.
Forms!Compta est pour désigner le formulaire - Recordset est la source du formulaire qui se charge automatiquement à l'ouverture (contenu de la table compta) - Filter est la commande pour appliquer un  filtre sur le recordset.

Yann

Merci tri_yann 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de tri_yann
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 15:08
0
Merci
Effectivement, de cette façon ça fonctionne mais comme il y a beaucoup d'informations sur chaque client, j'aurais préféré avoir plusieurs pages avec des liens entre elles par le nom du client ?

N'existe-il donc pas une autre solution ?
Commenter la réponse de raph28
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 15:33
0
Merci
Voilà ce que je craignaias... du code VBA...


Alors en fait je n'ai pas de code pour ouvrir le formulaire mais une macro toute bête qui ouvre le formulaire.
Donc j'ai essayé d'ajouter dans ma macro 'ExécuterCode' puis
Forms!compta.Recordset.Filter "[Client] " & Me.[Intitulé]

Où [Client] est le nom du champ client dans ma table 'compta' et où [Intitulé] est le champ du nom du client dans mon formulaire prinicpal 'client'

Ca ne fonctionne pas et ça me met le message suivant : "l'objet ne contient pas d'objet d'automatisation 'Me'." puis une fenêtre disant que l'action a échoué.

Pour info, je n'ai pas défini de clé primaire dans mes tables et les relations créées entre les tables n'ont aps d'intégrité rférencielle, est-ce que ça pose problème ?<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>
Commenter la réponse de raph28
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 15:49
0
Merci
bah pas mieux :


"l'ojet auquel vous avez fait référence dans la procédure VB comme objet OLE n'est aps un objet OLE"

Alors docteur c'est grave ?
Commenter la réponse de raph28
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 16:05
0
Merci
Malheureusement rien ne se passe, j'ai écrit le code comme tu m'as dit mais après enregistrement des modifs, quand je rouvre le formulaire et que je clique sur le bouton de commande, ça ne marche pas.
Commenter la réponse de raph28
tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention - 31 juil. 2006 à 16:11
0
Merci
Fais une copie du contenu de l'éditeur VBA et colle le ici

Yann
Commenter la réponse de tri_yann
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 16:20
0
Merci
Option Compare Database


Private Sub COMPTA_Click()
DoCmd.OpenForm "COMPTA"Forms!COMPTA.Recordset.Filter "[Client] " & Me.[Intitulé]


End Sub
Commenter la réponse de raph28
tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention - 31 juil. 2006 à 16:27
0
Merci
Bah ca parait bon,


Qu'est ce que tu entends par ca ne marche pas ? Le formulaire ne s'ouvre pas ? Il n'affiche pas ce que tu veux ?
As-tu d'écrit [procédure evenementielle] en face de "Sur Clic" dans l'onglet Evenement de la propriété du bouton ?

Yann
Commenter la réponse de tri_yann
tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention - 31 juil. 2006 à 16:43
0
Merci
Autre méthode au lieu du code de tout à l'heure :

Private Sub COMPTA_Click()
DoCmd.OpenForm "COMPTA"Forms!COMPTA.Recordsource "Select * from Compta Where [Client] " & me.[intitulé]

End Sub

Si Me.Intitulé est du texte, il faut écrire :
[Client] = '" & me.[intitulé] & "'"

Yann
Commenter la réponse de tri_yann
tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention - 31 juil. 2006 à 16:47
0
Merci
Dans la syntaxe "From Compta", "Compta" désigne le nom de la table source du formulaire. Si elle a un nom différent du formulaire, il faut modifier la syntaxe.

Yann
Commenter la réponse de tri_yann
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 16:52
0
Merci
Alors répnse dans l'ordre :
- Oui le formulaire ne s'ouvre pas
- J'ai essayé sans [procédure évènementielle] et avec mais quand elle est affichée, ça m'ouvre VBA et ça me dit qu'il y a une erreur de code.
- Effectivement c'est bien du texte dans [Intitulé] donc peut-être que ça va marché
- Ma table compta a le même nom que mon formulaire compta

J'essaye les modifs...
Commenter la réponse de raph28
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 16:55
0
Merci
Toujours rien....
Commenter la réponse de raph28
tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention - 31 juil. 2006 à 17:02
0
Merci
Quelle erreur ?

Yann
Commenter la réponse de tri_yann
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 17:08
0
Merci
Euh ça me remet dans le code après un 'when' que je n'ai jamais écrit... et ça me dit "erreur de compilation : instruction incorrecte à l'extérieur d'une procédure"
je fais OK et le code que j'avais est parti...

Bref je pense que je vais opter pour les sous-formulaires... dans la mesure où on peut en mettre 3 et créer des onglets qui mettent en avant la page souhaitée histoire de gagner de la place
Commenter la réponse de raph28
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 17:11
0
Merci
Pour faire plus simple et si tu as le temps de jeter un oeil, je possède netviewer (logiciel type PCAnywhere) on se connecte et je te laisse regarder ma base.


j'ai juste à t'envoyer l'éxécutable rien de plus
Commenter la réponse de raph28
tri_yann 124 Messages postés mercredi 23 novembre 2005Date d'inscription 19 septembre 2013 Dernière intervention - 1 août 2006 à 09:21
0
Merci
Désolé, je ne peux pas trop me permettre, je suis au boulot et j'ai un soucis d'internet chez moi. Si c'est une mdb, essaie de l'envoyer par mail sur [mailto:ytriquet@gmail.com ytriquet@gmail.com]

Yann
Commenter la réponse de tri_yann
raph28 11 Messages postés lundi 31 juillet 2006Date d'inscription 1 août 2006 Dernière intervention - 1 août 2006 à 10:37
0
Merci
c'est fait, merci
PS : enlève ton denrier message pour éviter le SPAM...
Commenter la réponse de raph28

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.