OVH Cloud OVH Cloud

Pb SQL qui marche pas

2 réponses
Avatar
Samuel PICHON
Bonjour,

J'ai un souci avec la clause where de la requête qui suit. J'ai une table
searchparam qui contient des valeurs sur lesquelles je sélectionne les
enregistrements à afficher. 2 dates (from_date et to_date) et un
employee_id.

Mon problème est pour employee_id, s'il faut prendre tous les employés la
valeur est à -1 auquel cas je dois afficher tous les employées (like "*") et
là çà ne marche pas du tout il me retourne aucun enregistrement alors qu'il
devrait y en avoir des centaines. Par contre tout marche quand un employé
spécifique est sélectionné.

Donc le problème vient du like "*" car le test du -1 marche.

Donc probablement la manière de l'écrire, mais je trouve pas la soluce.

Merci pour votre aide,

Sam



SELECT DISTINCTROW employees.[employee id], [labor record].date, [labor
record].id, [labor record].locked, employees.name, employees.Dept
FROM param INNER JOIN (employees INNER JOIN [labor record] ON
employees.[employee id] = [labor record].[employee id]) ON param.USERDPT =
employees.Dept
WHERE (((employees.[employee
id])=IIf(DLookUp("employee_id","searchparam")="-1",([employees].[employee
id]) Like "*",DLookUp("employee_id","searchparam"))) AND (([labor
record].date)>=DLookUp("from_date","searchparam") And ([labor
record].date)<=DLookUp("to_date","searchparam")) AND (([labor
record].locked)=No))
ORDER BY [labor record].date DESC
WITH OWNERACCESS OPTION;

2 réponses

Avatar
Laurent DUB
Bonjour, Peut etre une piste car j'ai eu le même pb

Remplacer = par like
WHERE (((employees.[employee
id])=IIf(DLookUp("employee_id","searchparam")="-1",([employees].[employee
.....
donne
WHERE (((employees.[employee
id]) like
IIf(DLookUp("employee_id","searchparam")="-1",([employees].[employee ...
cordialement
Lrd
Avatar
ze_titi
Bonjour,

je pense que le problème vient du fait qu'en cas de "LIKE *", on a dans la
clause WHERE la formulation suivante : ....[employee id])=LIKE "*".... ce qui
induit une erreur.
A la place du "=", je pense que tu devrais utiliser directement l'opérateur
LIKE.

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour,

J'ai un souci avec la clause where de la requête qui suit. J'ai une table
searchparam qui contient des valeurs sur lesquelles je sélectionne les
enregistrements à afficher. 2 dates (from_date et to_date) et un
employee_id.

Mon problème est pour employee_id, s'il faut prendre tous les employés la
valeur est à -1 auquel cas je dois afficher tous les employées (like "*") et
là çà ne marche pas du tout il me retourne aucun enregistrement alors qu'il
devrait y en avoir des centaines. Par contre tout marche quand un employé
spécifique est sélectionné.

Donc le problème vient du like "*" car le test du -1 marche.

Donc probablement la manière de l'écrire, mais je trouve pas la soluce.

Merci pour votre aide,

Sam



SELECT DISTINCTROW employees.[employee id], [labor record].date, [labor
record].id, [labor record].locked, employees.name, employees.Dept
FROM param INNER JOIN (employees INNER JOIN [labor record] ON
employees.[employee id] = [labor record].[employee id]) ON param.USERDPT =
employees.Dept
WHERE (((employees.[employee
id])=IIf(DLookUp("employee_id","searchparam")="-1",([employees].[employee
id]) Like "*",DLookUp("employee_id","searchparam"))) AND (([labor
record].date)>=DLookUp("from_date","searchparam") And ([labor
record].date)<=DLookUp("to_date","searchparam")) AND (([labor
record].locked)=No))
ORDER BY [labor record].date DESC
WITH OWNERACCESS OPTION;