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 :

[VBA] Changer l'enregistrement courant du sous-form à partir d'un autre form


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut [VBA] Changer l'enregistrement courant du sous-form à partir d'un autre form
    Bonjour,

    Je n'arrive pas à changer l'enregistrement courant d'un sous-formulaire à partir d'un autre formulaire.

    -J'ai une liste d'usager dans un formulaire indépendant dont le contenu = "SELECT id, nom FROM tblUsagers".
    -J'ai un sous-formulaire sfrmUsager dont la source est "SELECT * FROM tblUsagers".

    Sur la mise à jour de la liste, le currentRecord du sous-formulaire change. Pas de problème.

    -J'ai un bouton "Créer un usager" qui ouvre un autre formulaire en mode AddNew. Quand je ferme ce formulaire, je mets la liste usagers et le sous-formulaire à jour (c'est ok). Je veux aussi me positionner sur le nouvel enregistrement. C'est ok pour la liste. Mais pas pour le sous-formulaire.

    Dans mon formulaire Créer un usager:
    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
     
    Private Sub Form_AfterInsert()
    Dim lstUsager As ListBox
    Dim sfrm As SubForm
     
        'Mettre la liste des usagers à jour
        Set lstUsager = Forms!frmMenuAccueil!lstUsagers
        lstUsager.Requery
        lstUsager.Value = Me.txtID.Value   'Se positionner sur le nouvel enregistrement (obtenir l'ID Auto-Number)
        'Debug.Print lstUsager.ListIndex & " " & lstUsager.Value 'L'infos est OK.
     
        'Mettre le sous-formulaire "Informations sur l'usager" à jour
        Set sfrm = Forms!frmMenuAccueil!sfrmUsager
        sfrm.Requery    
        sfrm.SetFocus       'Se positionner sur le nouvel enregistrement
        DoCmd.GoToRecord , , acGoTo, (lstUsager.ListIndex + 1) 'Plante.
     
        'Libérer la mémoire
        Set sfrm = Nothing
        Set lstUsager = Nothing
     
    End Sub
    J'imagine que DoCmd.GoToRecord s'applique alors au formulaire Créer un usager, et non pas au formulaire qui contient sfrm.

    Existe-t-il une autre fonction que DoCmd.GotoRecord pour manipuler des enregistrements à partir d'un autre formulaire? J'ai essayé avec les paramètres de GoToRecord mais je ne dois pas bien m'y prendre non plus.

    Merci!
    Caroline
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    slt,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfrm.recordset.move lstUsager.ListIndex + 1

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfrm.recordset.move lstUsager.ListIndex + 1
    Oui pardon...
    Liste et Sous-formulaire ont un "ORDER BY Nom". Donc l'index sélectionné de la liste (ListIndex) correspond à l'index de l'enregistrement que je veux atteindre. +1 parce que la liste est indexée à 0.

    J'ai temporairement afficher les boutons de déplacement : le sous formulaire. lstusager.ListIndex+1 correspond bien au numéro d'enregistrement que je veux atteindre et le sous-formulaire contient bien l'enregistrement en question.

    MODIF:
    Oups... j'ai surtout vu le ?... je viens de voir la réponse.
    Test: Erreur. Méthode Recordset introuvable.
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfrm.Form.Recordset.Move lstUsager.ListIndex + 1
    Là, Recordset est trouvé. Et ça marche :-).

    Merci Arkham!
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut Attention
    (pour ceux qui pourrait trouver une réponse dans ce post.

    Dans la doc :
    Move déplace la position de l'enregistrement actuel de x enregistrements, selon le paramètre fourni.

    Pour déplacer d'un nombre à l'enregistrement x directement, utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomSousFormulaire.Form.Recordset.AbsolutePosition = index
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/06/2008, 09h57
  2. Pb d'ouverture d'un form à partir d'un autre form
    Par jeremy_d dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/05/2008, 12h09
  3. Réponses: 1
    Dernier message: 06/05/2007, 10h43
  4. Réponses: 3
    Dernier message: 02/04/2007, 20h37
  5. [C#] appeler Close() d'un form à partir d'un autre form
    Par vvvvv dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/02/2006, 18h36

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