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

Requêtes et SQL. Discussion :

Syntaxe requete et erreur 3061 [AC-2016]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 488
    Points : 125
    Points
    125
    Par défaut Syntaxe requete et erreur 3061
    Bonjour à Tous,

    Je suis vraiment fâché avec les requêtes en VBA, je pensais avoir bien écris les deux ci-dessous et bien non!

    j'ai l'erreur 3061 "trop peu de paramètre"
    Quand j'en mets ça ne va pas, quand j'en retire il n'y en a pas assez et l'aide Microsoft n'aide pas

    Et comme par hasard, l'outil que je suis en train de créer va être conçu avec beaucoup de requêtes.

    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
    26
    27
    28
    29
    Dim qry As DAO.QueryDef
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
        Dim rst1 As DAO.Recordset
        Dim sSQL As String
        Dim sSQL1 As String
        Dim Vdate_debut As Variant
        Dim Vdate_date_fin As Variant
     
        Vdate_debut = txt_date_debut.Value
        Vdate_date_fin = txt_date_fin.Value
     
    'requete de selection des destinataires
     
    sSQL = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = dest) AND T_adresse_mail.type_liste Like '*" & "Plhebdo" & "*';"
     
    'requete de selection des copies
     
    sSQL1 = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = copie) AND T_adresse_mail.type_liste Like '*" & "Plhebdo" & "*';"
     
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(sSQL, dbOpenSnapshot)
    Set rst1 = dbs.OpenRecordset(sSQL1, dbOpenSnapshot)
    ...suite du code
    j'ai tenté cela aussi mais toujours erreur 3061

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'requete de selection des destinataires
     
    sSQL = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = dest) AND (T_adresse_mail.type_liste Like '*" & "Plhebdo" & "*');"
     
    'requete de selection des copies
     
    sSQL1 = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = copie) AND (T_adresse_mail.type_liste Like '*" & "Plhebdo" & "*');"
    je vous remercie pour votre aide et vous souhaite une Belle journée

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Bonjour,

    Le but est de créer une chaine de caractères qui va faire la requete finale, les variables ne doivent donc pas être entre ""

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    sSQL = "SELECT T_adresse_mail.mail  FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = dest) AND T_adresse_mail.type_liste Like '*" & Plhebdo & "*';"
     
    msgbox ssql  'code pour vérif
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(sSQL, dbOpenSnapshot)
    En standard SQL, le joker est % donc selon le type de base il faut éventuellement remplacer * par %

  3. #3
    Membre habitué Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 488
    Points : 125
    Points
    125
    Par défaut
    merci nico84,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sSQL = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " (WHERE T_adresse_mail.type_envoi = dest) AND T_adresse_mail.type_liste Like '%" & "Plhebdo" & "%';"
     
    'requete de selection des copies
     
    sSQL1 = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " (WHERE T_adresse_mail.type_envoi = copie) AND T_adresse_mail.type_liste Like '%" & "Plhebdo" & "%';"
    j'ai remplacé les * mais rien

    dest et Plhebdo ne sont pas des variables mais du texte à trouver dans les champs.

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Citation Envoyé par mgascult Voir le message
    dest et Plhebdo ne sont pas des variables mais du texte à trouver dans les champs.
    oui une variable ou un champ c'est pareil, d'où ma correction dans mon post précédent
    Si la base est access c'est bien * le joker

  5. #5
    Membre habitué Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 488
    Points : 125
    Points
    125
    Par défaut
    j'ai remodifié mais toujours erreur 3061

    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
    26
    27
    28
    29
    'déclaration des variable
        Dim qry As DAO.QueryDef
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
        Dim rst1 As DAO.Recordset
        Dim sSQL As String
        Dim sSQL1 As String
        Dim Vdate_debut As Variant
        Dim Vdate_date_fin As Variant
     
        Vdate_debut = txt_date_debut.Value
        Vdate_date_fin = txt_date_fin.Value
     
    'requete de selection des destinataires
     
    sSQL = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = dest) AND T_adresse_mail.type_liste Like '*" & "Plhebdo" & "*';"
     
    'requete de selection des copies
     
    sSQL1 = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = copie) AND T_adresse_mail.type_liste Like '*" & "Plhebdo" & "*';"
     
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset(sSQL, dbOpenSnapshot)
    Set rst1 = dbs.OpenRecordset(sSQL1, dbOpenSnapshot)

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 262
    Points : 12 936
    Points
    12 936
    Par défaut
    Bonjour,
    Telles qu'elles sont écrites, tes requêtes sont équivalentes à ceci:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T_adresse_mail.mail
    FROM T_adresse_mail
    (WHERE T_adresse_mail.type_envoi = dest) AND T_adresse_mail.type_liste Like '%Plhebdo'
    Donc ici dest est une colonne de la table, et Plhebdo est la valeur cherchée dans la colonne T_adresse_mail.type_liste.

    Est-ce vraiment ce que tu veux faire ? Perso j'ai quelques doutes...
    Si dest est bien une chaîne, il faut l'entourer avec des simples quotes:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T_adresse_mail.mail
    FROM T_adresse_mail
    (WHERE T_adresse_mail.type_envoi = 'dest') AND T_adresse_mail.type_liste Like '%Plhebdo'
    Et le code devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sSQL = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = 'dest') AND T_adresse_mail.type_liste Like '*Plhebdo*';"
    Tatayo.

  7. #7
    Membre habitué Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 488
    Points : 125
    Points
    125
    Par défaut
    merci tatayo,

    Dest et Plhebdo son bien des valeurs recherchées.
    et du coup cela fonctionne bien comme ça.

    Ce que je n'arrive pas aussi à comprendre c'est quand mettre une simple cote ou une double cote?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sSQL = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = 'dest') AND T_adresse_mail.type_liste Like '*Plhebdo*';"
     
     
    'requete de selection des copies
     
    sSQL1 = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = 'copie') AND T_adresse_mail.type_liste Like '*Plhebdo*';"

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 262
    Points : 12 936
    Points
    12 936
    Par défaut
    C'est tout simple:
    • La simple cote permet de délimiter une chaîne de caractère au sein d'une requête SQL.
    • La double cote permet de délimiter une chaîne dans le code.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sSQL = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = 'dest') AND T_adresse_mail.type_liste Like '*" & Plhebdo & "*';"
    Ici j'ai utilisé des doubles cotes, donc c'est le contenu de Plhebdo qui est mis dans le texte de la requête. Donc si plhebdo contient par exemple la chaîne ABC, la requête devient:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T_adresse_mail.mail
     FROM T_adresse_mail
      WHERE (T_adresse_mail.type_envoi = 'dest') AND T_adresse_mail.type_liste Like '*ABC*';

    Mais si je garde des simples cotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sSQL = "SELECT T_adresse_mail.mail" & _
            " FROM T_adresse_mail" & _
            " WHERE (T_adresse_mail.type_envoi = 'dest') AND T_adresse_mail.type_liste Like '*Plhebdo*';"
    La requête sera celle ci:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sSQL = "SELECT T_adresse_mail.mail
     FROM T_adresse_mail
     WHERE (T_adresse_mail.type_envoi = 'dest') AND T_adresse_mail.type_liste Like '*Plhebdo*';

    Donc entre simple cote si tu veux mettre la chaîne, et double cote si tu veux le contenu d'une variable (ou d'un champ de saisie…).

    Tatayo.

  9. #9
    Membre habitué Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 488
    Points : 125
    Points
    125
    Par défaut
    merci Tatayo 🙏
    Je me note celà

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

Discussions similaires

  1. [SQL] Requête SQL erreur de syntaxe
    Par helopme_69 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 05/01/2008, 21h51
  2. [Requête/SQL]Erreur Syntaxe Access
    Par LAETIAZ dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/04/2007, 12h29
  3. VBA-Excel Erreur dans syntaxe requete en utilisant ADO
    Par rafnt dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2006, 14h23
  4. erreur de syntaxe requete mysql
    Par LaFik dans le forum Débuter
    Réponses: 1
    Dernier message: 18/09/2006, 14h23
  5. Erreur 3061 - pb syntaxe?
    Par SylvainJ dans le forum Access
    Réponses: 3
    Dernier message: 13/07/2006, 14h14

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