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 :

Formulaire de saisie contenant un champs qui s'actualise depuis une autre table.


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 101
    Points
    101
    Par défaut Formulaire de saisie contenant un champs qui s'actualise depuis une autre table.
    Bonjour,

    J'ai créé un formulaire de saisie dépendant d'une table.

    De ce fait, j'entre des données dans mes Zone de Texte, et j'ajoute ainsi un enregistrement à ma table, enregistrement qui contient les données saisies.


    Je voudrais en fait qu'à partir d'une zone de texte saisie, un autre champ de la table soit remplie automatiquement à partir d'une autre table.

    Par exemple :

    Je saisis le champ "code postal", et je voudrais que le champ "ville" soit directement ajouté à l'enregistrement dans la table liée lors de l'appui sur le bouton d'enregistrement.


    Mon idée pour le moment consistait à transformer la Zone de Texte dépendante "Ville", en Zone de Liste, en mettant derrière une requête qui va afficher dans cette Zone de liste la Ville une fois la Zone de Texte "Code Postal" complétée, mais le problème est que lorsque je veux enregistrer par l'intermédiaire du bouton, le nom de la ville n'est pas ajouté dans la table.

    Je pense que ça vient du fait que mon champ "Ville" n'est plus une Zone de Texte, mais une Zone de Liste...

    Quelqu'un peut-il me guider?

    D'avance merci.

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 155
    Points : 196
    Points
    196
    Par défaut
    Bonjour,

    Une possibilité consiste à utiliser la fonction DLookUp lors de l'événement Après MAJ du code postal

    Tu peux jetter un coup d'oeil à l'aide sur cette fonction

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 101
    Points
    101
    Par défaut
    J'ai lu l'aide à propos de DLookup, mais je ne vois sincèrement pas comment je pourrai m'en servir dans le problème auquel je suis confronté.

  4. #4
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    la fonction Dlookup est l'equivalent d'une requête et correspond tout à fait a ton problème.

    tu as une table Villes (c'est la 2e table)
    avec le champ CP (pour code postal)
    et la champ NomVille

    Dans ton formulaire tu as le champ CodePostal et Ville

    lorsque tu a introduit le code postal dans ton formulaire de saisie, tu veux renseigner automatiquement le champ Ville

    sur les propriétés de ton champ CodePostal dans l'onglet événement, tu cliques sur après MAJ (l'image te montre juste le principe, la il s'agissait d'un bouton de commande)



    et tu introduit la code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CodePostal_AfterUpdate()
     
    Me.Ville = Dlookup ("NomVille", "Villes", "[CP] = '" &  Me.CodePostal & "'")
     
    End Sub
    attention aux ' je pars de l'hypothèse que le champ codePostal est une chaîne (String)

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 101
    Points
    101
    Par défaut
    Merci de te donner toute cette peine pour me donner une réponse très illustrée.

    J'ai fait ce que tu m'as dit.

    Lorsque je remplis le champ Code_Postal, et que je passe au champ suivant, un message d'erreur apparait :

    "L'expression après MAJ entrée comme paramètre de la propriété de type évènement est à l'origine d'une erreur. Un problème est survenu durant la communication bla bla bla etc"

    J'ai pourtant bien respecté la nomenclature, et Code_Postal est bien déclaré dans les 2 tables dans le format Texte.

    D'où pourrait provenir mon erreur?
    Les champs "Code_Postal" et "Nom_Ville" ont le même nom dans les 2 tables, cela peut-il être source d'erreur?

    De plus, le champ "Nom_Ville" de mon formulaire de saisie, est comme les autres champs de saisie, dépendants de la table que je veux remplir, et non indépendant.
    Cela peut-il avoir des conséquences sur le DLookup?

  6. #6
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    Merci de te donner toute cette peine pour me donner une réponse très illustrée.
    .. a force d'expliquer ce qu'est du code VBA derrière un contrôle de formulaire, j'ai fait cette image qui a déjà du me servir 15 fois...

    Les champs "Code_Postal" et "Nom_Ville" ont le même nom dans les 2 tables, cela peut-il être source d'erreur?
    Normalement non, mais cela peut étre une source de confusion pour toi...

    De plus, le champ "Nom_Ville" de mon formulaire de saisie, est comme les autres champs de saisie, dépendants de la table que je veux remplir, et non indépendant.
    Cela peut-il avoir des conséquences sur le DLookup?
    Absolument pas !!


    Essayes de voir d'où provient l'erreur (vérifies bien le nom des champs, parfois on se trompe d'une lettre, du type des champs)

    Debuges progressivement, étape par étape (phase indispensable du développement)
    commence par un MsgBox simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CodePostal_AfterUpdate()
      MsgBox Dlookup ("NomVille", "Villes", "[CP] = '75000' )
      ' remarque 75000 doit être présent dans la table Villes
    End Sub
    la le nom PARIS devrait apparaître

    modifies le code VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CodePostal_AfterUpdate()
    MsgBox Me.CodePostal 
    ' rermarque les MsgBox doit afficher le code postal contenu dans ton champ du formulaire
    MsgBox Dlookup ("NomVille", "Villes", "[CP] = '" &  Me.CodePostal & "'")
     
    End Sub
    la doit apparaître dans ton MsgBox le nom de la ville correspondant au code postal introduit dans ton formulaire

  7. #7
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 161
    Points : 101
    Points
    101
    Par défaut
    Lassé que tes explications avec le DLookup ne donnent rien, j'ai carrément refait ce formulaire, afin de remettre les choses à plat.

    Et ça marche.
    J'ai longtemps comparé mon code à celui de l'ancien formulaire, et je ne comprends vraiment pas d'où vient le conflit qui provoquait l'erreur.

    Sinon, pour les msgBox, j'en aurai besoin apparemment pour débuger par la suite, j'apporte une petite correction à ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CodePostal_AfterUpdate()
      MsgBox Dlookup ("NomVille", "Villes", "[CP] = '75000' ")
      ' remarque 75000 doit être présent dans la table Villes
    End Sub
    Il manquait un " à la fin avant la parenthèse, ça évitera aux futurs utilisateurs lisant ce sujet de tourner autour pendant des heures.

    Merci beaucoup en tout cas, tu m'as bien aidé dans le développement de mon formulaire, mais surtout dans mon apprentissage du VBA.


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

Discussions similaires

  1. Mettre à jours champs depuis une autre table
    Par Adin59 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 15/05/2014, 10h29
  2. Réponses: 3
    Dernier message: 24/02/2014, 08h31
  3. [AC-2007] table liés, insertion de champs depuis une autre table
    Par moumouss dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2009, 11h44
  4. Réponses: 13
    Dernier message: 14/04/2008, 14h30
  5. Champs calculés avec reference a une autre table
    Par cadetill dans le forum Firebird
    Réponses: 2
    Dernier message: 13/07/2007, 18h40

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