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 :

Requery formulaire - revenir à l'enregistrement en cours


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 29
    Points
    29
    Par défaut Requery formulaire - revenir à l'enregistrement en cours
    Bonjour,

    après plusieurs recherches sur le forum et les tuto, je n'arrive pas à trouver une solution qui correspond à ma situation.

    J'ai un formulaire avec un sous-formulaire.

    Lorsque je met à jour le sous-formulaire, je souhaite recalculer mon formulaire car j'ai un champ dépendant des données du sous-formulaire mises à jour (une somme).

    J'ai donc mis dans Après MAJ du sous-formulaire le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_AfterUpdate()
     
    Me.Parent.Requery 
     
    End Sub
    Le problème est que je reviens au premier enregistrement de mon formulaire alors que je souhaiterais rester sur l'enregistrement en cours.

    J'ai donc essayer de collecter un signet avant le requery, faire le requery et réaffecter le signet, comme cela est conseillé dans un autre poste.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim mapositionencours As Variant 'la variable qui va recevoir le signet en cours
    mapositionencours=Me.Parent.Bookmark 'Collecter le signet
    Me.Parent.Requery 'Faire le requery après quoi on se retrouve au premier enregistrement
    Me.Parent.Bookmark=mapositionencours 'Repositionner à l'enregistrement souhaité
    L'erreur pointe la dernière ligne... Je ne trouve pas pourquoi.

    Nabouille

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    bonjour,

    Pas testé, mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_AfterUpdate()
     
    Me.Parent.Refresh 
     
    End Sub
    ne rafraîchirait pas le formulaire, tout en restant sur l'enregistrement en cours ?

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 29
    Points
    29
    Par défaut
    non, j'ai déjà essayé.
    Ce code ne fait pas la mise à jour.
    Il s'agit d'un champ basé sur une requête qui fait une somme.

  4. #4
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Bonjour a tu essayé

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    ton code n'est pas en cause: je n'ai pas de prb chez moi.
    form+sfm avec code sur ev 'après maj' du sfm.
    avec liaison des données entre forms.
    >pas de pb.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 29
    Points
    29
    Par défaut
    Merci pour vos essais,

    Mais... chez moi, ça ne fonctionne pas:

    il a l'air de faire la mise à jour puis il affiche
    "erreur 3159 Signet non valide" sur la dernière ligne de mon code,

    comme si je ne pouvais pas réattribuer ma variable à Me.Parent.Bookmark !

    si c'est pas le code... je ne vois pas ce que ça pourrait être d'autre?

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    si c'est pas le code... je ne vois pas ce que ça pourrait être d'autre?
    pas celui là en tout cas. mais c'est surement le traitement qu'occasionne le requery.

    comme si je ne pouvais pas réattribuer ma variable à Me.Parent.Bookmark !
    dis toi bien que c'est pas comme si: il ne peut pas réatribuer la valeur au bookmark. pour preuve:
    erreur 3159 Signet non valide
    debug, debug, debug.
    si cela persiste poste une archive concis de ton pb

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 29
    Points
    29
    Par défaut
    Le seul autre code est sur la liste déroulante du formulaire principal, pour sélectinner l'enregistrement. Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub C_AfterUpdate()
        ' Rechercher l'enregistrement correspondant au contrôle.
        Dim rs As Object
     
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[ID_CONTRATS] = " & Str(Nz(Me![C], 0))
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub
    Y aurait-il une "interférence" entre les 2 codes qui m'empêcherait de réatribuer ma variable via Me.Parent.Bookmark ? comment faire dès lors pour que cela fonctionne?

    Voici un lien pour télécharger le formulaire qui pose problème https://easyshare3.oodrive.com/easys...3D&iid=4759848 (1,6M)
    Il s'agit du formulaire "Cconsult&modif" Lorsque je modifie le Montant du 2ème sous-formulaire (Taches sous-formulaire), j'aimerais que le total (case juste en dessous) soit mis à jour, en restant sur le même enregistrement de mon formulaire principal...
    Merci de votre aide...
    Nabouille

  9. #9
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    Un signet est un clé système dépendant du recordet en cours==> faire requery produira forcément d'autres bookmark dès qu'une modification du recordset aura été faite .

    La seule solution est de mémoriser la clé d'index primaire contenu dans ta table ou ta requête pour effectuer une instruction seek ou bien de repérer les champs discriminant de ton recordset pour te re-positionner après requery par le méthode movefind me semble t-il.

    Bon courage

  10. #10
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Y aurait-il une "interférence" entre les 2 codes qui m'empêcherait de réatribuer ma variable via Me.Parent.Bookmark ? comment faire dès lors pour que cela fonctionne?
    dans la source du form 'C_consult&modifs':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [BUDGET].[ID_BUD], [BUDGET].[ID_CONTRATS], [BUDGET].[Budget/Avenant], [BUDGET].[Date_accord], [BUDGET].[Montant], [BUDGET].[Remarques], [BUDGET].[Terminé], [_C_CONTRATS].[TITRE_FR], [TOTAUX].[Total_budget], [TOTAUX].[Total_facture], [TOTAUX].[Total_taches] FROM (BUDGET INNER JOIN _C_CONTRATS ON [BUDGET].[ID_CONTRATS]=[_C_CONTRATS].[ID_CONTRATS]) INNER JOIN TOTAUX ON [_C_CONTRATS].[ID_CONTRATS]=[TOTAUX].[ID_CONTRATS] WHERE [BUDGET].[ID_CONTRATS]=Nz(forms![C_consult&modifs]!C,0);
    dans l'événement du combo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub C_AfterUpdate()
    Form.FilterOn = True    'de  preférence dans le load du form
    Form.Requery
    End Sub
    là y a plus d'erreur.
    mais vérifie l'utilité de 'mapositionencours' et du reste...

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 29
    Points
    29
    Par défaut
    Excellent,

    cela fonctionne super bien

    et effectivement, juste le requery suffit dans le "Après MAJ" du sous-formulaire.

    Merci beaucoup Vodiem

    Nabouille

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Même problème
    Bonjour,


    J'ai deux tables (table1) et (Table2) qui sont liés par un lien 1 à plusieurs (Table1)1 à (table2) Plusieurs.
    La clé primaire de la table 1 est un champs appelé Code et la clé primaire dans la table 2 est UnicKey et j'ai aussi une clé étrangère dans la table 2 appelé Code qui fait le lien avec la clé primaire (Code) de la table1.
    La table 2 a plusieurs champs principalement des nombres. J'ai aussi une requête (Req1) qui fait la somme des champs de la table 2 par Code.
    J'ai également un formulaire (Form2) qui a comme source la table 2 et un autre formulaire (Form1) qui lui a comme source Req 1.
    Ensuite j'ai inséré le Form2 Dans le Form1.
    Mon but est de mettre à jour les sommes du Form1 chaque fois que je change une valeur des champs du Form 2.
    Alors j'ai insérer la fonction requery aprés la mise à jour du Form2. Mais chaque fois que je change une valeur il me retourne au premier enregistrement et il me sort la boite de débogage avec ce message.

    erreur 3159 Signet non valide

    Je voudrais qu'il reste à l'enregistrement d'où j'ai effectuer le changement et faire la mise à jour.

    Pouvez vous m'indiquer clairement comment vous avez résolu le problème .

    Merci

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 21/01/2015, 10h14
  2. [AC-2003] Revenir à l'enregistrement en cours
    Par mercatog dans le forum IHM
    Réponses: 2
    Dernier message: 23/07/2009, 16h37
  3. Fermer un formulaire revenir à l'enregistrement en cours
    Par ThieBEN dans le forum VBA Access
    Réponses: 12
    Dernier message: 27/11/2007, 11h23
  4. Réponses: 4
    Dernier message: 17/10/2005, 15h05
  5. Réponses: 2
    Dernier message: 10/10/2004, 23h12

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