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

IHM Discussion :

1 formulaire plusieurs tables


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2015
    Messages : 50
    Points : 38
    Points
    38
    Par défaut 1 formulaire plusieurs tables
    Bonsoir,

    J'ai vu quelques postes a ce sujet mais ne n'arrive pas à comprendre comment cela fonctionne.

    J'utilise 1 formulaire (avec un contrôle d'onglet, 3 onglets) afin de créer des enregistrements en rapport avec ce que je vais saisir dans le formulaire.
    Derrière ce formulaire il y a 6 tables reliées entre elles par des relations 1 à plusieurs (quasi-normal).

    Onglet 1 : fiche cliente
    Onglet 2 : fiche montre (avec ses différentes caractéristiques)
    Onglet 3 : fiche SAV (Numero dossier, lieux d'intervention, etc, etc)

    ce que je n'arrive pas a comprendre c'est, comment en saisissant toutes les informations dans chacun des 3 onglets, on va comprendre que tel N° de dossier est lié avec telle montre et lié avec tel client.

    Pour vous donner un état d'ou j'en suis, dans mon bouton (en 3eme onglet) pour valider ma saisie, j'ai fais cela : (vba)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    Dim DataClient As Recordset
    Dim DataMontre As Recordset
     
     
    Set DataClient = CurrentDb.OpenRecordset("t_Clients", DB_OPEN_DYNASET)
    Set DataMontre = CurrentDb.OpenRecordset("t_Montre", DB_OPEN_DYNASET)
     
    With DataClient
     
        .AddNew
     
        .Fields!NomCli = Me.txt_nom
        .Fields!Prenom = Me.txt_prenom
        .Fields!Adresse = Me.txt_adresse
        .Fields!Code_Postal = Me.txt_cp
        .Fields!Ville = Me.txt_ville
        .Fields!Pays = Me.txt_ville
        .Fields!Tel_mobile = Me.txt_telmobile
        .Fields!Tel_fixe = Me.txt_telfixe
        .Fields!Email = Me.txt_email
        .Fields!Email2 = Me.txt_email2
        .Update
        .Close
    End With
     
    With DataMontre
        .AddNew
     
        .Fields!Num_serie_montre = Me.txt_NumSerieMontre
        .Fields!Calibre = Me.txt_calibre
        .Fields!Marque = Me.Lst_Marque
        .Fields!Modele = Me.txt_modele
        .Fields!Genre = Me.lst_genre
        .Fields!Mouvement = Me.lst_mouvement
        .Fields!Boite = Me.lst_boite
        .Fields!Bracelet = Me.lst_bracelet
        '.Fields!Photo = Me.pj_photo
        .Update
        .Close
    End With
    Cela rempli bien les tables consécutivement mais aucun lien entre elles.

    merci pour vos lumières
    Stéphane

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    Dans le formulaire tu mets la source de la table mère, les contrôles qui la représente sont directement inclus onglet.
    Chaque tables enfants sont représentées par un formulaire qui sont inclus dans leur onglet respectif.

    Pour la liaison tu dois simplement utiliser les propriétés Champs père et Champs fils. N'hésites pas à te documenter sur ces 2 propriétés qui marche de pair. (F1 est ton seul ami).
    C'est 2 propriétés sont là pour reproduire les liens entre tes tables.

    Concernant ton approche par le code, je pense que tu fais fausse route. Ce type de montage est à utiliser dans peut-être 0.01% des cas. Souvent des cas extrêmes nécessités par une conception à la con, un modèle de données hyper complexe ou pour un but didactique.

    Cordialement,

    [EDIT] ou encore un solution ADO ou autre.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Ayant un peu de temps et trouvant ton modèle intéressant, vois en pièce jointe une première illustration de ce que t'indique loufab.
    Par rapport au modèle que tu proposais dans la section correspondante, j'ai fait disparaîtra des tables SAV les informations sur le client vu que les relations permettraient de les récupérer assez facilement en remontant les tables.

    Initialement, par rapport à ton schéma, on devrait avoir un formulaire client qui contiendrait les montres du client (la liaison Pères/Fils synchroniserait les valeurs de l'IdClient). Ensuite, un sous-formulaire à partir de la table SAV_Montre devrait être insérer dans le formulaire sf_montre et les données seront synchronisées avec les champs IdMontre en Pères/Fils. Je n'aime pas ce type de présentation (chacun a son goût) parce que tu ne peux pas avoir de sous-formulaire dans un formulaire en présentation tabulaire.

    Ce que je propose est assez particulier parce que le formulaire permet d'avoir 2 sous-formulaires côte à côte en mode tabulaire.
    Le formulaire principal basé sur la table client et son formulaire sf_Montre basé sur la table montre est classique (comme précédemment).
    Par contre, on insère un deuxième sous-formulaire sf_SAV_montre basé sur la table SAV_montre dans le même formulaire client.
    Une zone de texte est inséré dans le formulaire principal avec comme source l'ID de la montre qui sera sélectionné dans le sous-formulaire sf_montre.
    Aussi, le deuxième sous-formulaire sf_SAV_montre sera synchronisé avec cette zone de texte par les propriétés Pères/Fils.

    Je pense que cela t'apportera des idées.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

Discussions similaires

  1. [MySQL] formulaire plusieurs tables plusieurs champs mais 2 identiques
    Par pipiche13011 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/01/2015, 17h04
  2. 1 seul formulaire plusieurs tables détail
    Par fxbrg dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/09/2009, 13h25
  3. sous-formulaire : champs provenant plusieurs tables
    Par patbeautifulday1 dans le forum IHM
    Réponses: 13
    Dernier message: 21/12/2005, 11h17
  4. Réponses: 10
    Dernier message: 15/09/2005, 12h31
  5. Réponses: 7
    Dernier message: 12/10/2004, 16h43

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