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 :

Nouvelle BDD, nouveaux problèmes


Sujet :

Modélisation

  1. #1
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut Nouvelle BDD, nouveaux problèmes
    Hello la communauté.

    Je repard sur une nouvelle petite BDD.

    Gestion de mes heures journalières

    5 Tables :

    1) T_Demandeurs

    Nom : 001-Demandeurs.PNG
Affichages : 232
Taille : 7,0 Ko

    2) T_TypeImputations

    Nom : 002-T_TypeImputations.PNG
Affichages : 220
Taille : 5,6 Ko

    3) T_Imputations

    Nom : 003-Imputations.PNG
Affichages : 224
Taille : 10,1 Ko

    4) T_Produits

    Nom : 004-Produits.PNG
Affichages : 223
Taille : 6,6 Ko

    5) T_Mouvements

    Nom : 003-Mouvements.PNG
Affichages : 222
Taille : 8,4 Ko


    Les relations (Pour le moment)

    Nom : 010-Relations.PNG
Affichages : 226
Taille : 21,5 Ko

    Dans le principe :

    1) Pour créer un mouvement, il me faut :

    a) Date du mouvement (Auto au jour ou en saisissant)
    b) L'imputation (Avec tous les champs renseignés)
    c) Heure de début exécution
    d) Heure de fin exécution

    Pour créer une imputation, il me faut :

    a) Date de création de l'imputation (Auto au jour ou en saisissant)
    b) Nom du demandeurs
    c) Prénom du demandeurs (Il se renseigne a la validation du nom)
    d) Référence Produit
    e) Désignation produit (Il se renseigne a la validation de la référence)
    F) Quantité de produit

    Pour se faire 4 Formulaires :

    1) F_GestionDemandeurs : Lui est OK

    Nom : 011-F_GestionDemandeurs.PNG
Affichages : 227
Taille : 22,3 Ko

    2) F_GestionProduits : Lui est OK

    Nom : 12-F_GestionProduits.PNG
Affichages : 223
Taille : 19,6 Ko

    3) F_GestionImputations : Lui est OK

    Nom : 13-F_GestionImputations.PNG
Affichages : 226
Taille : 27,3 Ko

    4) F_Mouvements : Lui est KO

    Nom : 14-F_Mouvements.PNG
Affichages : 216
Taille : 32,4 Ko

    En faite avec lui je souhaiterai lorsque je choisi une imputation, que les champs se remplissent automatiquement.
    Mais déjà a la base je n'arrive rien a voir dans la Liste déroulante, pourtant j'ai procédé de la même manière que pour celle du Nom dans le formulaire F-Demandeurs.

    Nbre Colonnes (Pour le moment) : 3
    Largeurs colonnes : 4;4;4

    Source de controle : ID_Imputation

    Contenu :

    Nom : 15-Contenu LsD_Imputation.PNG
Affichages : 221
Taille : 31,5 Ko

    Une idée?

    Merci beaucoup.
    Images attachées Images attachées  

  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.

    Je pense que dans ta requête F_Mouvements tu devrait avoir une jointure à gauche (la même que celle avec T_Demandeur) sur T_Produit au lieu d'une jointure stricte.
    Là si le produit n'est pas assigné dans T_Imputation alors la ligne ne sortira 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.

  3. #3
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    Marot

    Merci pour la réponse.

    Marot
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Je pense que dans ta requête F_Mouvements tu devrait avoir une jointure à gauche (la même que celle avec T_Demandeur) sur T_Produit au lieu d'une jointure stricte.
    Là si le produit n'est pas assigné dans T_Imputation alors la ligne ne sortira pas.

    A+
    Je ne vois pas ou faire cela.

    Mise a part dans certains formulaires (Pour remplir les listes box) ,

    Nom : Capture.PNG
Affichages : 207
Taille : 42,0 Ko

    je n'ai fais aucun requête

    Voici l'arborescenece du fichier.

    Nom : Capture.PNG
Affichages : 196
Taille : 27,3 Ko

    En faite non mon formulaire ne fgonctionne pas tout a fait.

    les infos résultantes du choix des listes box ne s'affichent pas dans les TextBox quand je fais défilé les enregistrements, un truc que j'ai zappé quelque part je pense, lol., zut zut

    Nom : Capture.PNG
