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 :

Ouvrir un RecordSet avec une requête


Sujet :

VBA Access

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Ouvrir un RecordSet avec une requête
    Bonjour à tous

    J'ai un souci avec l'ouverture d'un RecordSet; Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim rsJourFerie As Recordset
    Set rsJourFerie = DataDb.OpenRecordset("SELECT * FROM JourFerie WHERE DateJourFerie = #" & DateTravail & "# AND CodeMonnaie='" & CodePays & "'")
    Lorsque je lance ça il me dit : Too few parameters. Expected 2.

    J'ai bien compris qu'il me parle de ma clause where parce que au départ j'avais que la date et j'avais Expected 1.

    J'ai donc parcouru la doc et le web et je ne comprends pas comment je lui met la clause Where pour qu'il comprenne ce que je veux.

    Je suis un poil dépassé et j'ai besoin de votre aide.

    Merci d'avance et un bon Lundi à tout le monde.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Hello,

    deux possibilites :
    - le nom de tes champs n'est pas le bon
    - les variables ne sont pas reconnues comme correctes.

    Fais un essai avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox "SELECT * FROM JourFerie WHERE DateJourFerie = #" & DateTravail & "# AND CodeMonnaie='" & CodePays & "'"
    pour constater le contenu de ta requete, recopie le contenu dans une requete dans ton IHM access et regarde a quel endroit ca te remonte une erreur
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.
    Alors la chaine interprétée donne cela : SELECT * FROM JourFerie WHERE DateJourFerie = #9/25/2017# AND CodeMonnaie='001'

    Lorsque je la colle dans une Query cela me remonte zero enregistrement, mais c'est normal et lorsque je change la date pour avoir un enregistrment, j'ai le bon. En tout cas je n'ai aucun message d'erreur.

    Et les deux variables sont bien intégrées, je ne vois aucun souci là-dessus.

    Bref, je suis un peu perdu.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Ok,
    regardons du cote du recordset en lui meme, tu travailles sur un DAO c'est bien cela ?

    Lorsque tu compiles le code, ca passe egalement ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Alors, je suppose que tu parles de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim DataDb As DAO.Database
    Set DataDb = OpenDatabase("\\mon.server\GroupShares\Mon_Data.accdb")
    Dim rsJourFerie As Recordset
    Sinon, la compilation passé nickel.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Ok, on va restreindre le champ des possibles en 3 etapes
    1/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rsJourFerie As Recordset
    Set rsJourFerie = DataDb.OpenRecordset("SELECT * FROM JourFerie")
    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rsJourFerie As Recordset
    Set rsJourFerie = DataDb.OpenRecordset("SELECT * FROM JourFerie WHERE DateJourFerie = #" & DateTravail & "#")
    3/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rsJourFerie As Recordset
    Set rsJourFerie = DataDb.OpenRecordset("SELECT * FROM JourFerie WHERE CodeMonnaie='" & CodePays & "'")
    ca passe ou non ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ok, alors Code 1 : ça passe nickel
    Code2 et Code 3 même message que précédement sauf le Expected qui a 1.

    Too few parameters. Expected 1.

    Je n'arrive pas à comprendre cette hsitoire de paramètres d'autant plus que j'ai d'autres recordset ailleurs qui marche bien avec cette formulation.

    Si tu y comprends quelque chose........
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE DateJourFerie = #2017-09-25# AND CodeMonnaie='001'

  9. #9
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide mais même potif, meme punition.

    Par contre j'ai testé un truc qui me titillait depuis quelques heures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim DataDb As Database
    Set DataDb = OpenDatabase("\\mon.server\GroupShares\Mon_Data.accdb")
    Dim rsJourFerie As Recordset
    Set rsJourFerie = CurrentDb.OpenRecordset("SELECT * FROM JourFerie WHERE DateJourFerie = #" & DateTravail & "# AND CodeMonnaie='" & CodePays & "'")
    Et bizarrement là, ça marche. Sauf que, là je suis obligé de faire un Link de la table JourFerie qui se trouve ailleurs que dan la base courante. Et donc, ce n'est pas possible.

    Une idée avec cette nouvelle donnée ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set rsJourFerie = CurrentDb.OpenRecordset("SELECT * FROM JourFerie WHERE DateJourFerie = #" & format(DateTravail,"yyyy-mm-dd") & "# AND CodeMonnaie='" & CodePays & "'")

  11. #11
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Pardon, je me suis mal exprimé : l'idée c'est de ne PAS utiliser CurrentDb mais la lien sur ma base distante.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        '--- Connexion ---
        With Createobject("ADODB.Connection")
            .open = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\mon.server\GroupShares\Mon_Data.accdb;"""
    Set rsJourFerie = .execute("SELECT * FROM JourFerie WHERE DateJourFerie = #" & DateTravail & "# AND CodeMonnaie='" & CodePays & "'")
    .close
        End With

  13. #13
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton code.

    ça à l'air de réagir autrement. J'ai jsute fermé la chaine à la fin de CodePays parce qu'il manqué un & "'" mais sinon, j'ai un autre message d'erreur :


    No value given for one or more required parameters


    Et là, je comprends encore moins ce qu'il veut.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";"
     
    *
        '--- Connexion ---
        With Createobject("ADODB.Connection")
            .open = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\mon.server\GroupShares\Mon_Data.accdb;"
            Set rsJourFerie = .execute("SELECT * FROM JourFerie WHERE DateJourFerie = #" & DateTravail & "# AND CodeMonnaie='" & CodePays & "'")
    .close
        End With
    Mais tu peux utiliser ADODBRD comme monté dans ce poste!
    https://www.developpez.net/forums/d1...t/#post9627581
    Dernière modification par Invité ; 26/09/2017 à 08h20.

  15. #15
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Pour ADODBDR j'ai pas encore eu le temps de bien comprendre le fonctionnement et j'avoue que c'est un peu obscur pour moi. Entre des méthodes de développement qui ne me sont pas habituelles et le fait que se soit le code d'un autre, c'est pas simple pour ma petite caboche. Je dois bien avouer que c'est rudement bien codé et que je ne suis pas aussi fort que cela.

    Mais je reste à me demander pourquoi le code veut tout cela pour un simple Recordset avec une requête qui contient une clause Where alors qu'ailleurs dans mes développements je fais des Recordset avec des Requêtes qui contiennent des clause Where et qui ne pose aucun problème.

    Bref, je vais avancer comme je peux.

    MErci et bonne journée.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  16. #16
    Invité
    Invité(e)
    Par défaut
    si tu préféré!
    Code avec CurrentDb : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rsJourFerie = CurrentDb.OpenRecordset("SELECT * FROM JourFerie IN '\\mon.server\GroupShares\Mon_Data.accdb' WHERE DateJourFerie = #" & Format(DateTravail, "yyyy-mm-dd") & "# AND CodeMonnaie='" & CodePays & "'")
    Dernière modification par Invité ; 26/09/2017 à 10h51.

  17. #17
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Même avec ce code, j'ai encore le message : Too few parameters.

    Je comprends pas ce qu'il veut avec ses histoires de paramètres.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 113
    Points : 124
    Points
    124
    Par défaut
    Bonjour zooffy,

    Juste au cas où... Tu as regardé du côté du format de la date. J'ai souvent des problèmes de ce type quand je manipule des dates et parfois c'est tout simplement du au format de la date qui n'est pas le bon...

    Bien à toi
    el

  19. #19
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Oui, j'ai évacué ce souci grâce aux tests de JPA. Ce n'est pas un problème de format de date, c'est un problème de paramètre qu'il réclame lorsque je pointe sur un fichier Distant et qu'il ne demande plus si je passe en CurrentDb.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Login Pass word?

Discussions similaires

  1. [AC-2010] Charger un Recordset avec une requête paramètrée
    Par zooffy dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/07/2017, 14h25
  2. Problème de recordset avec requête SELECT
    Par gwinyam dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 08/03/2007, 10h53
  3. ouvrir un formulaire avec le rslt d'une requête
    Par 973thom dans le forum Access
    Réponses: 4
    Dernier message: 09/09/2005, 16h51
  4. Ouvrir un curseur avec une requête paramétrée?
    Par nnj dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/07/2005, 14h12
  5. [Recordset] Incompatibilté de type avec une requête
    Par lbourlet dans le forum Access
    Réponses: 2
    Dernier message: 29/10/2004, 15h52

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