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

Access Discussion :

Probleme de filtre avec fonction Dlookup sur champ texte


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Points : 31
    Points
    31
    Par défaut Probleme de filtre avec fonction Dlookup sur champ texte
    Bonjour a tous et bravo pour toutes astuces de ce forum.

    J'ai besoin de faire un code pour rechercher des valeurs de champs dans une table et les placer dans l'enregistrement en cours. Je m'explique :

    J'ai deux tables Table 1 et Table 2. Dans chacune des tables, J'ai NUM, NOM et Prenom (par exemple) tous en liste de choix.

    Dans un formulaire basé sur table 2, j'ai donc trois listes de choix et je souhaite que quand je crée un nouvel enregistrement et que je choisis dans une liste de choix, les autres champs se complètent avec nom et prénom ...

    Voici donc le code que je place après MAJ du champ NUM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ChFiltre = "[NUM]=" & Me![NUM]
    Me![NOM] = DLookup("[NOM]", "Table1", ChFiltre)
    Me![Prenom] = DLookup("[Prenom]", "Table1", ChFiltre)

    Ceci fonctionne donc très bien, Qd je choisis un numéro (numérique), le reste se complète seul SUPER


    MAIS si je place après MAJ du champ NOM, donc un filtre basé sur un champs texte et plus numérique, alors cela ne fonctionne pas.

    exemple si NOM est champs texte alors le code suivant ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ChFiltre = "[NOM]=" & Me![NOM]
    Me![NUM] = DLookup("[NUM]", "Table1", ChFiltre)
    Me![Prenom] = DLookup("[Prenom]", "Table1", ChFiltre)
    Il y a donc avec la fonction filtre et Dlookup une différence entre un champs texte et un champs numérique.

    Je fais donc une erreur mais je ne trouve pas de solution.

    Merci de m'aider

    Pierre

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Perso, pour cette tâche, je n'utilise pas Dlookup mais simplement une requête qui aliment ma liste de choix.

    Et sur un AfterUpDate, je copie ce que j'ai besoin en faisant référence au colonnes qui contiennent mes données.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub MaList_AfterUpDate()
    CeQueJeVeux = Me.Malist.Column(1)
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Points : 31
    Points
    31
    Par défaut
    Merci pour ta réponse, mais je comprend pas bien. En fait tu fais une requète sur le champs et tu prend les éléments de ta requète pour les copier dans ton champs?

    Pourquoi n'utilises tu pas le Dlookup si simple (hum hum) en numérique. Peut-être parce qu'il pose problème en texte

    JE pense que mon problème peut veni d'un prob de syntax .... Si quelqu'un peut me renseigner

    Merci
    Pierre

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    Nom est un champ texte, donc mettre le filtre entre des quotes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ChFiltre = "[NOM]='" & Me![NOM] & "'"
    cordialement,

    Philippe

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si tu fais un combo.
    La source de données du combo est une requête, un code SQL.
    Je peux mettre dans ce combo autant de colonnes que je veux (en fonction de leur disponibilité)

    Je fais une recherche dans le combo. Une fois ma valeur trouvée, les autres valeurs sont alors disponibles pour pouvoir les affecter à d'autres contrôles.

    Je ne dis pas et loin de là que ma méthode est la meilleure, mais c'est la plus simple à mettre en oeuvre, du moins je pense.

    En plus, avec un combo, je visualise les données de toutes mes colonnes.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par philben
    bonjour,

    Nom est un champ texte, donc mettre le filtre entre des quotes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ChFiltre = "[NOM]='" & Me![NOM] & "'"
    cordialement,

    Philippe

    UN TRES GRAND MERCI. La solution était simple mais tellement importante.

    Tu me sauves car cela fait 3 jours que je cherchais des bidoullages compliqués pour avoir ce résultat et c'était si simple.

    Merci et bravo pour l'entraide

    A+
    Pierre

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

Discussions similaires

  1. [XL-2010] Probleme avec fonction RECHERCHEH sur cellule fusionnée
    Par yolojo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/06/2014, 23h27
  2. [AC-2003] probleme avec un DSum sur champ texte
    Par kesamba dans le forum IHM
    Réponses: 2
    Dernier message: 30/06/2012, 18h45
  3. [MySQL] requete update avec fonction php sur champs
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/10/2008, 09h14
  4. Fonction search sur champs de BDD
    Par poosh dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 26/07/2007, 12h54
  5. Fonction LEFT sur champ de type "text" : méthodes
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/06/2004, 11h15

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