Affichages : 187
Taille : 38,0 Ko

    Merci beaucoup.

    Lighteux26

  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 1/2
    [AC-365] Nouvelle BDD, nouveaux problèmes - Modélisation (developpez.net)

    Je me suis permis de reproduire la base à partir des copies d'écran pour y voir plus claire

    J'ai alimenté préalablement les tables avec des données de test :
    T_Demandeurs T_Imputations
    ID_Demandeur NOM_Demandeur Prenom_Demandeur
    1 Martin Jean
    2 Smith Albert
    3 Bailly Raymond
    ID_Imputation Date_Creation_Imputation Type_Imputation Nom_Imputation ID_Demandeur Quantite ID_Produit
    1 07/09/2022 OF Imputation 1 Martin Jean 10 6987235897 | Produit 6
    2 24/09/2022 OF Imputation 2 Bailly Raymond 5 5987452368 | Produit 5
    3 16/09/2022 AE Imputation 3 Smith Albert 2 7854125983 | Produit 7
    4 16/09/2022 AF Imputation 4 12
    8 22/09/2022 AT Imputation 5 Martin Jean 4
    9 29/09/2022 AF Imputatin 6 6 9456224782 | Produit 9



    T_Mouvements T_Produits T_TypeImputations
    ID_Mouvement Date_Mouvement ID_Imputation Heure_Debut Heure_Fin Heure_Totale
    1 08/09/2022 1 24/09/2022 10:00 29/09/2022 12:00
    2 15/09/2022 2 15/09/2022 10:00 15/09/2022 18:00
    ID_Produit Reference_Produit Designation_Produit
    1 1582569726 Produit 1
    2 2822369872 Produit 2
    3 3689746942 Produit 3
    4 4859626687 Produit 4
    5 5987452368 Produit 5
    6 6987235897 Produit 6
    7 7854125983 Produit 7
    8 8961575269 Produit 8
    9 9456224782 Produit 9
    ID_Imputation Type_Imputation
    1 OF
    2 AF
    3 AE
    4 AT



    Quelques remarques :

    • Dans la table [T_TypeImputation], la clé primaire devrait plutôt être {ID_TypeImputation} évitant ainsi tout amalgame avec [T_Imputations].{ID_Imputation}



    • Sur le formulaire Gestion des imputations
      Nom : 01 - 13-f_gestionimputations.png
Affichages : 158
Taille : 29,5 Ko



    1. {ID_Demandeur} => Le champ peut être lié directement au nom et au prénom, on économise ainsi le champ prénom indépendant
    2. Pour ce faire, modifier le champ {Id_Demandeur} comme suit :
      Nom : 02 - Image sans titre.png
Affichages : 156
Taille : 7,9 Ko
      Ce qui affichera dans les requêtes et formulaires directement {Nom_Demandeur} & " " & {Prenom_Demandeur} dans le champ {ID_Demandeur} de la table [T_imputations]
    3. Il manque la désignation du produit dans le formulaire . Je l'ajoute dans ma base exemple en lien, sur le même principe d'ID Lié que pour {Id_Demandeur}



    • Sur le formulaire [F_Mouvements], je propose ceci :
      Nom : 03 - 14-f_mouvements.png
Affichages : 157
Taille : 34,1 Ko



    • Le champ {ID_Imputation} est à designer au niveau de la table comme suit avec le paramétrage d'une liste déroulante à 4 colonnes pour bien cerner quelle imputation on veut choisir
      Nom : 04 - Image sans titre.png
Affichages : 158
Taille : 6,6 Ko

      La requête paramétrée comme source de la liste déroulante ramène également le nom à partir de la table [T_Demandeurs]
      Compte tenu du modèle, le fait de paramétrer une jointure externe sur [T_Imputation] permet de lister tous les {ID_emandeur}. Cela aura un impact plus loin sur les choix d'{ID_imputation} possible dans la gestion des mouvements.
      Je développerai plus loin, mais le fait de faire cette jointure externe pourra autoriser à choisir des Imputations sans demandeur et/ou sans produit. Au contraire, le fait de faire une jointure stricte empêchera de choisir un une imputation sans demandeur.
      Pour ce modèle-ci, le cas d'une imputation avec demandeur et sans produit devra être réglé autrement
      Nom : 05 - Image sans titre.png
