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 :

Synchronisation formulaire avec une zone de liste déroulante


Sujet :

IHM

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Synchronisation formulaire avec une zone de liste déroulante
    Bonjour,
    Je rencontre un problème avec Access 2013 pour synchroniser un formulaire avec une zone de liste déroulante.
    Après avoir suivi les étapes pour créer ma zone de liste déroulante, la synchro ne fonctionne toujours pas.
    Mon formulaire est basé sur une requête de non correspondance.
    J’ai créé une zone de liste déroulante avec l’assistant en choisissant l’option « Rechercher un enregistrement dans mon formulaire basé sur la valeur que j’ai sélectionnée dans la liste déroulante ».
    J’ai choisi comme premier champ de ma zone de liste déroulante la même clé que celle du formulaire.
    La zone de liste modifiable a été créée avec comme propriété « après MAJ » une macro incorporée avec l’instruction suivante :
    RechercherEnregistrement
    Enregistrement : Premier
    Condition Where : ="[NO_INDIVIDU] = " & Str(Nz([Screen].[ActiveControl];0))

    Lorsque je sélectionne un élément de la liste, le formulaire affiche systématiquement le premier enregistrement de la requête et non l’enregistrement sélectionné.
    Après avoir effectué de nombreux tests, je me suis aperçue d’une chose curieuse.
    Si je base ma requête sur une table postgres (lien en ODBC vers cette table), cela fonctionne parfaitement.
    Si je base ma requête sur une table Access créée à partir de cette table postgres qui a exactement les mêmes caractéristiques (même clé primaire, notamment), cela ne fonctionne pas.
    (Malheureusement, je suis obligée d’utiliser la 2nde formule, il me faut donc solutionner le problème).
    Merci d’avance pour vos réponses

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Bonjour.

    • Vérifie que NO_INDIVIDU est bien numérique dans ta table Access.
    • Vérifie que la donnée retournée par ta liste est la bonne (ce devrait être la clef primaire).
      Pour la faire afficher mettre "2;" dans la propriété "Largeurs des colonnes".
      Cela devrait t'afficher 2 colonnes dont la 1ère fait 2 cm et la seconde utilise l'espace restant.


    Si numérique et que la donnée est bonne essaye avec quelque chose qui ressemble à cela :

    ="[NO_INDIVIDU] = " & [Forms]![NomTonForm]![nomTaListe]

    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci beaucoup pour ton aide !
    La vérification étant faite (NO_INDIVIDU est bien numérique et la donnée retournée est la bonne) et la modification effectuée, ça ne fonctionne toujours pas.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Bizarre.

    Essaye ="[NO_INDIVIDU] = IciUneValeurValide"

    Cela devrait t'afficher les données correspondant a 'IciUneValeurValide.

    si cela marche ajoute à ta macro un truc du genre

    Afficher Message "[NO_INDIVIDU] = " & [Forms]![NomTonForm]![nomTaListe]

    Cela devrait permettre de voir ce que Access comprend vraiment.

    A+

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    En mettant dans ma zone condition where =
    ="[NO_INDIVIDU] = 1768" (enregistrement qui existe)
    Toujours rien de changé, le formulaire continue à afficher l'enregistrement en cours.

    D'autre part, en ajoutant dans ma macro une action ZoneMessage :
    Message : "[NO_INDIVIDU] = " & [Forms]![Saisie des convocations - Nouveaux]![Modifiable 87]

    Il m'affiche bêtement :
    "[NO_INDIVIDU] = " & [Forms]![Saisie des convocations - Nouveaux]![Modifiable 87]

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Personnellement je n'utilise pas les macros donc je suis perplexe.

    Je te suggère de remplacer ta macro par du VBA.
    Choisir l'événmenet.
    choisir "Procédure événementielle"
    puis taper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call me.recordset.findfirst("[NO_INDIVIDU]=" & me.[Modifiable 87])
    entre Sub ...et End subDevrait faire le travail et surtout te permettra de mettre un point d'arrêt pour interroger ce que voit Access.

    Et si tu peux, change [Modifiable 87] pour un nom significatif comme [ListeIndividu] ou [ChoixIndividu] ou simplement [Individu]. cela rend le code plus compréhensible.

    A+

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Cette méthode ne fonctionne pas non plus, mais finalement j'ai trouvé la solution.

    J'avais créé ma table Access en utilisant un copier coller à partir d'une table postgres existante (un lien ODBC vers une table postgres). Cette table avait une clé de type numérique (décimale).
    Le formulaire fonctionnait parfaitement en attaquant la table postgres, mais ne fonctionnait pas avec la table Access (avec pourtant le même type de clé numérique).
    En changeant le type de clé de ma table Access en numérique entier, tout fonctionne parfaitement.

    En tout cas, merci beaucoup pour ton aide.

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 22/03/2013, 13h05
  2. Réponses: 2
    Dernier message: 20/11/2009, 11h37
  3. Réponses: 13
    Dernier message: 19/11/2007, 18h22
  4. Réponses: 2
    Dernier message: 18/11/2007, 20h17
  5. Réponses: 1
    Dernier message: 19/01/2006, 17h54

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