Formulaire d'ajout et tables liées

migou

XLDnaute Nouveau
Bonjour,

je débute sous Access, j'ai réalisé la base de données suivante :

Ce lien n'existe plus

Le problème est que cette base n'est pas destinée à être utilisée par moi-même et qu'il me faut créer une interface simple permettant d'ajouter des clients ou des commandes.

Ce que je souhaite faire, c'est un formulaire dans lequel :

- on saisit les informations sur le client
- on sélectionne la société à laquelle il appartient à partir d'une zone de liste déroulante (contenant la liste des sociétés de la table société). Si la société n'est pas référencée alors on laisse la possibilité d'en ajouter une.
- on valide pour insérer l'enregistrement dans la base

Cela signifie qu'au moment de la sélection de la société par zone de liste déroulante, lorsque l'utilisateur sélectionne le nom d'une société existante, le numéro de celle-ci doit automatiquement se compléter à la fois dans num_soc et dans num_soc_CE.

Si la société n'existe pas alors un numéro devrait être généré (le champs num_soc est en numéro_auto) à la fois pour num_soc et pour num_soc_CE (le même).

Seulement je ne m'en sors pas, je n'arrive pas à comprendre le mode de fonctionnement des formulaires. Autant pour une table seule c'est assez simple, d'ailleurs Access peut en générer automatique, autant dans mon cas je ne voie pas.

J'en appelle à votre aide. Pouvez-vous m'éclairer en m'expliquant la marche à suivre ?

Merci par avance.
 

stefan373

XLDnaute Occasionnel
Re : Formulaire d'ajout et tables liées

Bonjour migou et le forum,

Comme souvent expliqué sur ce forum, il faudrait joindre un fichier compressé et pas une image, de plus, personne ne fera votre fichier à votre place, donc je vous conseille de poster vos problèmes au fur et à mesure qu'il se pause. :)

Pour ce qui est des formulaires, ils servent à remplir ou à consulter les tables, car on ne travaille pas directement avec ces dernières. On associe une table ou plusieurs à un formulaire, dans les propriétés source de ce dernier (Ainsi on pourra insérer les champs des tables associées). Les formulaires servirons soit à consulter les tables et ainsi pouvoir modifier les données (Pour les informations déjà encodées) ou à encoder des nouvelles données si elles n'existent pas (Comme les nouvelles sociétés dans votre cas). Pour ce qui est de la liste déroulante, il faut l'associer au champ de la table sociétés, mais pour remplir les autres champs en fonction du choix fait dans la combo, c'est plus compliqué, mais faisable avec du VBA et la commande DLookup. :)

Donc courage et pas de panique le forum est très efficace. :)

A+ stéfan
 
C

Compte Supprimé 979

Guest
Re : Formulaire d'ajout et tables liées

Bonjour Migou et bienvenue sur ce forum ;)
Salut Stefan373 ;)

En plus de ce qu'à dis Stefan, il faut savoir qu'il existe également des BdD toutes prêtes
Il suffit de faire -> Fichier -> Nouvelle base de donnée
Dans la partie droite du volet qui s'ouvre, dans la partie modèles -> Sur mon ordinateur
Dans la fenêtre qui s'ouvre -> Onglet Base de Données
Là, tu trouveras quelques exemples tout prêt ;)

Si ce qu'il y a ne te convient pas (ça dépend des versions) tu peux cliquer sur : Office on line

A+
 

migou

XLDnaute Nouveau
Re : Formulaire d'ajout et tables liées

Merci pour vos réponses,

j'ai passé ma journée d'hier sur le sujet et je commence à mieux comprendre l'utilité et l'utilisation des formulaires. En fait Access propose avec son principe de sous-formulaire en partie ce que je cherche.

Le problème est que je n'arrive pas à le faire seul (même en observant la façon de faire sur les exemples d'Access), or comme le résultat des sous-formulaires automatiques d'Accès ne me satisfait pas en termes d'ergonomie je ne peux pas arriver à ce que je souhaite.

