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 :

Analyse croisée SQL : erreur de syntaxe (opérateur absent) [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2014
    Messages : 50
    Points : 35
    Points
    35
    Par défaut Analyse croisée SQL : erreur de syntaxe (opérateur absent)
    Bonjour,

    Quand je sélectionne une personne dans la combobox "CboPersonne", j'exécute une requête qui donne le nombre de prêt de cette personne, par mois sur les 12 derniers mois.
    Je me suis donc inspiré de ce tutoriel.

    Cependant, je bute sur l'erreur suivante:

    Erreur d'exécution '3075':
    Erreur de syntaxe (opérateur absent) dans l'expression <<(((Thistorique.Personne)= ... <13))>>

    Mon code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Sql As String
     
    Sql = "TRANSFORM Count(Thistorique.Pret) AS CompteDePret"
    Sql = Sql & " SELECT MonthName(Month([DatePret])) AS Mois"
    Sql = Sql & " FROM Thistorique"
    Sql = Sql & " WHERE (((Thistorique.Personne) = " & Me.CboPersonne & ") And ((DateDiff(" & "m" & "; #[DatePret]#; #Date()#)) < 13))"
    Sql = Sql & " GROUP BY MonthName(Month([DatePret])), DateDiff(" & "m" & ";[DatePret];Date())"
    Sql = Sql & " ORDER BY DateDiff(" & "m" & ";[DatePret];Date()) DESC"
    Sql = Sql & " PIVOT Thistorique.Personne;"
    Quelqu'un aurait-il une suggestion?

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    J'écrirais (en enlevant les parenthèses dans la clause Where) :
    Dim Sql As String

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sql = "TRANSFORM Count(Thistorique.Pret) AS CompteDePret"
    Sql = Sql & " SELECT MonthName(Month([DatePret])) AS Mois"
    Sql = Sql & " FROM Thistorique"
    Sql = Sql & " WHERE Thistorique.Personne = " & Me.CboPersonne & " And DateDiff('m',[DatePret], Date()) < 13"
    Sql = Sql & " GROUP BY MonthName(Month([DatePret])), DateDiff('m',[DatePret],Date())"
    Sql = Sql & " ORDER BY DateDiff('m',[DatePret],Date()) DESC"
    Sql = Sql & " PIVOT Thistorique.Personne;"
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2014
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    Après enlevé les parenthèses dans la clause Where (Sauf pour les DateDiff) et modifier la syntaxe 'm', j'ai toujours le message d'erreur.

    Une autre idée?

    Il faut aussi savoir que la cboPersonne renvoie : L'espace entre le nom et le prénom peut-il être à l'origine de cette erreur?

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour lptht, madefemere,

    Je suis un peu surpris du message d'erreur, est-ce que Me.CboPersonne te retourne bien quelque chose? Parce que la syntaxe n'est pas bonne tu devrais avoir une erreur de compatibilité. Ton champ est texte donc tu devrais avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Thistorique.Personne = " &  chr(34) & Me.CboPersonne & chr(34) & " And DateDiff('m',[DatePret], Date()) < 13"
    Les valeurs textes doivent être encadré par des ", ce que fait le chr(34).

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2014
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    Yes, super ça marche! Merci beaucoup Robert1957!

    Maintenant, si je veux remplacer la valeur de ma combobox par "Jacques", suffit-il de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Thistorique.Personne = " &  "Jacques" & " And DateDiff('m',[DatePret], Date()) < 13"
    Et d'une manière général, existe-t-il un tuto clair sur ce type de questions?

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Trois tuto qui te permettrait d'avancer :
    - Tuto sur bases VBA de Maxenxe Hubiche
    - Tuto de Cafeine pour apprendre à déboguer en VBA
    - Tuto de LedZeppII sur intégration instruction SQL en VBA.

    Si ton problème est résolu, pense à le mettre en RESOLU.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/05/2008, 13h31
  2. Réponses: 3
    Dernier message: 22/12/2007, 14h06
  3. erreur de syntaxe (opérateur absent)
    Par rcan7412 dans le forum Access
    Réponses: 1
    Dernier message: 28/03/2007, 17h52
  4. [Erreur de syntaxe (opérateur absent)] requête select
    Par wiss20000 dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 19/03/2007, 14h55
  5. PHP SQL =>erreur de syntaxe (operateur absent)
    Par snipes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 14h09

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