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

Access Discussion :

Comment lier un fournisseur et ses produits ? [AC-2013]


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Comment lier un fournisseur et ses produits ?
    Bonjour, pour mon TFE je dois faire une base de donné sur la gestion d’un parc animalier.

    J’aimerai que lorsque l’on choisit dans la table « T_Detail_Commande » un produit, le bon fournisseur lier dans la table produit ce met automatiquement ou si on choisit un fournisseur il n’affiche que les produit de ce fournisseur dans le menu déroulent.

    C’est possible ?
    Merci d'avance

    Nom : 2015-08-06_013137.jpg
Affichages : 1588
Taille : 114,5 Ko
    Nom : 2015-08-06_014029.jpg
Affichages : 982
Taille : 109,0 Ko

    Nom : 2015-08-06_014058.jpg
Affichages : 1009
Taille : 59,4 Ko
    Nom : 2015-08-06_014207.jpg
Affichages : 1026
Taille : 124,6 Ko

  2. #2
    rnd
    rnd est déconnecté
    Membre habitué Avatar de rnd
    Homme Profil pro
    Prestataire indépendant
    Inscrit en
    Mars 2004
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Prestataire indépendant

    Informations forums :
    Inscription : Mars 2004
    Messages : 141
    Points : 186
    Points
    186
    Par défaut
    Bonjour,

    Pour commencer je me permettrais une remarque sur ta structure, comment feras tu quand tu auras 2 (voir plus) fournisseurs pour un même produit? Il serait judicieux d'ajouter une table ProduitsFournisseurs ce qui te donnera la possibilité d'avoir un produit plusieurs fournisseurs et un fournisseur plusieurs produits.

    Pour ce qui est des listes de choix tu tout une explication ici http://access.developpez.com/cours/?...formctrllistes notamment "Concevoir une liste qui en alimente une autre"

    Enfin derniers point, je ne saurais te conseiller d'inclure tes listes de choix directement dans les tables, mais plutôt dans tes formulaires de saisie.

    Cdt, Renaud.
    "Si un jour on te reproche que ton travail, n'est pas un travail de professionnel, dis-toi bien que:
    Des amateurs ont construit l'arche de Noé et des professionnels le Titanic."

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci, je vais essayé.

    En cherchant sur le forum j'ai trouver le code de ClaudeLELOUP, il est différent mais il marche très bien.
    http://www.developpez.net/forums/d10...us-formulaire/

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Finalement ce n’est pas résolu...
    Avec la méthode "classique", je bloque à : menutest.RowSource = SQL

    Et pour la méthode de ClaudeLELOUP, je pense que je fais une erreur dans "Me.SFormulaire.Form!" mais je ne comprend pas comment l'écrire en sachant que mon sous formulaire s'appelle F_Detail_Commande.
    Désoler, c'est surement des trucs tous bêtes mais VBA, ACCESS et moi ça fait trois :p


    Nom : 2015-08-10_221151.jpg
Affichages : 810
Taille : 92,7 Ko
    Nom : 2015-08-10_215743.jpg
Affichages : 869
Taille : 103,7 Ko

  5. #5
    rnd
    rnd est déconnecté
    Membre habitué Avatar de rnd
    Homme Profil pro
    Prestataire indépendant
    Inscrit en
    Mars 2004
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Prestataire indépendant

    Informations forums :
    Inscription : Mars 2004
    Messages : 141
    Points : 186
    Points
    186
    Par défaut
    Bonsoir,

    Bon je vais être désagréable, mais cela va être pour ton bien
    Quand on fait du copier-coller sans "trop chercher" à comprendre ce que l'on fait, cela fonctionne beaucoup moins bien. Si tu avais regardé avec attention le problème, tu aurais vue que menutest est le nom de la zone de liste dans l'exemple, et comme tu ne l'a pas dans ton formulaire, forcément Access il est pas contant
    Mode désagréable OFF.

    Bon comme je suis d'un naturel gentil, et que je confirme toi, Access et VBA cela fait 3, j'ai charger ton fichier et ai les correction pour toi.
    Pour commencer il y a un problème dans ta tables détail commande, peut tu m'expliquer à quoi sert la référence fournisseur, alors qu'elle est déjà dans l'entête commande.
    Nom : Capture-2.png
Affichages : 1027
Taille : 71,5 Ko
    Donc à supprimer.

    Ensuite au niveau de ton formulaire Commande, commence par mettre le Source Contrôle la liste FcFournisseur à CS_Fournisseur, car cette elle qui permettra de faire la mise jour de la liste Article du sous-formulaire.

    Pour la liste FdcProduit tu met nombre de colonne à 2, et largeur: 0cm;4cm (pour le 4 tu peux mettre la valeur que tu veux en fonction de la largeur de la liste a afficher), source contrôle tu laisse Cs_Produit et et tu laisse vide pour le contenu.

    Pour le code tu écrase ce que tu à et tu remplace par celui-ci, j'ai volontairement mis les commentaires pour expliquer les lignes (en réalité on ne les dans un cas comme cela, mais pour apprendre au début ça aide; après l'on sait ou il faut commenter ou pas)

    Pour éviter tous déboire en VBA, c'est de commencer tous les modules avec Option Explicit, cela force à déclarer toutes les variables dans ton code. Ensuite lorsque que l'on déclare ses variables il faut respecter des conventions de nommage (aussi pour les objets, contrôles...) chacun à ces petites manies.

    La par exemple j'ai renommer test en in (pour integer) RefFourn parce c'est la référence fournisseur que je veux, remarque la façon comment j'utilise les majuscules. Idem pour la variable SQL que je renome en ch (pur string) SourceList.

    Pour mettre à jour la source liste j’explique cette ligne T_Detail_Commande.Form!FdcProduit.RowSource = chSourceList
    T_Detail_Commande est le nom du contrôle sous formulaire du formulaire Commande
    .Form pour dire que l'on accède au formulaire contenu dans T_Detail_Commande
    !FdcProduit le nom de liste de produit dans le formulaire
    .RowSource valeur de la source que l'on change
    Et ensuite sur la ligne suivante pour le .Requery on lance la requête pour mettre à jour la liste.

    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
    43
    44
    45
    46
    47
    48
    49
    50
    Option Explicit    ' Force la déclaration de variable
     
    Private Sub FcFournisseur_AfterUpdate()
    On Error GoTo Err_FcFournisseur_AF      ' Instruction en cas d'erreur
     
    Dim inRefFourn As Integer       ' Variables nommées et typées
    Dim chSourceList As String
     
    inRefFourn = Me!FcFournisseur       ' Initialise les variables
    chSourceList = "SELECT N_Produit, Nom_Produit, Cs_Fournisseur FROM T_Produit WHERE Cs_Fournisseur =" & inRefFourn & " ORDER BY Nom_Produit"
     
    T_Detail_Commande.Form!FdcProduit.RowSource = chSourceList     ' Modification de la source de la liste de code article
    T_Detail_Commande.Form!FdcProduit.Requery       ' Rafraichir le contenu de la liste
     
    Exit Sub    ' Fin de traitement, on sort
     
    Err_FcFournisseur_AF:   ' Si détection erreur, traité avec l'affichage du numéro et description de l'erreur
     
    Select Case Err.Number
        Case 94 ' Relever lorsque l'on passe en création nouvelle commande
            Exit Sub
        Case Else
            MsgBox Err.Number & vbCrLf & Err.Description, , "Erreur"
    End Select
    Err.Clear
     
    Err.Clear
     
    End Sub
     
    Private Sub FcFournisseur_BeforeUpdate(Cancel As Integer)   ' Gère le cas ou il y une saisie nul dans code fournisseur
     
    If IsNull(FcFournisseur) Then
        MsgBox "Fournisseur ne peut être null.", , "Erreur"
        Cancel = True
    End If
     
    End Sub
     
    Private Sub Form_Current()   ' Permet de mettre à jour la liste code article lors de la navigation d'un record à l'autre, par appel Sub mise à jour code fournisseur
     
    FcFournisseur_AfterUpdate
     
    End Sub
     
    Private Sub Form_Load()     ' Permet de mettre à jour la liste code article lors du chargement du formulaire après ouverture, par appel Sub mise à jour code fournisseur
     
    FcFournisseur_AfterUpdate
     
    End Sub
    A vérifier dans les événements = procédure événementiel

    Formulaire: sur activation et sur chargement
    FcFournisseur: Avant MAJ et Après MAJ

    Et enjoy
    Nom : Capture-1.png
Affichages : 933
Taille : 61,6 Ko

    Te joint ta base avec mes modifs.

    Cdt, Renaud
    Fichiers attachés Fichiers attachés
    "Si un jour on te reproche que ton travail, n'est pas un travail de professionnel, dis-toi bien que:
    Des amateurs ont construit l'arche de Noé et des professionnels le Titanic."

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    En faite j'ai essayé de le refaire mais sa ne fonctionnait pas (comme je l'ai dit Access n'ai pas ma tasse de thé) donc j'ai fais un copié/collé en essayant de l'adapté mais on dirait que cette idée a été encore plus foireuse...

    Merci mille fois, je fini Mon TFE sur les serveurs Linux (ma tasse te thé a moi :p ) et j'applique tes conseils.

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

Discussions similaires

  1. Comment lancer Eclipse en incluant ses plugins
    Par eclie dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 19/02/2009, 08h45
  2. Comment copier un dossier et ses sous dossiers ?
    Par touhami dans le forum Langage
    Réponses: 5
    Dernier message: 30/12/2004, 16h10
  3. [Tcl/Tk] Comment lier C à Tcl/Tk ?
    Par jaabouc dans le forum Tcl/Tk
    Réponses: 3
    Dernier message: 28/08/2004, 21h11
  4. Réponses: 6
    Dernier message: 27/05/2004, 10h41
  5. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45

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