(Je m'en vais regardé du côté de DLookup)

Je joint ma base vide (en chantier), les données étant confidentielles.

https://www.dropbox.com/s/3xwxj5uesp277ec/Base Client.accdb
 

stefan373

XLDnaute Occasionnel
Re : Formulaire d'ajout et tables liées

Bonjour migou et le forum,

J'ai jeté un coup d'oeil à votre base et j'ai remarqué quelques grosses erreurs, pour commencer, une clé primaire par table suffit, car l'utilité de celle-ci est de créer un lien avec les autres tables et de générer un numéro unique sur le quel access travaillera. :rolleyes:
En plus la clé est en général un numéro-auto et nom du texte car si vous avez deux fois le même pseudo par exemple l'enregistrement ne se fera pas car l'information contenue dans cette clé doit être unique. :)

A+ stéfan
 

migou

XLDnaute Nouveau
Re : Formulaire d'ajout et tables liées

Bonjour stefan373.

Concernant mes clés primaires, je n'en ai qu'une par table. Seules les tables de correspondance ont une clé primaire qui est la concaténation des clés étrangères des entités associées mais c'est normal. Cela permet d'éviter les doublons en se basant sur 2 propriétés. Par exemple pour la table LIGNECOMMANDE je pourrai me retrouver avec :

1 1
1 2
1 3
2 1
2 4
2 8

Par contre je ne pourrai pas insérer une nouvelle fois cette ligne (puisqu'elle y est déjà, donc cela ferait doublon) :

1 2

De même pour la LIGNEABONNEMENT, avec en plus la spécificité de la date qui permet d'interdire à un client de souscrire 2 fois le même abonnement à la même date (mais en revanche il peut souscrire 2 fois le même à des dates différentes, pour le renouveller par exemple).

Pour ce qui est des numéros auto, à partir du moment l'indexe la clé sans doublon peu importe que ce soit un numéro où un texte, les doublons seront interdits. J'ai choisit un texte à cause de mes données sources qui ne me permettent jamais une correspondance et parce que c'est plus parlant. Même si ça se discute.

Bref je ne pense pas avoir fait d'erreur à ce niveau là mais merci pour ces suggestions :p
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Formulaire d'ajout et tables liées

Bonjour

Quelques remarques...

Cele ne me gene pas d'utiliser des chaînes comme clé primaire car dans le cas contraire (numéro auto notamment) il faut souvent doubler par des index sans doublons et cela alourdit aussi le fonctionnement.
Les clés composites sont acceptées sans problème par Access (ce qui n'est pas le cas de tous les SGBD) donc là non plus le principe ne me gêne pas.

En revanche ces clés doivent être courtes : longueur adaptée aux besoins. Tous les champs texte à 255 caractères c'est ingérable tant en terme de performance du moteur que de création automatique de formulaires, états... et quasi inexploitable en requête. Que vas-tu faire des 255 caractères du code postal ?
De même je doute que ton prix unitaire d'abonnement atteigne le milliard : un réel simple suffit largement ou plus simplement un monétaire. Le surdimensionnement des champs nuit à l'exploitation de la base.

Si ton formulaire commandes est correctement rattaché au formulaire Société (ou client à Société), il est inutile d'y dupliquer le code client : le lien père-fils du formulaire veille à la cohérence.

Quand à ajouter un client à la volée : il faut être prudent. En général dans les entreprises, la création d'un client nécessite des droits supéreiurs par rapport à l'enregistrement de commande. Cela permet de vérifier un minimum de choses concernant le client notamment sa solvablité, le choix des conditions de réglement par les services financiers ou comptables...
Néanmoins, tu trouveras des exemples comme évoqués par Bruno.:)
Je te conseille de d'abord construire et vérifier le bon fonctionnement dans le cas des clients existants : tu pourras ensuite ajouter ce point (création) qui ne remet que peu en cause ce qui aura été fait.

Concernant le look/ergonomie des formulaires automatiques : choisir tabulaire et non feuille de données pour les sous-formulaires permet d'adapter le look. Par ailleurs rien n'empêche de créer un formualire puis de l'utiliser comme sous-formulaire dans un autre ensuite : c'est souvent plus facile à mettre au point s'il est complexe.

Pas facile de débuter mais ta structure semble a priori OK même si je m'interroge sur l'absence de lien (conceptuel, pas seulement Access) entre factures et détail des commandes mais cela dépend de ton fonctionnement.
 

migou

XLDnaute Nouveau
Re : Formulaire d'ajout et tables liées

Merci pour ces remarques,

je vais suivre ce que tu me dis pour les types de données, c'est vrai que j'ai tout laissé par défaut pour le moment.

Quand à ajouter un client à la volée : il faut être prudent. En général dans les entreprises, la création d'un client nécessite des droits supéreiurs par rapport à l'enregistrement de commande. Cela permet de vérifier un minimum de choses concernant le client notamment sa solvablité, le choix des conditions de réglement par les services financiers ou comptables...

Aucun risque dans mon cas, la base sera complétée par une seule personne.

Pas facile de débuter mais ta structure semble a priori OK même si je m'interroge sur l'absence de lien (conceptuel, pas seulement Access) entre factures et détail des commandes mais cela dépend de ton fonctionnement.


La table facture est en attente, je ne sais pas encore si elle va rester ni ce qu'elle contiendra. Donc je la laisse mais elle est vide pour le moment.


Je suis en train de recommencer mes formulaires pour les baser sur ce que j'ai pu voir dans les exemples Access et que je trouve pas mal. Je viendrai re-poster la nouvelle base quand j'aurai un peu plus avancé.

En attendant, vos conseils et vos explications sont toujours bon à prendre.
 
Dernière édition:

stefan373

XLDnaute Occasionnel
Re : Formulaire d'ajout et tables liées

Re,

Ok je comprend un peu mieux. :eek:
Et de toute façon, vous êtes maître de votre base, car vous seul savez ce que vous désirez exactement. :)

