Dans mon environnement ça plante dès lors que j'entre une valeur pour le paramètre "invité". Par contre, je n'ai pas de problème si j'entre une date sans nom. Mais donc je ne peux toujours pas utiliser les versions de JRE supérieures à la 6.17.

Petite remarque en passant : J'ai vu que tu as testé toutes les combinaisons des valeurs des deux paramètres mais en fait la requête est prévue pour que l'on entre une valeur pour l'un OU l'autre des deux paramètres : WHERE menu ... AND (date ... OR nom ...). L'utilisateur sait qu'il doit entrer un nom (incomplet éventuellement, je lui ais appris l'utilisation du %) OU une date.

Je me penche sur la clause ORDER BY. Je voulais présenter le résultat trié par date en descendant. Je viens de me rendre compte que : 1) le résultat n'est pas bon (l'utilisateur ne m'avait rien dit :-)) Je pensais m'être trompé en utilisant "quand" au lieu de "date_reception" mais la modif n'a rien changé. Il va falloir que je vois ce qui ne va pas. 2) la décomposition de la date avec les SUBSTR n'est pas utile. Quand j'ai écrit la requête (ça fait un bout de temps !) j'avais du penser que pour avoir un tri correct il fallait le faire selon le format aa/mm/jj (et donc que cela nécessitait d'inverser les dates qui sont saisies par l'utilisateur sous la forme jj/mm/aa) Mais comme l'algorithme de tri des SGBD utilise (si je me souviens bien) le format interne, inverser la date n'est pas très utile.

A+
Bernard

Le 11/05/2010 19:07, Docgranville a écrit :
Le 11/05/2010 18:24, ribotb a écrit :
Salut Stéphane,

Ci-joint la requête qui ne fonctionne plus depuis JRE (avec les deux tables qui vont avec).

En travaillant sur une autre base de données je me suis aperçu qu'une requête mono-table mono-paramètre fonctionnait. Celle qui me pose problème est multi-tables (2) multi-paramètres (2), avec en plus des SUBSTR et des concaténations qu'on ne trouve pas dans l'autre, beaucoup plus simple. Il faudrait un peu de temps pour essayer de savoir ce qui gêne JRE depuis la 6.18 : le multi-tables, le multi-param, le SUBSTR, la concaténation, une combinaison de deux ou plus de ces particularités ?

Bernard

PS : pour le cas où la pièce jointe ne passerait pas voici les 2 requêtes :

SELECT DISTINCT "invitations"."invité" AS "invité", "invitations"."date_réception" AS "quand", "menus"."commentaires", "invitations"."menu", ( "menus"."entrée" || ' / ' || "menus"."poisson" || ' / ' || "menus"."viande" || ' / ' || "menus"."dessert" ) AS "composition" FROM "invitations", "menus" WHERE ( "menus"."id_menu" = "invitations"."menu" AND ( "invitations"."invité" LIKE :invité OR "invitations"."date_réception" = :quand ) ) ORDER BY SUBSTR( "quand", 5, 4 ) || SUBSTR( "quand", 3, 2 ) || SUBSTR( "quand", 1, 2 ) DESC

SELECT "ID_Dest", "email" AS "e-mail", "site", "metier" AS "métier", "mailing", "num_tel" AS "téléphone", "raison_sociale" AS "raison sociale", "num_fax" AS "fax", "prospect", "reponse", "contact" FROM "destinataires" AS "destinataires" WHERE "metier" LIKE :metier ORDER BY "raison_sociale" ASC

Bonsoir Bernard,

Bon, je viens de regarder ta requête (celle qui est passée, la première, à base de Invitations et Menus) ; elle fonctionne pas mal du tout.

En fait, le truc qui lui fait renvoyer une erreur, c'est lorsque l'on n'indique rien dans le paramètre "Invité" ; si on indique un prénom valable et rien en date, ça renvoie un résultat cohérent ; si on indique un prénom valable et une date (contenue ou non dans la table) ça renvoie aussi un résultat cohérent ; si on renvoie un prénom "non valable" (ne correspondant pas à l'un des prénoms contenus dans la table) et une date contenue dans la table, on obtient là encore un résultat cohérent ; enfin, si on indique un prénom "non valable" et une date non contenue dans la table, on obtient un résultat vierge mais pas un message d'erreur (ce qui est parfaitement normal).

Malheureusement, je ne peux pas tester avec les JRE précédents, puisque visiblement, les JRE se suppriment les uns les autres ; donc, ce que j'ai décrit ci-dessus est le comportement avec JRE 1.6.0_20 (et XP SP3, je le rappelle).

Sinon, j'ai une question également ; à quoi te sert toute la partie [SUBSTR( "quand", 5, 4 ) || SUBSTR( "quand", 3, 2 ) || SUBSTR( "quand", 1, 2 ) DESC] et plus particulièrement les SUBSTR ? Un [ORDER BY "quand" ASC] ne produirait-il pas exactement le même résultat (ou quelque chose m'aurait échappé) ?

A+



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org

Répondre à