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

VBA Access Discussion :

Evènement formulaire double affichage


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut Evènement formulaire double affichage
    Bonsoir,

    Quelqu'un saurait comment on intercepte l'évènement "changement d'enregistrement" dans un formulaire double affichage sous Access 2007 ?

    Dans un formulaire simple affichage (affichant un enregistrement à la fois) j'utilise l'évènement Form_current, mais dans le cas du double affichage ce n'est pas adapté car tous les enregistrements sont affichés en même temps...

    Merci à vous

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonsoir,

    Je viens de faire un essai, l'évènement Sur activation semble bien fonctionner comme avant.

    Ton problème est peut être ailleurs
    Détailles ce que tu cherches à faire...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    Bonjour Mout et merci pour ta réponse.

    J'avoue que je suis embêté car j'ai les deux cas, l'un qui fonctionne, l'autre pas, et je n'arrive pas vraiment à distinguer ce qui fait la différence. Pour être plus clair...

    J'ouvre un formulaire dans une fenêtre dépendante et modale (depuis un formulaire principal). La source de ce formulaire est une table. Il est en double affichage (détail d'un enregistrement en haut, liste des enregristrements en bas), avec ajout autorisé.
    Dans un cas je n'ai pas de pb, je veux dire que quand je sélectionne un enregistrement en cliquant dans la feuille de données en bas, ça met à jour l'affichage dans la partie supérieure (détails) et je passe bien dans la routine form_current (je fais un msgbox pour le vérifier) à chaque fois. Si je clique sur 'nouvel enregristrement vide' dans la barre de navigation en bas, je crée un nouvel enregistrement, et je passe bien par Form_Current à nouveau.

    Par contre, j'ai un autre formulaire, pratiquement identique à celui-ci : même source de données, mêmes propriétés, et pour celui-là, quand je sélectionne un enregristrement, l'affichage de la partié supérieure se met bien à jour mais je ne passe pas par Form_Current. De même, je peux créer un nouvel enregristrement vide, mais je ne passe pas non plus par Form_Current.

    Les seules différences que j'ai trouvées entre les deux cas, c'est que dans le cas qui fonctionne, le formulaire est appelé depuis le formulaire principal de l'application, alors que dans le second cas, le formulaire est appelé depuis un formulaire secondaire. Et puis, dans le cas qui ne marche pas, j'ouvre le formulaire avec une clause Where dans l'instruction OpenForm, alors que dans le cas qui marche, je n'ai pas de clause Where.

    J espere que je suis un peu plus clair... Merci en tous les cas

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut C est OK
    J'ai trouvé !!
    En fait, il y avait bien encore une différence entre les deux cas ( forcément ! )
    C'est que dans le cas qui ne fonctionnait pas, tous les champs du formulaire étaient "Non activés" et "Vérouillés".
    Il a suffi que je mette un champ à "Activé" et "non vérouillé" pour que ça marche, je veux dire pour que je passe bien dans l'évènement Form_Current.
    Je ne suis pas sûr de bien comprendre ce mécanisme mais en tous les cas c'est ce que je constate. Si tu as une idée de la raison pour laquelle on passe, ou on ne passe pas, par Form_Current selon qu'on a ou pas un champ "Activé" et "Non vérouillé", ça serait intéressant...
    Merci encore

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 92
    Points : 98
    Points
    98
    Par défaut
    Je m'incruste ;-)

    Citation Envoyé par bastringue Voir le message
    J'ai trouvé !!
    Je ne suis pas sûr de bien comprendre ce mécanisme mais en tous les cas c'est ce que je constate. Si tu as une idée de la raison pour laquelle on passe, ou on ne passe pas, par Form_Current selon qu'on a ou pas un champ "Activé" et "Non vérouillé", ça serait intéressant...
    Merci encore
    Tentative d'explication : Un formulaire actif doit avoir un champ sur lequel positionner le focus. Si aucun contrôle ne permet d'être sélectionné, alors le formulaire ne peut pas être actif (faute de focus).

    a confirmer ...

    et si je peux me permettre, "tout les champs inactif" me parait étrange... peut-être que tu devrais utiliser une fonction native, comme l'interdiction de modification des données (propriété formulaire).

    a+
    Damran

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    Merci Damran pour ton intervention, je crois que tu as raison sur ton explication du focus...

    Pour ce qui est du choix surprenant de vérouiller les champs, c'est par esthétique et en voici la raison : le formulaire du dessus, présentant les détails d'un enregistrement a ses champs vérouillés, ce qui donne un aspect totalement "Read Only" : On ne peut pas cliquer sur l'un de ses champs, pas de curseur apparant au milieu d'un champ texte et pas de surlignement de texte possible.
    Par contre, le formulaire autorise l'ajout d'un enregistrement et dès que je crée un nouvel enregistrement (que je détecte par la valeur de Me.NewRecord dans la routine Form_Current), alors je débloque mes champs qui deviennent modifiables, perdant ainsi leur aspect "Read Only" pour prendre un aspect normal de champ de saisie.

    En tous les cas, je pense que ce post est résolu désormais,
    A+

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

Discussions similaires

  1. Formulaire double affichage
    Par johanaquatique dans le forum IHM
    Réponses: 19
    Dernier message: 12/11/2020, 21h54
  2. [AC-2007] imprimer le résultat d'un filtre sur formulaire double affichage
    Par johanaquatique dans le forum IHM
    Réponses: 6
    Dernier message: 18/06/2009, 13h54
  3. [AC-2007] Formulaires double affichage (ACCESS 2007)
    Par Rustaud dans le forum VBA Access
    Réponses: 0
    Dernier message: 15/06/2009, 15h52
  4. Réponses: 2
    Dernier message: 08/06/2009, 16h34
  5. [A-03] formulaire double affichage
    Par nogood1 dans le forum IHM
    Réponses: 1
    Dernier message: 07/10/2008, 11h38

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