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 :

Ajouter un nouveau membre sans ajouter automatiquement un nouveau bateau [AC-365]


Sujet :

Modélisation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2022
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2022
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Ajouter un nouveau membre sans ajouter automatiquement un nouveau bateau
    Bonsoir

    J'ai créé une base de données pour notre club de voile. Elle comporte (entre autres) deux tables tblMembre et tblBateau avec une relation 1>n et des ID automatiques pour les membres et pour les bateaux.
    Tout marche très bien sauf pour un point.

    Dans le formulaire d'entrée pour les nouveaux membres j'ai ajouté la table des bateaux dans le query sous-jacent.
    Quand je veux entrer un nouveau membre, une ID est automatiquement attribuée à ce membre, mais également une nouvelle ID de bateau (alors que ce nouveau membre n'a peut être pas de bateau)

    Comment faire pour qu'Access n'attribue pas de nouvelle ID de bateau automatiquement. Dois-je créer deux formulaires séparés ?

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    A première vue, s'il s'agit d'une relation 1 -> n alors, il faudrait baser votre formulaire d'entrée des membres sur la table tblMembre.
    Puis créer un sous-formulaire lié à la table tblBateau, que vous insérez dans votre formulaire des membres.
    Enfin, ajouter les champs de liaison entre les 2 tables, sur les propriétés champs père/fils du contrôle sous-formulaire.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2022
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2022
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par User Voir le message
    Bonjour,

    A première vue, s'il s'agit d'une relation 1 -> n alors, il faudrait baser votre formulaire d'entrée des membres sur la table tblMembre.
    Puis créer un sous-formulaire lié à la table tblBateau, que vous insérez dans votre formulaire des membres.
    Enfin, ajouter les champs de liaison entre les 2 tables, sur les propriétés champs père/fils du contrôle sous-formulaire.

    Cdlt,
    Oui je crois que c'est le chemin à prendre, c'est pas très esthétique, j'aurai préféré avoir le tout sur un seul formulaire, mais je me retrouve avec des tas d'entrées de bateaux fantômes qu'il me faudra éliminer par la suite.
    Merci du conseil

  4. #4
    Membre du Club
    Homme Profil pro
    Freelance
    Inscrit en
    Septembre 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2022
    Messages : 15
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    il doit manquer une information ou deux pour reproduire votre cas de figure je pense.

    En effet, en reproduisant un modèle simple à partir de vos informations, on arrive à ce modèle relationnel simplifié :

    Nom : 2022-10-03 20_52_06-Window.png
Affichages : 136
Taille : 6,6 Ko

    Un requête de sélection basée sur ces 2 tables permet d'afficher les champs de ces tables et de saisir un membre sans pour autant saisir de bateau lui correspondant.
    Pour que la requête fonctionne, il faut paramétrer un jointure externe vers la table bateau.
    Cette requête permet d'initier un membre et 1 bateau ou pas.

    Nom : 2022-10-03 20_50_03-Window.png
Affichages : 133
Taille : 11,6 Ko Nom : 2022-10-03 20_59_22-Window.png
Affichages : 135
Taille : 8,5 Ko

    Toutefois, il me semble qu'une meilleur solution à une jointure directe serait de passer par une table d'association

    Nom : 2022-10-03 21_07_04-Window.png
Affichages : 133
Taille : 8,9 Ko

    Cette table présente l'avantage de pouvoir créer séparément les membres et les bateaux, et de pouvoir les associer et les réassocier à volonté.
    Avec ce modèle, normalement, pas de problème de création de bateau non maitrisé.

    En lien, la base que j'ai utilisé pour répondre : Membre_Bateau.accdb

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2022
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2022
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Ya comme un Hic
    Bonsoir
    Merci des conseils mais je bute, c'est peut être à cause du formulaire

    Tout parait évident et logique mais dès que je rentre le nom d'un nouveau membre dans mon formulaire un : "New" d'affiche automatiquement dans la case ID Bateau. Y'a queque chose qui cloche ladans, j'y retourne immédiatement
    Je vous tiens au courant

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Pouvez-vous poster une image de vos relations.

    Comme précisez par Lio_Nel, la solution avec une table intermédiaire (relation plusieurs-à-plusieurs) serait peut-être plus souple.

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Membre du Club
    Homme Profil pro
    Freelance
    Inscrit en
    Septembre 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2022
    Messages : 15
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par User Voir le message
    Bonjour,

    Pouvez-vous poster une image de vos relations.

    Comme précisez par Lio_Nel, la solution avec une table intermédiaire (relation plusieurs-à-plusieurs) serait peut-être plus souple.

    Cdlt
    Bonsoir Captain_Frog, oui, une capture d'écran ou l code SQL de la source de données du formulaire nous aidera à y voir clair.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2022
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2022
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Voila la requête SQL à la base du formulaire en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tblMitglieder.ID, tblMitglieder.FP_Code, tblMitglieder.Mitglied_Nr, tblMitglieder.Status, tblMitglieder.Anrede AS tblMitglieder_Anrede, tblMitglieder.Name AS tblMitglieder_Name, tblMitglieder.Vorname AS tblMitglieder_Vorname, tblMitglieder.Strasse, tblMitglieder.PLZ, tblMitglieder.Ort, tblMitglieder.Telefon, tblMitglieder.Tel_dienstl, tblMitglieder.Handy, tblMitglieder.Mail_1, tblMitglieder.Mail_2, tblMitglieder.Geburtstag, Age([Geburtstag]) AS [Alter], tblMitglieder.Eintritt, tblMitglieder.Aktiv, tblBoote.StegNr, tblBoote.Eigner_ID, tblBoote.Modell, tblBoote.Typ, tblBoote.Bootsname, tblBoote.Länge, tblBoote.Breite, tblBoote.Tiefe, tblBoote.Yardstickzahl, tblBoote.Stegklasse, tblBoote.Gebühr, tblMitglieder.Notiz, tblBoote.BootsNotiz, tblBoote.Versicherungsnachweis, tblMitglieder.Foto, tblBoote.ID
    FROM tblMitglieder LEFT JOIN tblBoote ON tblMitglieder.ID = tblBoote.Eigner_ID;
    Nom : Screenshot 2022-10-06 104851.png
Affichages : 115
Taille : 32,2 KoNom : Screenshot 2022-10-06 115014.png
Affichages : 115
Taille : 70,7 Ko

    Je doit préciser que le formulaire est doté d'un sous-formulaire affichant la totalité des membres (voir le screenshot)
    L''age du membre est calculé par la fonction [Geburtstag] sauvegardée dans un module

  9. #9
    Membre du Club
    Homme Profil pro
    Freelance
    Inscrit en
    Septembre 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2022
    Messages : 15
    Points : 42
    Points
    42
    Par défaut
    Bonjour Captain_Frog,


    j'ai reproduit de manière light ton modèle et je dois dire que je ne vois pas d’où viens ton problème sur la base d'un problème purement relationnel.


    "Dans le formulaire d'entrée pour les nouveaux membres j'ai ajouté la table des bateaux dans le query sous-jacent.
    Quand je veux entrer un nouveau membre, une ID est automatiquement attribuée à ce membre, mais également une nouvelle ID de bateau (alors que ce nouveau membre n'a peut-être pas de bateau)
    Comment faire pour qu'Access n'attribue pas de nouvelle ID de bateau automatiquement. Dois-je créer deux formulaires séparés ?"


    En reprenant les mêmes relations
    Nom : image 01.png
Affichages : 108
Taille : 30,0 Ko

    et en reproduisant ta requête source,
    Nom : image 02.png
Affichages : 106
Taille : 20,9 Ko

    je confirme qu'on arrive bien à créer des membres sans pour autant créer un bateau systématiquement
    Nom : image 03.png
Affichages : 105
Taille : 25,7 Ko
    Nom : image 04.png
Affichages : 103
Taille : 11,7 Ko

    La table T_Bateaux ne contient bien qu'un seul enregistrement
    Nom : image 05.png
Affichages : 108
Taille : 9,1 Ko

    Si on regarde ta capture d'écran au post précédent, c'est bien ce qui se produit sur ton formulaire, tu as le membre 47 - Larroque créé, et pas de bateau associé (Boote ID) à vide

    Du coup est-tu sûr de nous avoir bien définis ton problème?
    Peux-tu nous en dire plus sur le comportement de ton formulaire et sur l'évènement qui pose problème?

    En lien, la base que j'ai utilisé pour répondre : Membre_Bateau V2.accdb

  10. #10
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2022
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Octobre 2022
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Problème résolu
    Bonjour à tous

    Après avoir retourné le problème dans tous les sens je me suis décidé a refaire un formulaire avec sous formulaire lié. Non plus avec une seule requête réunissant tous les paramètres mais avec une requête séparée pour le formulaire principal et auntre pour le sous-formulaire.
    Et voilà tout est rentré dans l'ordre.
    Merci à tous pour votre coopération et bon week-end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout automatique de la date..
    Par Karibou dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 02/02/2006, 09h34
  2. Réponses: 2
    Dernier message: 07/12/2005, 13h25
  3. TValueListEditor: Ajout automatique d'une ligne vide
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/06/2005, 12h16
  4. Réponses: 5
    Dernier message: 23/06/2005, 10h18
  5. Ajout automatique de ressources
    Par Caotic dans le forum JBuilder
    Réponses: 2
    Dernier message: 20/08/2003, 14h57

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