Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/06/2007, 12h47   #1
Invité de passage
 
Inscription : juin 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 5
Points : 0
Points : 0
Par défaut Relations, sous formulaires et calcul de date

Bonjour à tous !

Voici ce que j’ai déjà créer.

Tables

Tb Companies
Company - Address 1 - Address 2 - Zip Code…
Clé primaire sur company

Tb Contacts
ID Contact – Company - Title - First Name - Last Name - Function…
Clé primaire sur ID Contact

Tb Visits
ID Visit – Company - Place of visit - Date of Visit - Agence Impliquée (je suis de l’agence de France, mais il y a Espagne, Allemagne, Chine…) – Objet du RDV – Suites à Données – Date des suites à données
Clé primaire sur ID Visit

Tb Agence Impliquée
ID Agency - Agence Impliquée
Clé primaire sur ID Agency

Relations
Tb Companies - Company…Company - Tb Contacts
Tb Companies - Company…Company - Tb Visits
Tb Agence Impliquée - ID Agency… Agence Impliquée - Tb Visits (relation impossible à faire : « pas d’index unique »)


Je fais une base de données client.
Au final, je dois avoir :

- Un formulaire avec les parties companies, contacts et visits imprimable sur du A4. Je souhaite que sur une fiche je puisse voir pour la même entreprise tous les contacts et toutes les visites qui ont eu lieu.
L’insertion en mode design de sous-formulaire me donne ce résultat mais y’aurait-il un moyen plus esthétique ? Car ça me donne une table toute moche et mon formulaire doit être présentable.

- les trois formulaires companies, contacts & visits qui serviront à entrer les données. Quand un commercial rentre d’un rdv, je souhaite qu’il ouvre access, saisisse juste les infos concernant le rdv et qu’access fasse seul le lien avec la companie (et du coup les contacts aussi). D’où mon champ « company » dans ma table « visits »

- Un bouton ou une alerte quand la date du champ « Date des suites à données » est arrivée à échéance (donc création d’une requête avec formule de calcul ?)
Du coup, un état ou quelque chose comme ça pour imprimer la liste des échéance dépassées.


Pour le moment, mon problème est de savoir si mes tables sont créer au mieux (en cas d’évolution dans les années à venir) et si mes relations sont ok ?
Si je crée un champ ID Contact et ID Visit dans ma table « companies » je ne peux pas les définir autonumber. Si je le laisse texte j’ai un problème d’index quand je crée ma relation.

J’espère que c’est clair.
Merci 1000 fois pour les précieux conseils que vous pourriez m’apporter.
Un détail, je suis débutante.
may.hona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 13h42   #2
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 37
Points : 11
Points : 11
Pour savoir si la base est bonne, il faut également connaitre les cardinalité.
Par exemple tu as un "objet" company et un contact

Un contact peut etre dans une company.
Dans ta table contact tu as "company" c'est donc une clé étrangère.
Tu ne peux faire ceci que si un contact ne peut etre lié qu'a une seule company. Si un contact peut être lié a plusieurs company il faudrait un table "faitPartie" par exemple qui contient la clé de "contact" et celle de "company".

Je ne sais pas si je suis très clair lol...
pascalouh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 08h51   #3
Invité de passage
 
Inscription : juin 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 5
Points : 0
Points : 0
Good morning !

Désolé pour le délais : journée très très chargée hier.

Lol, ça commence : les cardinalités ? Là, déjà au 1er terme jme perds.

Dans une même companie je peux avoir plusieurs contact et plusieurs visites. Donc, si je comprend bien, je dois créer une nouvelle table contenant les champs clé primaire soit : company, ID contact & ID Visit (précision : sur cette nouvelle table je dois définir une clé primaire ?)

Donc ensuite, dans mes relations, j'ai supprimé celles que j'avais et fait ceci (du moins essayé) :
1- Tb Companies - Company (txt)…Company (txt) - Tb FaitPartie
2- Tb Visits - ID Visit (n°auto)…ID Visit (txt) - Tb FaitPartie
3- Tb Contact - ID Contact (n°auto)… ID Contact(txt) - Tb FaitPartie

error pour les pts 2 et 3 : ce n'est pas les même type de données (n° auto et txt) mais ds ma table "FaitPartie" il n'est possible de créer qu'un seul n° auto !!!)
may.hona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 09h59   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 37
Points : 11
Points : 11
Cardinalité ca fait peur comme mot mais c'est pas très compliqué.
En fait au niveau conception (avant de penser aux tables) tu as deux sortes de choses. Les entités (un objet) comme une compagnie, une personne, une visite etc. Et des relations comme FairePartie qui va lier deux entités.

Lorsque tu fais ce schéma il te faut te poser la question des cardinalité. C'est à dire le nombre de liaisons possible pour chaque relation.

Ainsi par exemple on peut avoir une chose simple:
Une entité "Personne" et une "Compagnie" liées par la relation "TravailDans"

Disons qu'une personne peut travailler dans une seule compagnie (ce qui sur le long terme n'est pas vrai en général mais c'est un exemple). Donc la cardinalité max de "Personne" vers "Compagnie" par la relation "TravailDans" sera de 1.
La compagnie elle peut comporter plusieurs personne. Donc la cardinalité max de Compagnie vers Personne par la relation TravailDans sera superieure à 1 et de nombre inconnu (disons donc "n")

J'espère être clair jusque la.
Après lorsque tu vas faire des tables, dans un premier temps chaque entité devient une table avec sa clé primaire.
Pour les relations ca depend. Si les cardinalités des deux cotés de la relation sont à "n" il te faudra une table FairePartie avec les clés primaires de chaque entité en jeu. La clé primaire de cette nouvelle table sera les deux ensemble.

Par contre dans notre exemple on a dit (faussement) qu'une personne ne peut travailler que dans une compagnie. On a donc une des cardinalité max à 1. Dans ce cas, pas de table FairePartie. On peut directement ajouter dans la table Personne, l'identifiant de la compagnie puisqu'on sait qu'elle sera unique.

Sinon là je suis au boulot donc pas trop le temps de vérifier tes tables mais je peux faire ça ce soir ou ce week end si tu en a encore besoin d'ici là.
N'hésite pas si je n'ai pas été clair

++
pascalouh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 11h54   #5
Invité de passage
 
Inscription : juin 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 5
Points : 0
Points : 0
Pascalouh merci de ton temps ! c'est vraiment très clair.

Je pourrais tester ceci sur ma base que dans la soirée (trop de dossiers urgent au boulot). Je te tiendrais au courant.

Très bon weekend.
may.hona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 12h15   #6
Invité de passage
 
Inscription : juin 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 5
Points : 0
Points : 0
Bonjour à tous !

Ok c'est génial.

Là, j'ai mes tables, mes relations et j'ai créer mes formulaires avec bouton.

Maintenant, je passe au formulaire qui m'affichent toutes mes infos sur la même page. Celui qui me servira pour imprimer. Et là je bloque.

Si j'insère des subforms, c'est pas présentable. Y'a t'il une autre méthode ou un moyen d'améliorer la mise en page ?

Merci et très bon lundi !
may.hona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 11h44   #7
Invité de passage
 
Inscription : juin 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 5
Points : 0
Points : 0
Bonjour tout le monde !

Même si j'avais finit par penser que j'avais cherché partout, j'ai trouvé une solution qui répond enfin à un de mes problème. Pour ceux qui pourrait en avoir besoins: j'ai créer une table "Datedujour" puis une requête avec
Company
Date d'actions (cest à partir de ce champ qu'access déterminera qui sont arrivé à échéance).
et Alerte, où comme critère j'ai saisi :
("SELECT (Format([Datedujour],"dd/mm/yyyy")) FROM matable WHERE (((Users.Datedujour)>DateSerial(Year(Now())-3,Month(Now()),Day(Now()))))")

Mais j'ai une erreur "syntax invalide". Je suis vraiment proche, mais j'ai besoins d'un dernier coup de main.

Merci d'avance.
may.hona est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h13.


 
 
 
 
Partenaires

Hébergement Web