IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modélisation Discussion :

Ajout d'une quantité indéterminé dans une table (facturation)


Sujet :

Modélisation

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien Géomatique
    Inscrit en
    Janvier 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Géomatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 181
    Points : 101
    Points
    101
    Par défaut Ajout d'une quantité indéterminé dans une table (facturation)
    Bonjour,

    Merci de votre aide, vous me faites sauver de nombreuses heures.

    J'aimerais une table facturation contenant :IDFacture, NomProprio, DateEnvoie ainsi que les animaux du propriétaire. Certain en possède seulement 1 alors que d'autres peuvent en avoir 4. Dois-je faire une table avec Nom Animal1 Nom Animal2.... ?
    Sa ne me semble pas très bien et je suis certain que je passe à côté d'un principe.


    facture #1
    Date
    Monsieur X

    Chien A
    Chien B
    Chat A


    Facture #2
    Date
    Monsieur Y

    Chien D

    etc

    Nom : Capture.JPG
Affichages : 197
Taille : 56,1 Ko

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Voici l'architecture que je te recommande :

    tblProprio
    ClefProprio
    Autres infos

    tblTypeAnimal
    ClefTypeAnimal
    CodeTypeAnimal (ex : CHIEN, CHAT, ça facilite la lecture des données).
    DescTypeAnimal

    tblAnimal
    ClefAnimal
    ClefProprio
    CodeTypeAnimal
    Autres infos

    tblTarif
    ClefTarif
    CodeTypeAnimal
    AnneeTarif
    Prix

    tblFacture
    ClefFact
    ClefProprio
    AnneeFacture
    Autres infos comme l'adresse de facturation.

    tblDetailFacture
    ClefDetalFacture
    AnneeFacture
    ClefProprio
    ClefAnimal
    CodeTypeAnimal

    Relation avec tblFacture sur Annee, ClefFacture, ClefProprio
    Relation avec tblTarif sur Annee, CodeTypeAnimal
    Relation avec tblAnimal sur ClefAnimal, CodeTypeAnimal

    Ça va te prendre du code (VBA ou macro) pour copier les informations redondantes mais cela va t'éviter des requêtes de jointures pour récupérer les infos.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien Géomatique
    Inscrit en
    Janvier 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Géomatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    Bonjour,

    tblFacture
    ClefFact
    ClefProprio
    AnneeFacture
    Autres infos comme l'adresse de facturation.

    tblDetailFacture
    ClefDetalFacture
    AnneeFacture
    ClefProprio
    ClefAnimal
    CodeTypeAnimal


    De cette façon, je pourrais ajouter plusieurs animaux à ma facturation? tblFacture sert de table centrale afin de créer des relation 1 à plusieurs c'est bien ça?

    dans la table tblDetailFacture, je pourrais avoir un seul ClefProprio mais plusieurs ClefAnimal. C'est à partir de ce point que je me perd.

    Merci de ton temps

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.


    dans la table tblDetailFacture, je pourrais avoir un seul ClefProprio mais plusieurs ClefAnimal. C'est à partir de ce point que je me perd.
    Oui. Quelles difficultés rencontres-tu ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien Géomatique
    Inscrit en
    Janvier 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Géomatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    Bonjour Marot

    En fait, je ne comprend pas la logique de ton architecture. Je sais que c'est beaucoup demandé mais si tu pouvais me montrer graphiquement les relations.

    Sinon pour les tables : tblproprio ça va

    tblTypeAnimal
    ClefTypeAnimal
    CodeTypeAnimal (ex : CHIEN, CHAT, ça facilite la lecture des données).
    DescTypeAnimal

    Dans la table TypeAnimal, CodeType serait numérique pour identifier le numéro du type (1 pour chat et 2 pour chien)
    La description serait Chien et Chat.

    tblAnimal
    ClefAnimal
    ClefProprio
    CodeTypeAnimal
    Autres infos

    Dans la table Animal, je retrouverais tout les animaux et leurs infos codetype ferait référence à chat ou chien

    tblTarif
    ClefTarif
    CodeTypeAnimal
    AnneeTarif
    Prix

    Tarif pour les prix annuels selon le type d'animal, année tarif serait pour s'assurer de lire le bon prix tout en conservant les années antérieures.

    tblFacture
    ClefFact
    ClefProprio
    AnneeFacture
    Autres infos comme l'adresse de facturation.

    tblDetailFacture
    ClefDetalFacture
    AnneeFacture
    ClefProprio
    ClefAnimal
    CodeTypeAnimal

    Pour ce qui est des tables de facturation, je ne comprend pas Si tu pouvais m'expliquer leur contenu svp ainsi que les relations basées sur la facturation,




    Relation avec tblFacture sur Annee, ClefFacture, ClefProprio
    Relation avec tblTarif sur Annee, CodeTypeAnimal
    Relation avec tblAnimal sur ClefAnimal, CodeTypeAnimal


    Merci de ton temps, déjà je trouvais pas trop bonne l'idée de créer 2 tables ( chien et chat) contenant les mêmes attributs.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    De ce que j'ai compris, tu vas établir une facture par année et par proprio.
    Cette facture va détailler chaque animal et le prix à payer pour cet animal.

    Il serait bon d'avoir une table de plus :

    tblAnimalProprio
    ClefAnimalProprio
    ClefAnimal
    ClefProprio
    DateDebutPropriete
    DateFinPropriete

    Car un animal pourrait changer de propriétaire au cours de sa vie.

    • En relation avec tblAnimal sur ClefAnimal
    • En relation avec tblProprio sur ClefProprio.


    Et il faut simplifier la table animal en enlevant le propriétaire.

    tblAnimal
    ClefAnimal
    CodeTypeAnimal
    Autres infos

    Donc revenons à la facture, dans son entête (tblFacture) tu vas avoir :

    tblFacture

    ClefFacture (L'identifiant interne unique de facture. Il pourrait être différent du numéro comptable de facture)
    ClefProprio (Le proprio facturé)
    AnneeTarifFacture (L'année de la facture ce qui va déterminer le tarif à appliquer)
    Autres infos comme l'adresse de facturation (là tout ce dont tu peux avoir besoin d'autre pour ta facture)

    • En relation avec tblProprio sur ClefProprio


    tblDetailFacture

    ClefDetalFacture (L'identifiant interne unique du détail de la facture)
    ClefFacture (L'identifiant interne unique de facture, permet le lien avec la facture ... et il me semble que je l'ai oublié la dernière fois, désolé).
    AnneeTarifFacture (L'année de la facture ce qui va déterminer le tarif à appliquer)
    ClefProprio (Le proprio facturé, va servir à s'assurer qu'on facture bien un animal du proprio)
    ClefAnimal (L'animal facturé)
    CodeTypeAnimal (Le type de l'animal facturé. Va servir à trouver le bon tarif)

    • En relation avec tblFacture sur ClefFacture, AnneeTarifFacture, ClefProprio.
      C'est un peu "over-killing" mais cela va te simplifier la vie en évitant d'avoir à faire des requêtes pour trouver l'info.
    • En relation avec tblAnimalProprio sur ClefProprio, ClefANimal
      S'assure que c'est bien l'animal du propriétaire.
      Note que le modèle ne garanti pas que tu vas facturer un animal réellement en possession du propriétaire au moment de la facture, juste que cet animal au cours de sa vie a été à ce proprio.
    • En relation avec tblAnimal sur ClefAnimal et CodeTypeAnimal.
      S'assure que l'animal est de du type attendu et permet de faire la liason avec le tarif.
    • En relation avec tblTarif sur CodeTypeAnimal et AnneeTarifFacture
      Permet de savoir quel est le prix à payer pour ce chien ou chat.


    J'espère que mes explications sont claires, sinon demande des précisions.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien Géomatique
    Inscrit en
    Janvier 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Géomatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    Vraiment tu es génial merci

    tblDetailFacture

    ClefDetalFacture (L'identifiant interne unique du détail de la facture)
    ClefFacture (L'identifiant interne unique de facture, permet le lien avec la facture ... et il me semble que je l'ai oublié la dernière fois, désolé).
    AnneeTarifFacture (L'année de la facture ce qui va déterminer le tarif à appliquer)
    ClefProprio (Le proprio facturé, va servir à s'assurer qu'on facture bien un animal du proprio)
    ClefAnimal (L'animal facturé)
    CodeTypeAnimal (Le type de l'animal facturé. Va servir à trouver le bon tarif)


    Je vais vérifier mes tables et relations et te revenir avec ça.
    En attendant, pour la table DetailFacture, je comprend que c'est une table du même principe que AnimalProprio.
    Lorsque je ferai mon état (facturation) je devrai utiliser la table tblDetailFacture comme source ou encore une requête sur la table DetailFacture pour afficher la facture de chaque animal appartenant à un propriétaire X.
    Lorsque tu parles de relation, c'est relation avec intégrité référentiel dans l'ensemble des cas?

    Merci d'avance

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour,

    Lorsque tu parles de relation, c'est relation avec intégrité référentiel dans l'ensemble des cas?
    L'intégrité référentielle n'est pas obligatoire dans une relation et il existe quelques rares cas où on ne peut pas l'activer.
    Mais oui, tu as raison, je sous-entendais que tu l'avais activée sinon aucun contrôle ne peut être fait par Access.

    Lorsque je ferai mon état (facturation) je devrai utiliser la table tblDetailFacture comme source ou encore une requête sur la table DetailFacture pour afficher la facture de chaque animal appartenant à un propriétaire X.
    tblDetailFacture va te servir de base mais tu auras besoin d'une requête car il n'y a pas dans cette table :
    • Le nom de l'animal
    • Le texte associé au code de type
    • Le prix par animal.


    Ces informations sont dans des tables connexes et il va falloir que tu fasses des jointures pour les "pécher".

    Et je te suggère de préfixer ta requête par req (ou qry) (ex : reqDetailFacture) ça aide à s'y retrouver.

    Ce sera vrai aussi pour l'entête de la facture, le nom du proprio n'y est pas.

    Donc tu vas devoir créer un rapport (état) facture (ex : rptFacture) et un sous-rapport pour les détails associés (ex : srptDetailFacture) qu'il te faudra filtrer à l'ouverture (c'est un des paramètres de la commande d'ouverture, de mémoire le 4ième) pour n'afficher que la facture du proprio voulu pour l'année voulue.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien Géomatique
    Inscrit en
    Janvier 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Géomatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    Merci Marot

    Je vais travailler autour de ça et te revenir dans quelques jours

    Merci 1000x

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien Géomatique
    Inscrit en
    Janvier 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Géomatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    Bonjour marot_r,

    J'ai délaissé un peu le projet mais j'y reviens en force dans les prochaines semaines

    Il y a une autre difficulté (pour moi), chaque animal est dotée d'une médaille, par contre la numérotation 1-1000 pour les chats et 1-1000 pour les chiens.
    Doit-on ajouter une nouvelle table : tblMédaille [ idmedaille, refidanimal, refCodetypeAnimal] ?

    Ou ajouter NoMedaille dans tblAnimal avec une clé primaire sur 2 champs ( codetype et noMedaille)

    Merci d'Avance !!
    Nom : Relation_Access.PNG
Affichages : 125
Taille : 112,2 Ko

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    tblMédaille [ idmedaille, refidanimal, refCodetypeAnimal] ?
    Tu peux même si ce n'est pas conforme à la 3ième forme normale qui est l'idéal :-) en matière de BD relationnelle.

    En théorie tu peux (et devrait) déduire le type de l'animal selon la référence à l'animal donc tu aurais :

    tblMedaille
    ClefMedaille (AutoNum)
    IdMedaille (entier long 1 à 1000)
    IdAnimal

    Mais avec ta solution cela va marcher aussi et tu n'as pas besoin de ClefMedaille, tu as ce qu'on appelle une clef composée.
    L'autre avantage avec ton idée c'est que tu peux facilement choisir de ne voir que les médailles des chats ou des chiens sans avoir à une jointure ce qui est "couteux" dans une BD.

    Note que tu devrais définir refidanimal, refCodetype comme un index unique ce qui te permet d'avoir l'intégrité référentielle entre tblAnimal et tblMedaille ce qui t'évite le risque de changer le type de l'animal entre tblAnimal et tblMedaille si tu ne la met pas.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Membre régulier
    Homme Profil pro
    Technicien Géomatique
    Inscrit en
    Janvier 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Géomatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    Merci,

    Comment je peux savoir le type d'animal de tblMedaille.RefIDAnimal.
    Puisque j'ai une clef composite sur IDMedaille et sur refIDAnimal, jamais je vais posséder 2 numéro identique puisque IDAnimal est en numérotation auto.

    Voilà où j'en suis
    Dès que j'ajoute IDMedaille à ma requête de sous-formulaire, il m'est impossible d'apporter des modifications. (impossible de mettre à jour le recordset)
    Comment puis-je palier ce problème ?

    EDIT: En mettant mon SF : Feuille rép.dyn.(MAJ globale), je peux apporter les modifications.
    Mais un autre problème se dresse! Je dois entrer manuellement à 2 reprises, sinon mes tables ne se mettent pas à jour correctement.
    le refClefAnimal de la table tblAnimalProprio ainsi que refIDAnimal de la table tblMedaille.

    L'idéal serait de mettre invisible les champs en leur assignant automatiquement la valeur de IDAnimal lors d'ajout de nouveau animaux.


    Nom : form.PNG
Affichages : 115
Taille : 104,4 KoNom : relation.PNG
Affichages : 126
Taille : 140,8 Ko

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/04/2017, 17h10
  2. [WD20] Gestion de lien hypertext dans une colonne texte dans une table
    Par lololebricoleur dans le forum WinDev
    Réponses: 14
    Dernier message: 03/08/2015, 16h24
  3. Réponses: 4
    Dernier message: 08/07/2014, 14h17
  4. Réponses: 11
    Dernier message: 06/12/2005, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo