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 :

Lire une requête Access en VBA


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 941
    Par défaut Lire une requête Access en VBA
    * Bonjour, *

    Dans une fonction VBA, je cherche à ouvrir et lire un Recorset avec le code suivant :
    Set rst = dbs.OpenRecordset("Query Requete Pointages")
    Malheureusement, j'obtiens l'erreur :
    Error #: 3061
    Trop peu de paramètres. 3 attendu.
    ???
    Pourriez-vous m'aidez ?
    SVP
    Merci
    .

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 432
    Billets dans le blog
    11
    Par défaut
    Salut,

    Es-tu sûr que ta requête contient un résultat ?
    Évite de mettre des espaces dans le nom de tes requêtes !
    @+.

  3. #3
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 941
    Par défaut
    Oui ma requête me retourne bien un ensemble de résultats quand je l'exécute directement.
    Évite de mettre des espaces dans le nom de tes requêtes !
    Je comprends cette suggestion, mais le fait est que les espaces dans les noms restent admis tant que la bonne syntaxe est utilisée :
    [le nom de ma requete]
    L'ordre SQL produit par le générateur de requêtes est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PARAMETERS [Formulaires]![Form Requete Pointages Resultats]![ListSalarie] Text ( 255 ), [Formulaires]![Form Requete Pointages Resultats]![TxtMois] DateTime, [Formulaires]![Menu Application DbLPE]![TxtUtilisateur] Text ( 255 );
    SELECT "01_Pointages" AS [Index], Salaires.Matricule, [Nom_SAL] & " - " & [Prenom] AS Nom_Salarie, Unites.Responsable, Unites.Denomination, Comptes.Designation, Comptes.Compte, 1 AS Facteur, Year([Date_PT]) AS Annee, Month([Date_PT]) AS Mois, Format([Date_PT],"mm/yyyy") AS Mois_Traite, UCase(Format([Date_PT],"mmmm")) AS Mois_Nom, Format([Date_PT],"ww",0,0) AS Semaine, Day([Date_PT]) AS Jour, UCase(Left(Format([Date_PT],"dddd"),1)) AS Jour_Nom, DLookUp("[Marqueur]","[Feries]","[Date_FE] =#" & Format([Pointages].[Date_PT],"mm/dd/yyyy") & "#") AS Ferie, Pointages.Date_PT, Pointages.Heure_Debut, Pointages.Heure_Fin, Round(([Heure_Fin]-[Heure_Debut])*24,1) AS Quantite
    FROM Comptes INNER JOIN ((Unites INNER JOIN Salaries AS Salaires ON Unites.Unite = Salaires.Unite) INNER JOIN Pointages ON Salaires.Matricule = Pointages.Matricule) ON Comptes.Compte = Pointages.Compte
    WHERE (((Salaires.Matricule)=[Formulaires]![Form Requete Pointages Resultats]![ListSalarie]) AND ((Format([Date_PT],"mm/yyyy"))=[Formulaires]![Form Requete Pointages Resultats]![TxtMois])) OR (((Salaires.Matricule)=[Formulaires]![Menu Application DbLPE]![TxtUtilisateur]) AND ((Format([Date_PT],"mm/yyyy"))=[Formulaires]![Form Requete Pointages Resultats]![TxtMois]) AND (([Formulaires]![Form Requete Pointages Resultats]![ListSalarie])="")) OR (((Format([Date_PT],"mm/yyyy"))=[Formulaires]![Form Requete Pointages Resultats]![TxtMois]) AND (([Formulaires]![Form Requete Pointages Resultats]![ListSalarie])="") AND (([Formulaires]![Menu Application DbLPE]![TxtUtilisateur])="admin")) OR (((Unites.Responsable)=[Formulaires]![Menu Application DbLPE]![TxtUtilisateur]) AND ((Format([Date_PT],"mm/yyyy"))=[Formulaires]![Form Requete Pointages Resultats]![TxtMois]) AND (([Formulaires]![Form Requete Pointages Resultats]![ListSalarie])=""))
    ORDER BY [Nom_SAL] & " - " & [Prenom], Comptes.Compte, Year([Date_PT]), Month([Date_PT]), Format([Date_PT],"ww",0,0), Day([Date_PT]), Pointages.Heure_Debut;
    Je joins des captures d'écran de la requête dans la fenêtre du générateur de requêtes.
    Merci de votre aide
    .
    Images attachées Images attachées    

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 432
    Billets dans le blog
    11
    Par défaut
    As-tu essayé sans mettre la ligne PARAMETERS... ?

  5. #5
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 941
    Par défaut
    J'ai essayé sans la ligne PARAMETERS
    La requête retourne un ensemble vide, aucun résultat dans la feuille de données à l'ouverture de la requête
    Lorsque j'exécute ma fonction VBA, la ligne de code
    Set rst = dbs.OpenRecordset("Query Requete Pointages")
    me retourne la même erreur
    Auriez-vous d'autres idées
    Merci d'avance
    .

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 960
    Par défaut
    Bonsoir,
    Ton problème, provient des paramètres que tu ne peux pas charger lors de l'utilisation de la méthode OpenRecordset. Mais il suffit de charger la requête par Querydef avant.
    Essaie ceci :
    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
    17
    18
    Dim oQdf As DAO.QueryDef
    Dim oRst As DAO.Recordset
     
    'Chargement de la requête avec paramètres
    Set oQdf = CurrentDb.QueryDefs("Query Requete Pointages")
     
    oQdf.Parameters(0).Value = [Forms]![Form Requete Pointages Resultats]![ListSalarie]
    oQdf.Parameters(1).Value = [Forms]![Form Requete Pointages Resultats]![TxtMois]
    oQdf.Parameters(2).Value = [Forms]![Menu Application DbLPE]![TxtUtilisateur]
     
    ' Chargement du Recordset à partir de la requête
    Set oRst = oQdf.OpenRecordset
    ' ici ton code ...
     
    oRst.Close
     
    Set oQdf = Nothing
    Set oRst = Nothing

  7. #7
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 941
    Par défaut
    merci beaucoup
    c'est super !
    (:

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

Discussions similaires

  1. lire une table Access avec VBA
    Par ivoratparis dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/06/2013, 16h56
  2. Exécuter une requête Access en VBA
    Par mimi123456789 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/09/2012, 11h20
  3. [AC-2000] Exécuter une requête Access en VBA (QueryDefs)
    Par shakapouet dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/08/2012, 11h55
  4. [AC-2003] lire une table Access en VBA ligne par ligne
    Par afifaNancy dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/06/2012, 13h54
  5. Réponses: 5
    Dernier message: 05/04/2006, 15h54

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