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:
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:
Expr1: CpteDom("[nrcourse]";"courses";"Left([départ],1)=""B""")
En effet si la traduction était totale, on devrait avoir:
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:
Expr1: CpteDom("[nrcourse]";"courses";"Left([départ],1)=""B""")
ce qui donnera dans l'environnement SQL:
Dcount("[nrcourse]","courses","Left([départ],1)=""B""") AS Expr1
Partager