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 :

PB Fonction RechDom (DlookUp)


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 2
    Points
    2
    Par défaut PB Fonction RechDom (DlookUp)
    Bonjour à tous, je suis nouveau sur le forum et j'espère que vous pourrez m'aider pour mes nombreuses questions (PS, j'ai bien cherché dans le forum mais je n'ai pas trouvé de réponses).

    Je travaille sous Access 97 et j'utilise la propriété NuméroAuto pour mes identifiants. Dans les formulaires, j'utilise la fonction RechDom qui à partir d'une liste déroulante de mon identifiant, m'affiche les informations correspondantes dans des zones de texte. Jusque là pas de problème.

    Mais il faut que je change le format de mes identifiants (en conservant l'incrémentation) en ajoutant 2 chiffres fixes devant (EX : 0400001, 0400002...0400011...0400111...). Pour celà, j'ai saisi 0400000 dans le format du NuméroAuto. Le nouveau format est bien pris en compte.

    Le problème arrive dans mes formulaires, avec la fonction RechDom qui ne m'affiche plus rien . J'ai compacter la base, mais le résultat est toujours le même...

    1ère question : Pourquoi un simple changement de format de ce type ne fait plus fonctionner ma requête (il ne m'affiche rien du tout, pas même un message d'erreur) ?

    2ème question : Y a t-il un autre moyen pour "forcer" les NuméroAuto ?

    3ème question : Avant ce problème, la fonction RechDom m'affichait bien les résultats, mais j'avais un message #erreur qui s'affichait à la place de mes résultats. Ce message ne disparaissait que quand je sélectionnais dans la zone déroulante. Comment lui dire d'attendre mon choix ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    a priori, je dirais qu'il ne faut pas confondre Format et Valeur.
    Le format que tu as défini, ne change rien aux valeurs contenues dans la table.

  3. #3
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    1ère question :
    Les fonctions de domaine (DLookup etc...) ne renvoient jamais de messages d'erreur !
    2ème question :
    Je garderais le N° auto plus un Second champ indexé avec le bon Format;
    Le N° auto servira qu'à créer ton incrémentation (et empêcher les doublons).
    Tu pourras alors rechercher ce que tu veux.
    A chaque nouvelle entrée de données, tu fais en sorte que ton champ formaté soit le format du n°Auto soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!MonChamp=Format(Me!MonID, "040000#")
    3ème question :
    Oublie les fonctions Dom !
    Le #Erreur! vient d'un problème de valeur pas de format ;
    Mais peut-être qu'avec cette parade pré-citée, ça va marcher !

    Argy

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci pour les réponses, j'essaye dès que je peux.

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Je viens d'essayer mais ça ne m'affiche rien. J'ai créé un 2ème champ numérique que j'ai rajouté dans mon formulaire et j'ai saisi le code VBA, mais il ne m'affiche rien.

    Il faut juste que je rentre cette ligne de code où faut-il que je marque un autre code ? (désolé mais le VBA et moi )

    Sinon, est-il possible de saisir le format directement par les propriétés du contrôle sans passer par le VBA ?

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Re,

    Citation Envoyé par Mike 619
    Sinon, est-il possible de saisir le format directement par les propriétés du contrôle sans passer par le VBA ?
    Le code VBA est simple.
    Tu es sur un form avec la propriété Entrée de données à Oui.
    Donc quand tu ouvres le form, il est vierge (sauf si tu as des valeurs par défaut). A ce moment là, le champ ID est invisible...
    Donc sur l'événement Load de ton form (Sur Chargement()) tu écris le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!MonChamp=Format(Me!MonID, "040000#")
    Access va l'enregistrer comme tel (C'est un champ Texte et pas un numérique !!!) et tu pourras faire des recherches sur telle ou telle valeur.

    Argy

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 2
    Points
    2
    Par défaut


    Ca y est, ça fonctionne.

    Par contre ma recherche ne fonctionne plus. Je n'arrive à la faire que sur l'identifiant (le NuméroAuto), pas sur le champ que j'ai créé. Est-ce un problème de syntaxe ? (code saisi dans la source du contrôle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechDom("MonChamp";"MaTable";"ListeDéroulante="&[MonID])

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Oui, c'est un problème de syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ValeurATrouver As String
    ValeurATrouver =Me!ListeDéroulante
    RechDom("MonChamp";"MaTable";"MonID="& Chr(34) &  ValeurATrouver & Chr(34))
    A+

    Argy

  9. #9
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Finalement c'est bon, j'avais fait une erreur en ajoutant le nouveau champ. Il recherche bien sur celui-ci maintenant.

    Par contre, je viens de me rendre compte que quand je fais un nouvel enregistrement dans le formulaire, le champ que j'ai créé ne se remplit plus automatiquement. Il ne se remplit qu'à l'ouverture du formulaire. Mais ce qui est bizarre, c'est que même non remplit, ma recherche fonctionne toujours, mais je sélectionne un blanc dans la liste déroulante après la première valeur.

    Quel code faut-il rajouter pour qu'il se réinitialise à chaque nouvel enregistrement ?

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    C'est normal, il faut aussi que tu poses ce bout de code sur un événement AfterUpdate() d'un autre champ.
    L'id principal n'est généré qu'a partir du moment où tu commences à entrer des données...

  11. #11
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup. Ca fait plus d'un an que j'ai pas touché à Access, je suis complètement rouillé, mais ça revient doucement.

    Dernier détail : Pour le format "040000#", il me supprime le premier zéro, en me simplifiant à 40000# . Comment l'obliger à respecter le format complet ?

  12. #12
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Navré mais ce format fonctionne parfaitement...

    Prend un form vierge avec une zone de texte (ChampText1) et un bouton (cmdTestFormat) et colle le code suivant...
    Tu verras que ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub cmdTestFormat_Click()
      Static I%
      I = I + 10
      Me!ChampText1 = Format(I, "0400000#")
    End Sub
    A+

    Argy

  13. #13
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    En effet, ça fonctionne bien. Pourtant avec mes formulaires, il me retire le 1er zéro, mais c'est pas bien grave.

    Par contre, ma question 3 est toujours d'actualité... La parade n'a pas fonctionnée, il m'indique toujours un message #erreur dans les champs de recherche en attendant que je choisisse dans la liste déroulante.

    Comment supprimer ce message qui ne fait pas très sérieux ?

  14. #14
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Le #Erreur! survient lorsque qu'il manque un paramètre pour finaliser le résultat d'une opération ou d'une fonction.
    Dans ton cas, il te manque une valeur...
    Il faudrait que je vois la structure de ton form et ton code.
    Tu as dû omettre quelque chose. Il faut que ta liste déroulante contienne toujours une valeur ou bien il faut que tu triches avec un IIF.
    Effectivement, ça ne fait pas sérieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IIf(IsNull([MaComboBox];"";RechDom("";"";""))
    Argy

  15. #15
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Ca marche, finalement j'ai mis une valeur par défaut pour ma zone de liste déroulante.

    Merci pour ton aide.


    A+

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

Discussions similaires

  1. Critere de la fonction rechdom
    Par Cyrillus5 dans le forum IHM
    Réponses: 4
    Dernier message: 11/12/2008, 15h58
  2. [A-03] Utilisation de la fonction RechDom
    Par Miss Ti dans le forum IHM
    Réponses: 3
    Dernier message: 02/10/2008, 12h20
  3. Fonction RechDom dans une requête
    Par bernardmichel dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/07/2007, 14h46
  4. Réponses: 10
    Dernier message: 28/09/2006, 14h19
  5. Problème avec la fonction rechdom dans un état
    Par ustilago dans le forum IHM
    Réponses: 4
    Dernier message: 30/08/2006, 15h06

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