1. #1
    Membre à l'essai
    Femme Profil pro
    Alternant
    Inscrit en
    octobre 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2016
    Messages : 34
    Points : 18
    Points
    18

    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
    17 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2006
    Messages : 17 270
    Points : 126 380
    Points
    126 380

    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 !
    Si vos yeux piquent à cause des fautes d'orthographe, c'est un don que vous pouvez exploiter en cliquant ici.

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

  3. #3
    Membre à l'essai
    Femme Profil pro
    Alternant
    Inscrit en
    octobre 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2016
    Messages : 34
    Points : 18
    Points
    18

    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
    Consultant technique et formateur en recherche active pour le Canada
    Inscrit en
    juillet 2007
    Messages
    11 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant technique et formateur en recherche active pour le Canada
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 11 228
    Points : 24 775
    Points
    24 775

    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*'));"
    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016

    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
    17 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2006
    Messages : 17 270
    Points : 126 380
    Points
    126 380

    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*'));"
    Si vos yeux piquent à cause des fautes d'orthographe, c'est un don que vous pouvez exploiter en cliquant ici.

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

  6. #6
    Membre à l'essai
    Femme Profil pro
    Alternant
    Inscrit en
    octobre 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2016
    Messages : 34
    Points : 18
    Points
    18

    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
    17 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2006
    Messages : 17 270
    Points : 126 380
    Points
    126 380

    Par défaut

    ... mais pourtant :

    Si vos yeux piquent à cause des fautes d'orthographe, c'est un don que vous pouvez exploiter en cliquant ici.

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

  8. #8
    Membre à l'essai
    Femme Profil pro
    Alternant
    Inscrit en
    octobre 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2016
    Messages : 34
    Points : 18
    Points
    18

    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
    17 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2006
    Messages : 17 270
    Points : 126 380
    Points
    126 380

    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
    Si vos yeux piquent à cause des fautes d'orthographe, c'est un don que vous pouvez exploiter en cliquant ici.

    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
    17 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

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

    Informations forums :
    Inscription : novembre 2006
    Messages : 17 270
    Points : 126 380
    Points
    126 380

    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
    Si vos yeux piquent à cause des fautes d'orthographe, c'est un don que vous pouvez exploiter en cliquant ici.

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

  11. #11
    Membre à l'essai
    Femme Profil pro
    Alternant
    Inscrit en
    octobre 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2016
    Messages : 34
    Points : 18
    Points
    18

    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