Affichages : 157
Taille : 17,1 Ko

      Ceci permet d'afficher le choix de l'imputation dans le formulaire [T_Mouvements]




    • Ensuite, comme Lighteux26 , je modélise la requête source du formulaire [T_Mouvements] de manière à ramener les informations nécessaires
      Je prends le partie de designer la requête hors du formulaire , ce qui me permettra de vérifier la dynamique des données. Je n'aurai qu'à donner cette requête en source du formulaire ensuite.

      En passant, je reviens sur la modélisation de ma table [T_Mouvements] pour appliquer un format Date + Heure aux champs {Heure_Debut} et {Heure_Fin} comme ceci : jj/mm/aaaa\ hh:nn. En fonction du besoin, si le créneau est toujours sur le même jours, mieux vaudrait se passer du type date et calculer numériquement à l'heure. A approfondir

      Ce qui change ici, c'est que, afin de lier correctement la donnée de T_Mouvements au reste des tables, j'ajoute la table T_Mouvements et pars du champ {ID_Imputation] de cette table. C'est le fait de le renseigner qui va créer le lien et permettre de ramener dans le formulaire le reste des données dans les tables [T_Imputations], [T_Demandeurs] et [T_Produits]
      Nom : 06 - Image sans titre.png
Affichages : 157
Taille : 25,4 Ko


    Ensuite il y a des choix à faire. Et l'indication de marot_r était la bonne à mon avis :


    • Si on considère qu'une imputation peut avoir des Mouvements affectés sans avoir d'{ID_Demandeur] définis, on modifiera le lien [T_Imputations] - [T_Demandeurs] en jouant sur le paramétrage de celui-ci en double cliquant sur le lien dans la requête


    Nom : 07 - Image sans titre.png
Affichages : 155
Taille : 12,6 Ko >> Nom : 08 - Image sans titre.png
Affichages : 158
Taille : 12,6 Ko
    Le fait de choisir l'option 3 permettra de pouvoir choisir une imputation dont le demandeur n'est pas renseigné
    Ce paramètre n'autorise pas pour autant de choisir une imputation dont le produit n'est pas renseigné
    Nom : 09 - Image sans titre.png
Affichages : 155
Taille : 24,6 Ko


    • Si on considère qu'une imputation peut avoir des Mouvements affectés sans avoir d'{ID_Produit} définis, on modifiera le lien [T_Imputations] - [T_Produits] de la même manière

    Le fait de choisir l'option 3 permettra de pouvoir choisir une imputation dont le demandeur est renseigné
    Ce paramètre n'autorise pas pour autant de choisir une imputation dont le demandeur n'est pas renseigné

    Nom : 10 - Image sans titre.png
Affichages : 158
Taille : 23,7 Ko


    En conclusion pour la gestion des mouvements, il faut :

    • Gérer la jointure externe sur le champ [ID_Demandeur]d e la table [T_Imputations]
    • Gérer les jointures externes [T_Imputation] - [T_Demandeur] et [T_Imputations] - [T_Produits] de manière à pourvoir permettre la sélection de n'importe quelle imputation dans la requête [S_F_Mouvements]


    Maintenant, à l'affichage, on peut tester la dynamique des données de la requête [S_F_Mouvements] modélisée comme suit :
    Au passage je rajoute {ID_Mouvement} que je n'avais pas inclus au début, afin de l'afficher dans le formulaire pour info
    Nom : 11 - Image sans titre.png
Affichages : 157
Taille : 24,2 Ko


    A l'affichage de la requête [S_F_Mouvements], j'obtiens ceci :

    Nom : 12 - Image sans titre.png
Affichages : 155
Taille : 31,4 Ko

    Tous les cas de figure sont possible en jouant sur les 3 Jointures citée sen conclusion plus haut. Si on veut réduire le scope d'imputation sélectionnable, il faut redéfinir les règles de gestion et utiliser les bonnes jointures au bons endroits

    Suite sur le post suivant car la limite d'image est de 12 par post ^^

  5. #5
    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 2/2
    Le formulaire [F_Mouvements} se décline désormais quasiment tout seul. Toutes les fonctionnalités étant gérées dans les propriétés du modèle et des champs.
    L'avantage c'est qu'il nécessite peu ou pas de codage VB manuel, du coup ça mise en place est très rapide.

    Nom : 13 - Image sans titre.png
