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 syntax avec DCount


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Points : 51
    Points
    51
    Par défaut erreur de syntax avec DCount
    Bonjour

    Dans le design, je tape ceci: Expr1: DCount("[nrcourse]";"courses";"Left([départ;1)=""B""")

    et ceci: Expr1: DCount("[nrcourse]";"courses";"Left([départ;1)='B'")

    avec chaque fois la même erreur: erreur de syntax dans l'expression left( ..).

    Tous les champs et tables sont corrects. Le but est de compter le nombre de courses (taxi) effectuées mais seulement quand le point de départ commence avec un 'B'.

    Merci.
    Romeo

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonsoir,
    il manque un crochet fermant ici: Left([départ];1)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Points : 51
    Points
    51
    Par défaut
    Merci pour l'info. J'ai besoin de lunettes.

    Mais ceci me donne encore une faute de syntx: Expr1: DCount("[nrcourse]";"courses";"Left([départ];1)=""B""") (donc avec un point-virgule dans le left)

    Alors j'ai changé en ça: Expr1: DCount("[nrcourse]";"courses";"Left([départ],1)=""B""") (avec une virgule) et ça marche.


    Mais j'ai aussi essayé ceci: a: left([adres],1).

    Donc je rechange la virgule en point-virgule: a: left([adres];1) et ... ça marche.

    Alors, pourquoi dans la 1è formule il faut une virgule dans la fonction left et dans la 2è un point-virgule?

    Y a-t-il une explication?

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonjour,
    Alors, pourquoi dans la 1è formule il faut une virgule dans la fonction left et dans la 2è un point-virgule?
    en effet, il faut une virgule je ne l'ai pas remarqué et j'aurai dû le corriger ...

    Mais j'ai aussi essayé ceci: a: left([adres],1)

    Donc je rechange la virgule en point-virgule: a: left([adres];1) et ... ça marche.
    oui, par ce que dans ce dernier cas on est dans l'environnement de création de requêtes.
    Ce que je peux dire c'est que les interfaces graphiques, comme l'environnement de création de requêtes par exemple, sont des faux amis car ils transforment la syntaxe SQL standard (de langue anglaise) en une pseudo-syntaxe en langue locale mais pas complètement: les paramètres des fonctions de domaine, restent du SQL standard.

    Cela a pour conséquence de semer la confusion comme tu as pu le constater et du coup, on ne sait jamais quand il faut une virgule ou un point virgule ... et au final cela rend moins compréhensible cette "traduction".

    Je rappelle que dans le SQL standard la virgule est le séparateur de valeurs et le point virgule est le délimiteur de fin d'instruction SQL, la seule fois où l'on peut voir plus d'un point virgule dans une instruction SQL c'est lorsque on utilise des paramètres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PARAMETERS quel_numero Long;
    SELECT * FROM matable WHERE (numero=[quel_numero]);
    Et la fonction de domaine est un exemple de cette limite. Pourquoi ? parce que dans une fonction de domaine tout ce qui est entre guillemets n'est jamais traduit comme ci-dessous: en rouge, l'environnement SQL standard, en bleu l'interface de création:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Expr1: CpteDom("[nrcourse]";"courses";"Left([départ],1)=""B""")
    En effet si la traduction était totale, on devrait avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Expr1: CpteDom("[nrcourse]";"courses";"Gauche([départ];1)=""B""")
    or, ce n'est pas le cas puisque l'environnement entre guillemets est du SQL standard, d'où l'utilisation de la fonction non traduite et de la virgule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Expr1: CpteDom("[nrcourse]";"courses";"Left([départ],1)=""B""")
    ce qui donnera dans l'environnement SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dcount("[nrcourse]","courses","Left([départ],1)=""B""") AS Expr1
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Points : 51
    Points
    51
    Par défaut
    Merci pour l'explication.
    R

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

Discussions similaires

  1. [PHP 4] Erreur de syntaxe avec Implode
    Par jmtrivia dans le forum Langage
    Réponses: 2
    Dernier message: 13/05/2009, 18h43
  2. Gestionnaire d'interruptions : erreur de syntaxe avec l'opcode call
    Par Link/DD dans le forum Programmation d'OS
    Réponses: 7
    Dernier message: 23/01/2008, 17h00
  3. [POO] Erreur de syntaxe avec une classe
    Par sirbaldur dans le forum Langage
    Réponses: 5
    Dernier message: 10/01/2007, 13h30
  4. [Conception] Erreur de syntaxe avec un champ de tableau
    Par lodan dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/09/2006, 11h45
  5. Erreur de syntaxe avec UPDATE
    Par tyarak dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/02/2006, 01h18

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