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 :

Ouvrir formulaire sur un enregistrement précis [AC-2010]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Ouvrir formulaire sur un enregistrement précis
    Bonsoir à tous,

    Je continue à développer une appli de gestion de projets et je bloque un peu sur un petit problème d'ergonomie.

    En deux mots :
    J'ai une liste de projets en cours. En double cliquant sur cette liste, j'ouvre un formulaire qui affiche les détails du projet en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       DoCmd.OpenForm "frmEditProjets", acNormal, , "[noautoprojet]=" & Me![noautoprojet], acFormEdit, acDialog
    Facile !
    Mais je voudrais aller au delà en permettant à l'utilisateur de naviguer (directement depuis la fenêtre détaillée) dans la liste des projets avec des boutons flèches. Cela serait 100x plus ergonomique (plutôt que de devoir quitter la fenêtre à chaque fois ...).
    J'ai fouillé un peu sur le net et j'ai cru comprendre qu'il fallait faire appel à Findrecord ... mais je ne vois pas du tout comment l'utiliser. Quelqu'un à déjà mis en place un truc du genre ?

    D'avance merci !!

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour,

    Procède plutôt comme ceci :

    - ouvre le formulaire cible en lui passant noautoprojet comme argument :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "LeFormulaireCible", , , , , ,Me.LeControleQuiContient_noautoprojet
    - dans l’événement Sur ouverture du formulaire cible, tu testes qu’un argument est présent. Si oui, tu positionnes le formulaire sur l’enregistrement concerné (d'abord activer le contrôle susceptible de contenir l'argument) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
    If IsNull(Me.OpenArgs) Then Exit Sub
    DoCmd.GoToControl "LeControleQuiContient noautoprojet"
    DoCmd.FindRecord Me.OpenArgs
    End Sub
    - si besoin de naviguer, l’utilisateur se sert des boutons standard de navigation.


    Reviens-moi si tu as besoin d’un coup de main pour placer le code.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Presque
    Bonjour Claude !

    Merci pour ta solution !
    Ça fonctionne mais pas tout le temps ! Au premier clic ça ouvre exactement le formulaire comme je veux et au bon enregistrement !

    Une fois que j'ai fermé la fenêtre et que je souhaite de nouveau l'ouvrir en cliquant sur une autre ligne ... il me met erreur 2162 : une macro définie sur une des propriétés du champ actif a échoué à cause d'une erreur dans l’argument de l'action TrouverEnregistrement.

    La ligne du formulaire qui doit s'ouvrir bug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.FindRecord Me.OpenArgs
    Nota : une fois que je relance complètement access, je peux de nouveau ouvrir une seule fois la fenêtre avant de voir l'erreur apparaître ...

    Est-ce que cela peut venir du fait que mon champ en question est un texte et pas un nombre ? Je ne comprends pas d'où vient le problème ...

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Je ne connais pas le contexte de ton application, c'est un peu difficile de t'aider avec précision.

    D'après ce que tu indiques, ça pourrait venir du fait qu'à la deuxième tentative, le formulaire cible est déjà ouvert.

    Essaie ceci :

    avant d'ouvrir le formulaire cible, demande s'il est déjà ouvert et si c'est le cas, tu le fermes avant de l'ouvrir à nouveau.

    Ton code pour ouvrir la cible devient donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      If CurrentProject.AllForms("LeFormulaireCible").IsLoaded = True Then
        DoCmd.Close acForm, "LeFormulaireCible"  's'il est ouvert, on le ferme
      End If
      'et on l'ouvre pour un nouveau tour de carrousel
      DoCmd.OpenForm "LeFormulaireCible", , , , , , Me.LeControleQuiContient_noautoprojet

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Points : 12
    Points
    12
    Par défaut J'ai trouvé !
    J'ai fini par trouver ! Le problème semble venir du GoToControl.... qui ne fonctionne pas tout seul.
    En fait j'ai testé une autre fonction pour sélectionner le contrôle : Setfocus.

    Il faut d'abord sélectionner le formulaire qui s'ouvre, puis le contrôle et enfin faire un Findrecord comme tu me l'a indiqué !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.SetFocus
    DoCmd.GoToControl ("noprojet")
    DoCmd.FindRecord Me.OpenArgs
    Ca marche nikel !
    Merci Claude !

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

Discussions similaires

  1. [AC-2003] Ouverture d'un formulaire sur un enregistrement précis
    Par Jeanpierre71 dans le forum IHM
    Réponses: 7
    Dernier message: 10/10/2011, 18h56
  2. Ouvrir un formulaire sur un enregistrement précis
    Par vpovpo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/05/2011, 16h11
  3. Ouverture d'un formulaire sur un enregistrement précis
    Par Halzard dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/06/2007, 15h36
  4. Réponses: 2
    Dernier message: 21/12/2006, 10h26
  5. Réponses: 1
    Dernier message: 06/07/2006, 15h44

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