Affichages : 159
Taille : 21,5 Ko

    Jesélectionne {ID_Imputation] = 8
    Nom : 14 - Image sans titre.png
Affichages : 156
Taille : 11,4 Ko

    J'obtiensl'affichage cohérent dans le formulaire
    Nom : 15 - Image sans titre.png
Affichages : 163
Taille : 20,3 Ko


    En résumé, le problème sur le formulaire [F_Mouvements] était en fait multiple :

    • La source principale du formulaire doit évidemment être la table [T_Mouvements].
    • Il convenait d'utiliser et de paramétrer le champ {ID_Imputation} de la table [T_Mouvements] afin de pouvoir choisir toutes les imputations disponibles.
    • La source du formulaire doit faire l'objet de jointures externes sur les tables [T_Demandeurs] et [T_Produits]


    Ci-après un lien vers la base remodélisée pour l'exercice : DB_Formulaire

  6. #6
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    Merci de l'intérêt que vous portez à mon fichier.

    Ce fichier a quelques kouac

    Par exemple les requery de list quand je veux rajouter a l'aide d'un autre formulaire, se fond quand elles veulent, des fois oui, des fois non.

    J'en m'en suis accommodé, lol.

    Mais j'ai vu que sur mon autre post, vous en parliez, je pense que je ne les rafraichis pas au bon endroit, je le raffraichissait en fermant le précedant formulaire.

    je le rafraichis dans a la fermeture du Formulaire de l'ajoute de données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Close() ' événement sur fermeture du formulaire
        On Error Resume Next ' cette ligne ignore l'erreur éventuelle sur la prochaine ligne dans le cas ou vous ouvrez votre formulaire autrement
        Forms!F_GestionDemandeurs!LsD_NomDemandeur.Requery
        'Forms!F_GestionProduits!LsD_ReferenceProduit.Requery
    End Sub

    Je m'en sert tous les jours de ce fichier, il y aurait des ajustements a y faire, pas bien booké niveau taff en ce moment.

    Encore merci.

    Bonne fin d'aprés-midi.

    Lighteux26

  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
    Bonsoir Lighteux26

    Ce que j'appréhende au fur et à mesure de la lecture de vos Post, c'est qu'une meilleur conception des sources de données de vos formulaire et des requêtes sous-jacente pourrait être la clé à la résolution de nombre de soucis.

    Ainsi, la première chose à vérifier avant de produire un formulaire c'est la conception de la requête source, en remontant aux champs des tables, voir si tout se comporte comme attendu en fonction du schéma relationnel établis.

    Avec le temps, j'ai pris l'habitude (mais ça n'engage que moi) de concevoir les liens sur les clés externe de manière à ramener presque systématiquement l'information des tables de référence dans les listes déroulant des champs "clé externe" des tables de faits. A l'usage ça simplifie bien souvent la conception de l'interface à la fin.

    La modélisation et la paramétrage des champs peuvent être vérifiés dans les requêtes avant même la construction des formulaires. LA saisie ou le calcul sont visible de manière anticipée sous cette forme.

    Une fois que tout fonctionne dans les requêtes, la conception des formulaires est simplifiée et nécessite bien souvent beaucoup moins de VBA, limitant le travail à la mise en forme ou la sécurisation des champs.
    Le rafraichissement des listes se fait aussi plus simplement puisque la donnée est issue nativement des fonctionnalités du moteur Access

    Bon courage en tout cas

    Lionel

Discussions similaires

  1. nouvelle version = nouveaux problèmes
    Par elikante dans le forum Débuter
    Réponses: 8
    Dernier message: 03/12/2010, 15h50
  2. bdd java problème avec ResultSet
    Par moon96 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 28/04/2008, 23h06
  3. [MySQL] Connexion à la BDD impossible + problèmes avec mes headers
    Par Terni dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/08/2007, 15h31
  4. Nouvelle bdd basée sur des tables existantes
    Par alyphe dans le forum Juridique
    Réponses: 6
    Dernier message: 04/07/2007, 11h12
  5. [BDD][Mysql] Problème récurant sur certaines requêtes
    Par citizen_yule dans le forum Requêtes
    Réponses: 3
    Dernier message: 11/04/2006, 22h22

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