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 :

[DAO]Recordset et Problème de cotes dans la clause where


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut [DAO]Recordset et Problème de cotes dans la clause where
    1. Bonjour je suis un peu nouveau sur le forum.

    Je suis dans la console visual basic de access et je voulais faire une fonction vb qui passe en paramêtre la clause du where de mon recordset.
    j'ai un problème au niveau des cotes. Car quand je met une valeur et pas un paramêtre cela fonctionne

    voici la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Public Function get_chemin_file_ini(ByVal nomdubatch As String)
     
    Dim select_chemin As String
    Dim rs As DAO.Recordset
    select_chemin = "SELECT [chemin_complet] FROM [infos_fic_ini] WHERE [nom_batch] = '" & nomdubatch & "';"
    Debug.Print select_chemin
    Set rs = CurrentDb.OpenRecordset(select_chemin, DB_OPEN_DYNASET)
    Do While Not rs.EOF
    Debug.Print rs![Chemin_complet];
    'importer dans table ventil
    'DoCmd.TransferText acImportDelim, "ventil_import", "Ventil", rs![Chemin_complet]
    rs.MoveNext
    Loop
    rs.Close
    End Function
    Merci d'avance

  2. #2
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,

    Je viens de tester, et ton code fonctionne.
    Si dans la fenêtre d'exécution je lance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get_chemin_file_ini("toto.bat")
    j'ai comme retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [chemin_complet] FROM [infos_fic_ini] WHERE [nom_batch] = 'toto.bat';
    c:\users
    quel est le message d'erreur que tu as ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut Rien
    Justement aucun message d'erreur mais je ne récupere pas la valeur souhaitée.

    moi j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    get_chemin_file_ini(generation_etats)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [chemin_complet] FROM [infos_fic_ini] WHERE [nom_batch] = '';
    et donc la valeur entre cote n'est pas lues j'ai l'impression car rien ne s'affiche en debug.print

    Hors c'est le resultat du select que je veux exploiter mais la clause where ne s'effectue par car la chaine est vide apparement.

    Je pense que le problème viens du paramètre que je passe dans la fonction il s'agit d'une donnée contenu dans une table

  4. #4
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    get_chemin_file_ini(generation_etats)
    generation_etats est un champ d'une table ?

    si tu fais un debug.print de generation_etats ça te donne quoi ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Ce n'est pas un champs mais plutot la valeur que peut prendre un champ.

    Je veux donc recuperer cette valeur dans la condition where de mon select.

    Lorsque je lance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get_chemin_file_ini (generation_etats)
    le resultat est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [chemin_complet] FROM [infos_fic_ini] WHERE [nom_batch] = '';
    dans le where j'ai rien pour etre bref.

  6. #6
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    as tu déclaré ta variable generation_etats comme variable globale dans un module ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Non mais pourquoi puisque la valeur vient d'une table ?

  8. #8
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Précises un peu comment tu récupères generation_etats
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Tu dois soulever la le coeur du problème car j'avoue ne pas faire de traitements pour récuperer cette valeur.

    Il doit falloir que j'effectue un traitement pour récuperer ce champ, mais lequel?

  10. #10
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    tu appelles ta fonction depuis un formulaire ?
    Comment sélectionnes tu cette fameuse variable (ou champ) car si tu fais une recherche pour trouver le chemin c'est que tu as un choix possible au départ.

    De plus , il serait plus simple de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select_chemin = Dlookup("[chemin_complet]","[infos_fic_ini]","[nom_batch] ='" & nomdubatch & "'")
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    oui j'appelle la fonction depuis un formulaire. La fonction est liée à un bouton de controle qui la déclenche.

    Il n'y a pas de choix mais des états différents et donc un traitements différent.

    j'ai remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select_chemin = "SELECT [chemin_complet] FROM [infos_fic_ini] WHERE [nom_batch] = '" & nomdubatch & "';"

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select_chemin = DLookup("[chemin_complet]", "[infos_fic_ini]", "[nom_batch] ='" & nomdubatch & "'")
    Mais à l'execution il me renvoie l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (erreur d'execution 94 --> utilisation incorrecte de null)

  12. #12
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Je pense que ça vient du fait que nomdubatch est null

    Si avant ton dlookup, tu mets est ce que ça marche ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    non c'est la même erreur le paramêtre qui est dans la fonction est null puisque j'ai aussi l'impression qu'il n'est pas récupéré...

    Maintenant la question que je me pose c'est comment récupéré ce parametre correctement sachant qu'il s'agit d'une valeur d'un de mes champs d'une de mes tables.

    Merci

  14. #14
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    qu'est ce qui fait que tu choisi tel batch, plutôt qu'un autre ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    La fonction me permet de recupere le chemin d'un fichier en fonction de son nom de batch.

    Avec le chemin complet je pourrai ensuite importer le fichier dans la table qui correspond à son état et son modele tout simplement.

  16. #16
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    C'était pas ma question....

    c'est dans un formulaire que tu fait un choix en fonction de tel ou tel critère ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    Non il n'y a pas de choix tout les etats seront traité quoi qu'il arrive. La fonction est déclenchée autant de fois qu'il y a d'états mais elle fait un traitement différent selon le nom de l'état passé en parametre.

  18. #18
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Il faut donc que tu parcours ta table infos_fic_ini du début à la fin, que tu récupères ton info nomdubatch et que tu exécutes ton code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim MaBd as Database
    Dim Rst as Recordset
    Dim Var_Chemin as String
    Set Ma Bd=CurrentDb
    Set Rst=MaBd.openRecordset("infos_fic_ini",DbOpendynaset)
    Rst.MoveFirst
    Do While Not Rst.EOF
      Var_Chemin=Rst!nomdubatch 'nomdubatch est bien le nom de ton champ ?
      select_chemin = Dlookup("[chemin_complet]","[infos_fic_ini]","[nom_batch] ='" & Var_Chemin & "'")
      Rst.MoveNext
    Loop
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 17
    Points
    17
    Par défaut
    il y a une erreur il me dit incompatibilité de type sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Rst = CurrentDb.OpenRecordset("infos_fic_ini", dbOpenDynaset)

  20. #20
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    dans vba, Menu Outils/Réferences, ajoutes Microsoft DAO 3.5 ou 3.6 Object Library
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

Discussions similaires

  1. Problème de variable dans la clause WHERE avec CONVERT + DATE
    Par Archi89 dans le forum Développement
    Réponses: 4
    Dernier message: 09/01/2015, 20h35
  2. problème de Contains dans une clause where
    Par niko59480 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 13/12/2012, 14h02
  3. Réponses: 11
    Dernier message: 05/02/2009, 16h02
  4. problème de cote dans une requête
    Par sam01 dans le forum Requêtes
    Réponses: 5
    Dernier message: 17/08/2006, 11h43
  5. Réponses: 8
    Dernier message: 16/08/2006, 14h39

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