|
HOWTO développement Sashipa
ResearchForm avancé : Rechercher le contenu d'un champ dans plusieurs colonnes.Vous avez un formulaire de recherche qui contient deux champs pour deux colonnes de la table de recherche, mais vous souhaitez qu'il n'y ait qu'un seul champ pour saisir et que la valeur saisie soit recherchée dans les deux colonnes.
Comment fairePrenons le cas de la table Contact de la base DemoContact : on souhaite rechercher à la fois dans ContactNom et dans ContactPrenom la valeur saisie dans un champ. Voici le code :
Explication : tout d'abord on donne un nom au champ sur lequel on va travailler : ici fieldNomPrenom. La logique du formulaire de recherche est contenue dans l'élément researchFormCriteriaBuilder, qui crée des critères de recherche par défaut si l'on ne spécifie rien. Mais ici on rajoute deux éléments :
Dans notre cas on exclue le champ fieldNomPrenom de la génération automatique de critère de recherche. Puis on définit un criteriaBuilder qui séparera ses sous-critères par un OU logique (mode='or'). On crée deux sous-critères de type researchCriteria. Le premier va rechercher le contenu du champ fieldNomPrenom dans la colonne cta_ContactNom. Le deuxième va rechercher le contenu de ce même champ dans la colonne cta_ContactPrenom. Note concernant la déclaration du textField fieldNomPrenom : ce champ n'est pas lié à la colonne cta_ContactNom, pas plus qu'à cta_ContactPrenom. Néammoins, on spécifie tout de même un élément schemaColumnRef : schemaColumn='cta_ContactNom'. Cette déclaration ne sert qu'à donner au champ le type de donnée qu'il doit gérer. On peut donc lui donner indifféremment l'une ou l'autre des colonnes manipulées.
Comment ça marchePour info, voici comment ça fonctionne : L'élément researchFormCriteriaBuilder crée un criteriaBuilder qui englobe celui créé éventuellement manuellement, et ceux créés par défaut pour les champs non exclus. Il ne lui reste alors qu'à ajouter ce criteriaBuilder à la requête du listForm (ou listFormRef) résultat.
Info pratiqueSi vous souhaitez vous assurer que la requête générée est la bonne, vous pouvez spécifier un fichier journal pour vos requêtes SELECT :
Toute requête SELECT exécutée sera alors tracée dans le fichier Melba_Select.log . Dans votre application, faite une recherche. Ensuite, éditez ce fichier et vous retrouverez votre requête en fin de fichier. © Copyright 2003 Sashipa-Melba Team. Ce document de la technologie Sashipa-Melba est sous licence GNU FDL Vous pouvez le copier et modifier librement les copies tant que cette mention apparaît clairement. |