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 :

Ouverture sous-formulaire à partir treeview


Sujet :

IHM

  1. #1
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut Ouverture sous-formulaire à partir treeview
    Bonjour à tous,

    Je tente d'ouvrir un sous-formulaire en cliquant sur le noeud d'un treeview.
    Il s'ouvre mais je ne parviens pas à lui faire afficher l'enregistrement correspondant à une partie du nom de mon noeud (en l'occurence le string "Cle")
    Je suis en train d'essayer une bidouille en passant par une zone de liste dans la quelle j'ai écrit la valeur de ma clé (Cle).
    Pour l'instant le sous-formulaire souvre sur le prmier enregistrement trouvé et en allant cliquer sur la combo qui me déclenche un AfterUpdate classique j'affiche le bon enregistrement.
    VOIR DANS Case 3 CI-DESSOUS:
    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
    Private Sub tvwStockage_DblClick()
    'Ouverture des formulaires de stock par double clic sur le noeud
    'ATTENTION: le fonctionnement suppose que la longueur de l'ItemID est inférieure à celle de sa tabletteID
    On Error Resume Next
        Dim NodX As Node
        Dim lg As Long
        Set NodX = tvwStockage.SelectedItem
        Dim Noeud As String
        Dim Cle As String
        Noeud = CStr(NodX)
    lg = InStr(CStr(NodX), " -- ") - 1
    Cle = Left(Noeud, lg)
                Debug.Print "Cle "; Cle
        Select Case lg
        Dim stDocName As String
        Dim stLinkCriteria As String
            Case 1
                If Left(Noeud, lg) <> "X" Then
                    stDocName = "frmDepot"
                    'stLinkCriteria = "[DepotID]=" & "'" & Left(Noeud, lg) & "'"
                    stLinkCriteria = "[DepotID]=" & "'" & Cle & "'"
     
                    DoCmd.OpenForm stDocName, , , stLinkCriteria
                End If
            Case 2
                    stDocName = "frmMagasin"
                    stLinkCriteria = "[MagasinID]=" & "'" & Cle & "'"
                    DoCmd.OpenForm stDocName, , , stLinkCriteria
     
            Case 3
                If Mid(Noeud, lg + 5, 2) = "<<" Then
                Debug.Print Mid(Noeud, lg, lg + 2)
                    stDocName = "frmEpi"
                    stLinkCriteria = "[EpiID]=" & "'" & Cle & "'"
                    DoCmd.OpenForm stDocName, , , stLinkCriteria
                End If
                '---------- C'est ce if qui pose problème
                If Mid(Noeud, lg + 5, 2) = ">>" Then
                    Debug.Print Mid(Noeud, lg, lg + 2)
     
                    Me.frmStockage_sub.SourceObject = "frmArticle"
                    Me.frmStockage_sub.Form.cmbItemID.Value = Cle
                    ' Maintenant simuler une maj de cmbItemID
     
                End If
            Case 4
                    stDocName = "frmTravee"
                    stLinkCriteria = "[TraveeID]=" & "'" & Cle & "'"
                    DoCmd.OpenForm stDocName, , , stLinkCriteria
     
            Case 5
                    stDocName = "frmTablette"
                    stLinkCriteria = "[TabletteID]=" & "'" & Cle & "'"
                    DoCmd.OpenForm stDocName, , , stLinkCriteria
     
        End Select
    End Sub
    Q? Si je continue ma bidouille, comment déclencher un évènement similaire, ou faire croire à une Maj?.
    Sinon il y aurait-il une solution plus "normale"?
    J'ai creusé du côté de Me.frmStockage_sub.LinkMasterFields mais je n'y arrive pas.

    Merci de votre attention.
    Un seul conseil: la règle des 3S.

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Je verrai l'ouverture du formulaire avec passage de la cle en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     DoCmd.OpenForm stDocName,,,,,,cle

    Le formulaire récupère le paramètre et filtre dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Form_Load()
     Me.Filter = "[EpiID]=" & chr$(34) & OpenArgs & chr$(34)
     Me.FilterOn = True
    End Sub
    Chr$(34) = guillemet pour du texte sinon Me.Filter = "[EpiID]=" & OpenArgs pour du numerique

  3. #3
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Merci trois fois helas...

    Ce n'était pas le if qui m'ouvre un autre formulaire qui me posait problème mais le second if du Case 3 qui m'ouvre un formulaire à l'intérieur d'un sous-frm "vierge", histoire de faire une "fenêtre" de visualisation et, après généralisation (que je vais attaquer car grace à ton aide ça marche) le but est d'ouvrir des formulaires différents dans la même fenêtre.

    Je disais donc que grace à ton aide ça fonctionne, je n'avais pas pensé utiliser le Filter comme tu me l'a proposé.
    Voici donc le if en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Mid(Noeud, lg + 5, 2) = ">>" Then
                    Me.frmStockage_sub.SourceObject = "frmArticle"
                    Me.frmStockage_sub.Form.Filter = "[ItemID]=" & Chr$(34) & Cle & Chr$(34)
                    Me.frmStockage_sub.Form.FilterOn = True
                End If
    à replacer dans le Case 3.

    Un autre post traitait du sujet mais ne proposait pas de réelle solution pour les sous-frm ne pouvant pas utiliser LinkMasterFields car pas de lien avec une cle primaire du form de départ.
    http://www.developpez.net/forums/sho...ields+treeview

    Merci et à bientôt
    JC
    Un seul conseil: la règle des 3S.

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

Discussions similaires

  1. [AC-2003] Ouverture sous formulaire à partir d'un champ
    Par jilow dans le forum IHM
    Réponses: 3
    Dernier message: 17/11/2009, 10h06
  2. Réponses: 7
    Dernier message: 05/05/2009, 17h41
  3. Réponses: 9
    Dernier message: 30/12/2005, 03h00
  4. ouverture de formulaire à partir d'une requéte
    Par gaetanef dans le forum Access
    Réponses: 5
    Dernier message: 21/11/2005, 15h51
  5. ouverture sous-formulaire
    Par ericdin dans le forum Access
    Réponses: 4
    Dernier message: 01/11/2005, 09h21

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