A+ stéfan

Edit Je joint un fichier avec DLookup :)
 

Pièces jointes

  • Dlookup.zip
    25.2 KB · Affichages: 208
Dernière édition:

migou

XLDnaute Nouveau
Re : Formulaire d'ajout et tables liées

Bonjour,

je reviens à la charge. Le problème des clients et des sociétés est réglé, mais je n'arrive pas à en résoudre un autre. Je vous joins la base pour que vous puissiez comprendre :

https://www.dropbox.com/s/3xwxj5uesp277ec/Base Client.accdb

Dans mon formulaire "Formulaire client", je souhaite gérer les abonnements et les commandes d'études. J'ai donc fait 3 onglets, le premier concernant les clients fonctionne correctement.

Mais je n'arrive pas à ajouter un abonnement à un client, ni à ajouter des commandes. Au moment ou je valide la saisie, le message "Vous devez entrer une valeur dans le champs CLIENT.TypeCompteCli" apparaît. Or ce champs concerne non pas un abonnement ou une commande mais il concerne le client, et il est renseigné dans le premier ongle.

Merci par avance pour votre aide.

Cordialement.
 

chris

XLDnaute Barbatruc
Re : Formulaire d'ajout et tables liées

Bonjour

Le champ fils côté ligne abonnement n'est pas le bon : si tu modifies cela marche.

Tu ne peux lier ligne de commande directement à client : il faut lier commandes à client puis lignes à commande.
 

migou

XLDnaute Nouveau
Re : Formulaire d'ajout et tables liées

Bonjour chris,

merci pour votre réponse. Mais je ne comprend pas, parlez-vous d'une modification dans les relations ou dans le formulaire ?

Car dans mes relations LIGNECOMMANDE n'est pas directement lié à CLIENT mais passe bien par la table COMMANDE. Si j'ai une erreur je ne la voie pas.
 

chris

XLDnaute Barbatruc
Re : Formulaire d'ajout et tables liées

Bonjour

Je parle des relations (lien champ père - champ fils) dans le formulaire : elles doivent suivre celles de la base.
Dans le 1er cas le champs fils n'est pas le code client de la table ligne abonnement (donc à modifier) et dans le second cas, il manque la commande entre le client et les lignes.

Pour la saisie ce n'est pas forcement une bonne idée de tout regrouper : soit on enregistre des abonnements, soit des commandes ( à moins que les commandes concernent justement des abonnements et rien d'autre et dans ce cas la structure n'est pas la bonne).

En consultation en revanche, une vue globale peut être sympa...
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA