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 :

Problème de Liaison entre formulaire et sous-formulaire


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Juillet 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Problème de Liaison entre formulaire et sous-formulaire
    Bonjour à tous,

    Je poste un message ici parce que j'ai un problème de liaison entre deux de mes formulaires.

    je m'explique: j'ai un premier formulaire basé sur la table T_Orders qui contient les détails des commandes passées, et un sous-formulaire basé sur une table T_OrdersContent, qui contient la liste des articles commandés. Entre ces deux tables, il y a une relations de un à plusieurs entre OrderID (T_Orders) et OrderReference (T_OrdersContent).

    Quand je vérifie les champs père et fils, ils sont correctement renseignés. Cependant, lorsque je crée une nouvelle commande, le champ OrderReference ne remplit pas automatiquement (voir image), et si j'enregistre l'item de la commande, je retrouve l'item dans la table T_OrdersContent, mais sans la référence de commande (OrderID), ce qui est bien entendu très problématique...

    J'ai du ajouter du code VBA lors de certains événements (notamment le chargement du sous formulaire). Je ne pense pas que ça puisse impacter, mais je vous poste le code, au cas ou...

    Code VBA Formulaire principal:

    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
    Private Sub Commande30_Click()
        Me.TotalAmount = DLookup("[SommeDeSubTotal]", "R_OrderTotalHT")
    End Sub
     
    Private Sub Btn_CalculateTotal_Click()
     
    End Sub
     
    Private Sub Provider_GotFocus()
        Me.Provider.Requery
    End Sub
     
    Private Sub VAT_AfterUpdate()
        Me.TotalWithTax.Requery
    End Sub
    Code VBA Sous-formulaire

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Option Compare Database
     
     
     
    Private Sub Btn_SaveForm_Click()
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "R_BudgetImputation"
        DoCmd.SetWarnings True
        Me.SF_BudgetImputation.Form.PriceAdjustedPerBudget.Requery
        DoCmd.Save
    End Sub
     
     
     
    Private Sub Form_Current()
        If IsNull(Me.Item) Then
            Me.ItemPackaging.Visible = False
            Me.Packaging_Etiquette.Visible = False
            Me.PricePerUnit.Visible = False
            Me.PricePerUnit_Etiquette.Visible = False
            Me.Quantities.Visible = False
            Me.Quantities_Etiquette.Visible = False
            Me.SubTotal.Visible = False
            Me.SubTotal_Etiquette.Visible = False
        ElseIf IsNull(Me.ItemPackaging) Then
            Me.PricePerUnit.Visible = False
            Me.PricePerUnit_Etiquette.Visible = False
            Me.Quantities.Visible = False
            Me.Quantities_Etiquette.Visible = False
            Me.SubTotal.Visible = False
            Me.SubTotal_Etiquette.Visible = False
        ElseIf IsNull(Me.Quantities) Then
            Me.SubTotal.Visible = False
            Me.SubTotal_Etiquette.Visible = False
        Else
            Me.ItemPackaging.Visible = True
            Me.Packaging_Etiquette.Visible = True
            Me.PricePerUnit.Visible = True
            Me.PricePerUnit_Etiquette.Visible = True
            Me.Quantities.Visible = True
            Me.Quantities_Etiquette.Visible = True
            Me.SubTotal.Visible = True
            Me.SubTotal_Etiquette.Visible = True
        End If
    End Sub
     
     
    Private Sub Item_AfterUpdate()
        Me.ItemPackaging.Visible = True
        Me.Packaging_Etiquette.Visible = True
        Me.ItemPackaging.Requery
    End Sub
     
    Private Sub Item_GotFocus()
        Me.Item.Requery
    End Sub
     
     
    Private Sub ItemPackaging_AfterUpdate()
        Me.PricePerUnit.Visible = True
        Me.PricePerUnit_Etiquette.Visible = True
        Me.Quantities.Visible = True
        Me.Quantities_Etiquette.Visible = True
        Me.PricePerUnit = DLookup("Price", "R_ItemPrice")
    End Sub
     
     
    Private Sub ItemPackaging_GotFocus()
        Me.ItemPackaging.Requery
    End Sub
     
    Private Sub PricePerUnit_AfterUpdate()
        Me.SubTotal.Requery
    End Sub
     
    Private Sub Quantities_AfterUpdate()
        Me.SubTotal.Visible = True
        Me.SubTotal_Etiquette.Visible = True
        Me.SubTotal = Me.Quantities * Me.PricePerUnit
    End Sub
    Quelqu'un aurait-il une idée?

    Merci d'avance

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour

    quand tu indiques
    j'ai un premier formulaire basé sur la table T_Orders
    c'est vraiment un formulaire ou c'est déjà un sous-formulaire ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Juillet 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    C'est formulaire.

    Il y a trois formulaire ici:

    Formulaire basé sur T_Orders (principal), un sur T_OrdersContent (Sous-Formulaire), et dans ce sous-formulaire, il y a un troisième sous-sous formulaire basé sur T_BudgetImputation. Mais celui-là fonctionne bien.

    Et je me rends compte que j'ai oublié de joindre l'image...

    Nom : Formulaire F_Orders.png
Affichages : 58
Taille : 209,8 Ko

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Juillet 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Sinon il y a la solution de créer un code VBA qui va automatiquement remplir le champOrderReference en prenant la valeur de OrderID. Ca me semble juste bizarre que ce ne soit pas automatique...

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    effectivement je ne vois pas de problème de setup

    est ce que T_Orders.OrderID et T_OrdersContent.OrderReference sont bien de même type ? sont ils reliés par une relation d'intégrité ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Juillet 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Je pensais avoir trouvé le problème. En fait j'avais utilisé l'assistant liste déroulante dans access pour qu'on ne puisse choisir qu'un order existant déjà. Cependant, pour une raison que je ne comprends pas, cette liste n'acceptait pas les valeurs des nouveaux orders que j'avait fait. J'ai donc supprimé la liste, supprimé la relation et je l'ai refaite en pensant régler le problème (les deux champs sont bien en numérique). Du coup, maintenant, au lieu de m'afficher le champ OrderReference vide, il me met 0. Je peux corriger et mettre l'OrderID, et à ce moment ça marche. Mais par défaut il me met 0...

  7. #7
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    C'est compliqué d'utiliser un champ en saisie et en sélection, cependant Access permet de filtrer sur un champ

    mais pour ce qui est de ton problème, je ne vois pas, tu peux zipper ta base ?

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Juillet 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    En tous cas merci pour ton aide et pour ton temps.
    Voici la base de donnée (rien de confidentiel, rien que pour des tests)
    Fichiers attachés Fichiers attachés

  9. #9
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Remplace la source de SFOrdersContent par [T_OrdersContent], il y a là un query trop compliqué

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Juillet 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    En effet, ça marche maintenant. Un tout grand merci pour l'aide et la rapidité!

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

Discussions similaires

  1. [AC-2007] Problème de liaison entre formulaires
    Par Benzozia dans le forum Modélisation
    Réponses: 2
    Dernier message: 04/02/2018, 22h08
  2. Réponses: 5
    Dernier message: 22/05/2017, 16h23
  3. Problème de liaison entre formulaire/table et requête
    Par 19malie85 dans le forum Access
    Réponses: 3
    Dernier message: 23/11/2012, 15h05
  4. [AC-2003] Problème de liaison entre formulaire
    Par tsuki95 dans le forum IHM
    Réponses: 1
    Dernier message: 15/11/2010, 15h50
  5. Réponses: 2
    Dernier message: 14/08/2007, 09h22

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