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 :

Erreur de syntaxe dans une requête SQL


Sujet :

Requêtes et SQL.

  1. #1
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut Erreur de syntaxe dans une requête SQL
    Bonjour,

    J'ai un petit problème de syntaxe dans la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim sSQL As String
    sSQL= "SELECT SPE.speageid, Min(DCount("*","MOD","[modspeid]=" & [speid])) AS iMod " & _
          "FROM CAT INNER JOIN SPE ON CAT.catid = SPE.specatid " _
          "GROUP BY SPE.speageid " _
          "HAVING (((SPE.speageid)="EQU354000500"));"
    La question que je me pose également (c'est peut être l'origine du plantage) : peut-on imbriquer une fonction de regroupement du genre DCount dans une requête SQL ?

    Une idée ?

  2. #2
    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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 354
    Points
    34 354
    Par défaut
    salut,
    j'aurais plutôt cherché directement ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sSQL= "SELECT SPE.speageid, Min(" & DCount("*","MOD","[modspeid]=" & [speid]) &") AS iMod " & _
          "FROM CAT INNER JOIN SPE ON CAT.catid = SPE.specatid " _
          "GROUP BY SPE.speageid " _
          "HAVING (((SPE.speageid)="EQU354000500"));"
    qu te donne le debug.print de ssql d'ailleurs ?

  3. #3
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Re,

    J'ai testé ta proposition, mais j'ai toujours une erreur de syntaxe. J'y ai modifié la fin pour supprimer les guillemets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sSQL= "SELECT SPE.speageid, Min(" & DCount("*","MOD","[modspeid]=" & [speid]) &") AS iMod " & _
          "FROM CAT INNER JOIN SPE ON CAT.catid = SPE.specatid " _
          "GROUP BY SPE.speageid " _
          "HAVING (((SPE.speageid)='EQU354000500'));"
    Par contre désolé je ne sais pas faire un debug.print.

  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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 354
    Points
    34 354
    Par défaut
    dans le code, juste en dessous de sSQL = ... tapes ceci :
    Ca t'affichera la valeur de la chaine dans la fenetre d'execution.

  5. #5
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    C'est ce que j'avais essayé... mais que faut-il faire après : je ne peux pas compiler parce que l'erreur de syntaxe m'en empêche

  6. #6
    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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 354
    Points
    34 354
    Par défaut
    il manque les esperluettes en fin de ligne, avant les underscores

  7. #7
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Oui merci, j'avais remarqué. J'ai même légèrement changé le code comme 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
    Dim sSQL As String
     
    sSQL = "SELECT SPE.speageid, Min(" & DCount("*", "MOD", "[modspeid]=" & [speid]) & ") AS iMod " & _
           "FROM CAT INNER JOIN SPE ON CAT.catid = SPE.specatid " & _
           "GROUP BY SPE.speageid " & _
           "HAVING (((SPE.speageid)='" & Me.ageid & "'));"
     
    Debug.Print sSQL
     
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset(sSQL, dbOpenDynaset)
    Me.Test = oRst.Fields("iMod").Value
    'Libération des objets
    oRst.Close: oDb.Close: Set oRst = Nothing: Set oDb = Nothing
    Maintenant, je peux compiler. J'ai maintenant un message d'erreur
    Erreur d'exécution 2465
    Impossible de trouver le champ | auquel il est fait référence dans votre expression

  8. #8
    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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 354
    Points
    34 354
    Par défaut
    - dans ton dcount, change le parametre attendu (pas de * quoi).
    - enlève les apostrophes pour ton speageid s'il s'agit d'un champs numérique.

  9. #9
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Rien de 9, toujours le même message d'erreur ageid est alphanumérique

    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
    Private Sub Form_Current()
        Dim sSQL As String
     
        sSQL = "SELECT SPE.speageid, Min(" & DCount("[modid]", "MOD", "[modspeid]=" & [speid]) & ") AS iMod " & _
               "FROM CAT INNER JOIN SPE ON CAT.catid = SPE.specatid " & _
               "GROUP BY SPE.speageid " & _
               "HAVING (((SPE.speageid)='" & Me.ageid & "'));"
     
        Debug.Print sSQL
     
        Dim oRst As DAO.Recordset
        Dim oDb As DAO.Database
        Set oDb = CurrentDb
        Set oRst = oDb.OpenRecordset(sSQL, dbOpenDynaset)
        Me.Test = oRst.Fields("iMod").Value
        'Libération des objets
        oRst.Close: oDb.Close: Set oRst = Nothing: Set oDb = Nothing
     
        Me.cboage = Me.ageid        'Affecter à la liste déroulante le nom de l'agent actif
        Me.cboage.SetFocus          'Mettre le focus à la liste déroulante
        If IsNull(Me.agenom) Then
            Me.Caption = "Saisie d'un nouvel agent"
        Else
            Me.Caption = "Fiche de " & PremMajMotsComp(Me.agepre) & " " & Me.agenom
        End If
    End Sub
    Le plantage se situe toujours sur le sSQL

  10. #10
    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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 354
    Points
    34 354
    Par défaut
    ok,
    que te retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox DCount("[modid]", "MOD", "[modspeid]=" & [speid])

  11. #11
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Désolé jpcheck je pense qu'il faut que je revoie ma copie... j'ai l'impression que la requête (crée dans le requêteur) sur laquelle je me suis basé pour écrire ma requête SQL est peut être erronée.

    Embarrassé de t'avoir fait perdre ton temps. Je sens que je vais avoir du boulot à la maison ce soir

  12. #12
    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 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 354
    Points
    34 354
    Par défaut
    vilain va

Discussions similaires

  1. Erreur de syntaxe dans une requête
    Par dark_geek dans le forum ASP
    Réponses: 10
    Dernier message: 28/05/2009, 18h15
  2. Erreur de syntaxe dans une requête
    Par Equinoxe5 dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/04/2009, 13h09
  3. Réponses: 8
    Dernier message: 09/09/2008, 09h28
  4. Erreur de syntaxe dans une requete SQL
    Par fikou dans le forum VB.NET
    Réponses: 5
    Dernier message: 26/07/2007, 17h14
  5. Erreur de syntaxe dans une requête SQL
    Par amnesias dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/01/2007, 12h50

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