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 :

Erreur Requete SQL dans VBA


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Alternant
    Inscrit en
    Octobre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 64
    Points : 34
    Points
    34
    Par défaut Erreur Requete SQL dans VBA
    Bonjour à tous,

    Je cherhe a compter les nombre d'enregistrement selon un critère. Mais j'ai un problème dans la ligne de mon code ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     str_SQL = "SELECT Count (*)  FROM bd WHERE  (((bd.[Retour Emetteur]) Like " * OK * "));"
    J'ai un message d'erreur type 13: Incompatibilité de type

    Pourtant je pense avoir bien référencé vba

    quelqu'un aurait une idée d'où peut venir le problème ?

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Quel est le type de données que contient la colonne [Retour Emetteur] de ta table ?

    Ce n'est sans doute pas du texte !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Alternant
    Inscrit en
    Octobre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 64
    Points : 34
    Points
    34
    Par défaut
    elles sont bien de type Texte

    Mais le colonne contient des phrases avec le signe: "/" . Du genre: KO/en attente

    Je doit changer le format de ma colonne? Ou bien l'écriture de ma requete SQL dans VBA?

  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 594
    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 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Salut,

    pour le type texte, utilises des apostrophes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_SQL = "SELECT Count (*)  FROM bd WHERE  (((bd.[Retour Emetteur]) Like '*OK*'));"
    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
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Écris plutôt comme ceci (des espaces sont de trop et les quotes sont mal équilibrés !) :

    str_SQL = "SELECT bd.[Retour Emetteur] FROM bd WHERE (((bd.[Retour Emetteur]) Like '*OK*'));"
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Alternant
    Inscrit en
    Octobre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 64
    Points : 34
    Points
    34
    Par défaut
    J'ai essayer vos deux réponses

    Mais j'ai un méssage d'erreur 3061: trop peu de paramètre. 1 attendu.

    :/ peut etre qu'il faut une paranthèse en plus

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    ... mais pourtant :

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Alternant
    Inscrit en
    Octobre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 64
    Points : 34
    Points
    34
    Par défaut
    Oui chez moi aussi ça marche sur SQL. Mais sur VBA ca veut pas
    Je vais refaire le code peut etre que je fais une erreur sans m'en rendre compte

    Au passage voici Mon code complet:

    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
    30
    31
     
    Sub Nombre2()
     
    Dim oRst2 As DAO.Recordset
     
    Dim fld As DAO.Field
    Dim oRst3 As DAO.Recordset
     
    Set oDb = CurrentDb
     
    Set oRst2 = oDb.OpenRecordset("bd", dbOpenTable)
     
     
      str_SQL = "SELECT Count(*)FROM bd WHERE(((bd.[Retour_Emetteur])Like'*OK/Position Soldée*'));"
     
     
     
        int_Count = CurrentDb.OpenRecordset(str_SQL).Fields("Retour_Emetteur").Value
     
     
        Set oRst3 = oDb.OpenRecordset("Table1", dbOpenTable)
     
        oRst3.Edit
     
        oRst3.Fields("Nombre2").Value = int_Count  
     
        oRst3.Update
     
        oRst3.MoveNext
     
    End Sub
    Merci pour votre aide

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Quel code compliqué !

    Si je comprends : tu veux inscrire dans Table1.Nombre2, le nombre d'occurrences de « OK/Position soldée » qui se trouvent dans la table bd.

    Une requête MàJ ferait l'affaire...


    SQL de la requête

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Table1 SET Table1.Nombre2 = DCount("*","bd","[Retour Emetteur] like '*OK/Position Soldée*'");

    Et la sub :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
    Option Explicit
     
     
    Public Sub Nombre2()
      DoCmd.SetWarnings False
      DoCmd.OpenQuery "rMaJTable1"
      DoCmd.SetWarnings True
    End Sub
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Et si tu veux éviter d'enregistrer la requête, tu peux la créer à la volée :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Compare Database
    Option Explicit
     
     
     
    Public Sub Nombre2()
      DoCmd.SetWarnings False
      DoCmd.RunSQL "UPDATE Table1 SET Table1.Nombre2 = " _
                     & "DCount(""*"",""bd"",""[Retour Emetteur] like '*OK/Position Soldée*'"");"
      DoCmd.SetWarnings True
    End Sub
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Alternant
    Inscrit en
    Octobre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 64
    Points : 34
    Points
    34
    Par défaut
    Parfait ça marche très bien

    Merci de votre patience. Et de m'avoir fait découvrir cette requête

    Très bonne journée

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

Discussions similaires

  1. probleme requete SQL dans VBA
    Par sylvmand dans le forum VBA Access
    Réponses: 5
    Dernier message: 08/03/2012, 14h17
  2. [AC-2007] Agregation requete SQL dans VBA avec combobox
    Par kimai dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/03/2011, 04h23
  3. erreur requete SQL dans une JSP
    Par shada dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 25/08/2008, 14h57
  4. erreur requete SQL dans un listBox
    Par Namson dans le forum VB.NET
    Réponses: 4
    Dernier message: 24/04/2008, 15h06
  5. compter avec une requete SQL dans VBA
    Par michael1971 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/01/2008, 09h20

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