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 :

Requête SQL, "executersql necessite un argument "


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut Requête SQL, "executersql necessite un argument "
    Bonjour à tous,

    J'ai utilisé la fonction recherche en vain ....

    Je réalise une requête SQL des plus simples .... Et j'ai une erreur, j'avou ne pas comprendre.

    J'ai beau lire et re-lire ma requête je n'y vois pas d'erreur.

    Voici mon code :

    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
    Option Compare Database
     
    Private Sub cmd_ok_Click()
    Dim var1 As String
     
    var1 = [Form_F_account]![n_compte]
     
    MsgBox var1
     
    DoCmd.RunSQL ("SELECT [FAC_Interface].Accoount, FAC_Magnitude.ACCDesignationF " _
                & "FROM [FAC_Interface], [FAC_Magnitude] " _
                & "WHERE [FAC_Interface].Compte_Magnitude = FAC_Magnitude.ACC " _
                & "AND ((([FAC_Interface].Accoount) LIKE '%" & var1 & "%'));")
     
     
     
    End Sub
    Et j'ai l'erreur suivante :
    " Une action ExécuterSQL nécessite un argument consistant en une instruction SQL"

    Merci d'avance ....

    Cordialement,

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 186
    Par défaut
    * Bonjour *

    F1 sur RunSQL :
    instructionSQL Variant requis. Expression chaîne qui correspond à une instruction SQL valide pour une requête action ou une requête définition des données. Elle utilise une instruction INSERT INTO, DELETE, SELECT...INTO, UPDATE, CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX ou DROP INDEX. Insérez une clause IN pour accéder à une autre base de données.
    Bref, c'est pas comme ça qu'il faut faire pour récupérer les données d'un select.
    [Access] Les bases du débogage => ici

  3. #3
    Membre expérimenté
    Inscrit en
    Juin 2010
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 150
    Par défaut
    Bonjour,

    La commande DoCmd.RunSql ne fonctionne que pour les INSERT, DELETE et UPDATE.

    Pour le SELECT, il faut procéder comme suit:
    Code vba : 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
    19
    20
     
    Dim db As database
    Dim sql As String
    Dim rs AS Recordset
     
    Set db = Application.CurrentDb
          sql = "SELECT [FAC_Interface].Accoount, FAC_Magnitude.ACCDesignationF " _
                & "FROM [FAC_Interface], [FAC_Magnitude] " _
                & "WHERE [FAC_Interface].Compte_Magnitude = FAC_Magnitude.ACC " _
                & "AND ((([FAC_Interface].Accoount) LIKE '%" & var1 & "%'));"
     
        Set rs = db.OpenRecordset(sql, dbOpenForwardOnly, dbReadOnly)
     
    Do While Not rs.EOF
          'retrourne le 1er champ
            rs.Fields(0)
          'retrourne le 2ème champ
            rs.Fields(1)
            rs.MoveNext
    Loop

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    attention merryvor, il manque l'attribution a ta variable RS
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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 confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut
    En effet, son script ne fonctionnait pas

    J'ai procédé de la manière qui suit :

    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
    19
    20
    21
    22
    23
    24
    25
    Dim taBdd As Database
    Dim strSQL As String
    Dim rst As DAO.Recordset
    Dim monTableau() As String
    Dim i As Integer
     
     
    strSQL = "SELECT [FAC_Interface].Accoount, FAC_Magnitude.ACCDesignationF " _
                & "FROM [FAC_Interface], [FAC_Magnitude] " _
                & "WHERE [FAC_Interface].Compte_Magnitude = FAC_Magnitude.ACC " _
                & "AND ((([FAC_Interface].Accoount) LIKE '%" & var1 & "%'));"
    Set Db = Application.CurrentDb
     
    Set rst = Db.OpenRecordset(strSQL)
     
     
    i = 0
    ReDim monTableau(rst.RecordCount, 2)
     
    Do While Not rst.EOF
             monTableau(i, 1) = rst.Fields("[FAC_Interface].Accoount")
            monTableau(i, 2) = rst.Fields("FAC_Magnitude.ACCDesignationF")
              rst.MoveNext
             i = i + 1
    Loop
    Je cherche maintenant à avoir une table qui soit le reflet de mon recordset.

    Cordialement,

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut
    Citation Envoyé par Kloun Voir le message
    F1 sur RunSQL :

    Bref, c'est pas comme ça qu'il faut faire pour récupérer les données d'un select.

    J'ai utilisé la fonction F1 et je me suis dit que les " ... " étaient une erreur.

    Merci pour ta réponse Merryvor !

    Je vais regarder ça de ce pas !

    Cordialement,

Discussions similaires

  1. [Toutes versions] Requête SQL avec Simples et Doubles Quotes
    Par Roums dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/03/2010, 10h00
  2. Java requête SQL quote antislash
    Par ritchie23 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 01/10/2008, 16h50
  3. Réponses: 12
    Dernier message: 30/07/2008, 10h59
  4. [Requête/SQL]Pb de "quote" avec un type memo
    Par Tintou dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 26/04/2007, 15h47
  5. sql dynamic : passage de parametre entre quotes
    Par de LANFRANCHI dans le forum SQL
    Réponses: 12
    Dernier message: 26/05/2004, 15h09

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