File Maker Pro Les Requêtes I. Introduction Dans FileMaker pro l'interface proposée pour les requêtes est simple: les requêtes se font dans les mêmes formulaires (modèles) que ceux qu'on utilise pour entrer des données. C'est dans ces modèles que vous avez été entré vos données pour tester vos options de contrôle et d'entrée automatique. II. Requêtes rapides Il est possible de faire une recherche rapide d enregistrements en mode Utilisation (le mode d ouverture par défaut de la base de données). Après l ouverture de la base de données "livres.fmp12" jointe à ce document, saisissez le mot que vous voulez chercher dans la zone de texte de la recherche rapide qui se trouve dans l angle supérieur droit de la barre d outils. Après validation, la barre d outils ressemblera à ça: Toujours en mode Utilisation, il est possible de faire une recherche d enregistrements à l aide de critères spécifiés dans une seule rubrique Cliquez sur le bouton Afficher tout dans la barre d outils pour restaurer tous les enregistrements du jeu trouvé. Cliquez sur une rubrique quelconque avec le bouton droit de la souris. Dans le menu contextuel, choisissez Rechercher les enregistrements correspondants. Page 1 sur 17
Dans les deux précédents exemples, une fois la recherche lancée, vous revenez au mode "Utilisation", mais au lieu de voir tous les enregistrements de la table, vous ne voyez que ceux qui correspondent à vos critères -- les autres sont "ignorés", c'est-à-dire qu'ils continuent d'exister dans la table, mais ne sont pas visibles. III. Créer une requête Pour faire des requêtes complexes il faut passer en mode Recherche de la base de données. Pour ce faire, il suffit de choisir, dans le menu en bas à gauche, "Recherche". Choisissez ensuite la table dans laquelle chercher (en fait, le modèle dans lequel faire votre recherche, mais pour l'instant un modèle correspond à une table), dans la liste déroulante juste en dessus. Le Modèle (Table) Mode Recherche Vous pourrez ensuite simplement entrer un ou plusieurs critères dans les champs voulus et appuyer sur le bouton "Exécuter la requête" pour lancer la recherche. Une fois la requête lancée, vous revenez au mode "Utilisation", mais vous ne voyez que ceux qui correspondent à vos critères. Page 2 sur 17
On peut naviguer à travers les enregistrements trouvés de la même façon que d'habitude, et on peut également changer la forme d'affichage (formulaire, liste, tableau), comme d'habitude aussi. Si on veut "annuler" notre recherche et revoir de nouveau toutes les données de la table, on clique sur le bouton Afficher tout et tous les enregistrements ignorés réapparaissent. Si on préfère plutôt retourner à notre requête pour modifier les critères, on peut aller dans Enregistrements -> Modifier la recherche (ou faire Ctrl-R). a. Enregistrement d une requête Si vous créez une requête de recherche complexe que vous prévoyez d utiliser à plusieurs reprises, vous pouvez l enregistrer en tant que recherche enregistrée. Vous pouvez ensuite rapidement et facilement exécuter la requête de recherche depuis le mode Utilisation ou Recherche. Cliquez sur la flèche bas située à droite du bouton Rechercher et choisissez Enregistrer la recherche active Donnez un nom à votre requête puis cliquez sur Enregistrer Page 3 sur 17
Pour exécuter votre requête de recherche enregistrée. Cliquez sur la flèche située à droite du bouton Rechercher, puis sous Recherches enregistrées, choisissez votre requête. b. Utilisation de symboles dans les requêtes Évidemment, pour faire une recherche, on peut simplement entrer du texte dans un des champs. Dans ce cas, Filemaker nous trouvera tous les enregistrements dont la valeur dans ce champ contient le texte entré (à ne pas confondre avec est égal au texte entré). C'est un peu comme s'il y avait toujours un * avant et un * après le texte que vous entrerez en guise de critère. Notez également que Filemaker ne fait pas de différence entre les majuscules et les minuscules. Si on veut trouver des enregistrements qui ont exactement la valeur entrée et rien d'autre avant ni après, on peut utiliser le symbole ==. Par exemple, écrire == dexter dans le champ titre retournera tous les enregistrements dont le titre est exactement "Dexter". Si vous écrivez uniquement dexter, Filemaker vous retournera les livres dont le titre contient le mot "Dexter". On peut aussi utiliser tous les symboles relationnels courants, comme < (plus petit que) et > (plus grand que), qui fonctionne avec les nombres, les dates et le texte. Les symboles pour plus petit ou égal, et plus grand ou égal sont respectivement et. Pour les entrer (ainsi que tous les autres symboles possibles, utilisez le menu "Opérateurs" de la barre d outils. Voici les autres symboles que vous pouvez utiliser (et qui se trouvent tous dans le menu " Opérateurs"):... permet de définir un intervalle entre deux valeurs. Par exemple, 1...5 signifie "de 1 à 5 (inclusivement)". Ça fonctionne aussi pour le texte (avion...barbe retourne toutes les valeurs qui se trouveraient entre avion et barbe dans un dictionnaire, incluant avion et barbe eux-mêmes), et pour les dates. La recherche de dates est d'ailleurs fort évoluée. Page 4 sur 17
o 2012-01-01...2012-05-01 retourne toutes les dates entre le 1er janvier et le 1er mai 2012. o 2012-01...2012-05 retourne toutes les dates entre janvier et mai 2012, o inclusivement. 2012-{09...12}-{1...5} retourne toutes les dates du 1er au 5 des mois de septembre à décembre 2012. Notez l'utilisation des accolades pour former des intervalles à l'intérieur même de la date. // retourne toutes les dates égales à la date d'aujourd'hui. C'est équivalent à entrer la date d'aujourd'hui en format aaaa-mm-jj. Les "guillemets" permettent de faire une recherche sur plusieurs mots consécutifs. Si, par exemple, vous cherchez "Jeff Lindsay", vous trouverez tous les livres dont le titre contient exactement les mots Jeff Lindsay, dans cet ordre. Sans les guillemets, vous trouveriez tous les livres dont le titre contient le mot Jeff et le mot Lindsay, peu importe dans quel ordre et peu importe s'il y a autre chose entre les deux mots.! permet de trouver les doublons, c'est-à-dire tous les enregistrements qui ont la même valeur dans ce champ qu'un autre enregistrement.? permet de sortir tous les enregistrements qui ont une valeur invalide dans le champ concerné (par exemple du texte dans un champ numérique). Les caractères @, # et * permettent de former un masque qui retourne tous les enregistrements qui y correspondent. Dans un masque, il y a des caractères connus et fixes, et des caractères inconnus et vagues, représentés par des caractères spéciaux. o Le @ signifie "un et un seul caractère". Par exemple, une recherche sur a@e retournera tous les titres dont le premier caractère est un a, le deuxième est n'importe quoi et le troisième est un c. Par exemple "are" ou "ale", mais pas "arme", "ae" ni "alec". o o o L'étoile signifie "zéro, un ou plusieurs caractères". Par exemple, une recherche sur a*e retournera tous les titres donc le premier caractère est un "a", le dernier un "e", et qui peuvent avoir n'importe quoi (ou rien) entre les deux. Par exemple, "are", "aviatrice", "ae" et "ambulance", mais pas "aviateur". Le * peut être utilisé également dans les dates. Par exemple, 2012-09-* retourne toutes les dates de septembre 2012. Les intervalles entre accolades peuvent être utilisées conjointement avec l'astérisque pour donner par exemple 2012-*-{2...10} (les dates de 2 à 10 de chaque mois de 2012). Le # fonctionne exactement comme le @, mais est limité aux chiffres. Un # signifie "un et un seul caractère numérique". Donc d# retournera "d1", "d9", mais pas "de", ni "d12". Il est possible de mélanger ces trois symboles dans un même masque, même de les répéter plusieurs fois dans un masque. Par exemple "# j@@@s*" retournera "2 jours", "4 jours", "3 javascripts" mais pas "20 jours", ni "2 jambes". Si vous voulez utiliser un caractère spécial (comme le @, le " ou le #) dans une recherche, dans le but par exemple de trouver les livres dont le titre contient un Page 5 sur 17
@, vous allez devoir le préfixer d'un \, c'est-à-dire mettre un \ avant le @ pour indiquer qu'on cherche vraiment le caractère @ et qu'on ne l'utilise pas pour signifier "n'importe quel caractère"... Donc vous pourriez chercher \@ pour voir tous les livres dont le titre contient un @. Notez que le caractère ~, identifié comme "recherche souple", n'est utile qu'en japonais et ne sert à rien du tout en français ou en anglais. On peut également utiliser les jours de la semaine dans un champ date pour trouver toutes les dates qui tombaient au jour demandé (par exemple: mercredi retournera toutes les dates qui tombent un mercredi). Notez que vous pouvez utiliser les abréviations à trois lettres suivies d'un point (mer.) -- FileMaker raccourcira lui-même vos jours si vous les écrivez au long. Pour mieux comprendre les sections suivantes, le format d affichage Tableau est recommandé pour les modèles. c. Des requêtes à plusieurs critères: ET Lorsque vous entrez des critères dans plusieurs champs de votre requête, il y a un "et" qui sera automatiquement utilisé entre tous vos critères. Seuls les enregistrements qui correspondent à tous les critères donnés seront retournés. Par exemple, si vous entrez Dexter dans le champ titre et 2005 dans l'année d'édition, vous trouverez tous les livres dont le titre contient le mot "Dexter" et dont l'année d'édition est 2005. Les livres qui correspondent à un seul de ces deux critères ne seront pas retournés. d. Des requêtes à plusieurs critères: OU Si vous voulez entrer plusieurs critères et voir tous les enregistrements qui correspondent à l'un ou l'autre de ces critères, la procédure est un peu plus complexe: vous devrez ajouter des requêtes supplémentaires à votre requête de base. C'est plus facile de bien visualiser tout cela en forme de tableau. Supposons que j'entre d'abord Dexter dans le champ titre de ma table de livres. Je veux connaître les livres dont le titre contient le mot Dexter ou dont l'année d'édition est 2005. Je dois donc ajouter une requête à ma recherche. On peut faire cela en appuyant sur le bouton nouvelle requête, en faisant Requêtes -> Nouvelle requête, ou en faisant Ctrl-N. Une nouvelle ligne apparaît dans mon tableau. J'entre dans cette deuxième ligne le critère 2005 dans l'année d'édition. Voilà, le tour est joué. Il faut se rappeler qu'entre les champs d'une même ligne, il y a des "et" implicites. Entre les lignes d'une requête, il y a des "ou" implicites. On peut ajouter ainsi autant de requêtes que l'on veut. Pour en enlever, on utilise simplement le bouton supprimer la requête (ou en faisant Requêtes -> Supprimer la requête, ou Ctrl-E). Page 6 sur 17
e. Des critères négatifs On peut simplement activer le bouton "Ignorer(x)", de la barre d outils, pour inverser notre requête. En effet, c'est le seul moyen de chercher des enregistrements qui ne correspondent pas à un critère donné (par exemple, tous les livres dont le titre ne contient pas le mot "Dexter", ou ceux qui n'ont pas été écrits en 2011). On entrera donc nos critères de manière positive, puis on activera le bouton "Ignorer(x)". La requête se fera donc "à l'envers", c'est-à-dire qu'elle retournera tous les enregistrements qui ne correspondent pas aux critères (n'oubliez pas les "et" implicites entre les champs!). f. Raffiner une recherche en enlevant des enregistrements Supposons que je fasse la requête simple suivante: tous les livres dont le titre contient le mot "guerre". J'entre simplement "guerre" dans le champ titre et c'est réglé. Mais si maintenant, je voudrais enlever de tous ces résultats les livres écrits en 2001, comment faire? La façon de faire est d'ajouter une nouvelle ligne de requête à ma recherche et à utiliser une requête d'exclusion dans cette deuxième ligne. Je ferai donc Ctrl-N, puis dans la deuxième ligne, j'entrerai 2001 dans l'année d'édition, et j activerai le bouton "Ignorer(x)". C'est en quelque sorte un peu contre-intuitive puisqu'on a déjà vu qu'en entrant des requêtes sur deux lignes, c'est un "ou" qui est implicite entre les deux (donc je m'attends à voir ceux qui correspondent au premier ou au deuxième critère). Dans le cas où une des lignes fait ignorer et pas l'autre, c'est un "sauf" qui sera implicite entre les deux lignes: je veux tout les enregistrements qui correspondent au premier critère, sauf ceux qui correspondent au deuxième. Il y a une certaine logique à cela: si je continuais de faire un "ou" entre les deux, j'aurais tous les enregistrements qui contiennent le mot "guerre" ou tous les enregistrements qui n'ont pas été écrits en 2001. Je me retrouverais avec: Tous les livres avec "guerre" dans le titre, peu importe leur année d'édition (donc incluant ceux en 2001) Tous les livres, sauf ceux écrits en 2001, peu importe leur titre (donc incluant tout et n'importe quoi, pas seulement les livres sur la guerre). Il faut donc se rappeler de ces trois règles: Il y a un "et" implicite entre les critères d'une même ligne Il y a un "ou" implicite entre les différentes lignes, si elles sont toutes positives Il y a un "sauf" implicite entre les différentes lignes, si l'une d'entre elle est négative Page 7 sur 17
IV. Exercice Former des équipes pour réaliser ce laboratoire. Une seule personne doit m envoyer ce travail par ColNet en mettant le nom de toutes les personnes de l équipe dans le message. Utilisez la base de données " livres.fmp12". Vous noterez qu'elle ne contient qu'une table de livres et 13 enregistrements. Pour chacune des questions suivantes, créez une requête que vous allez enregistrer par son nom (exemple; Requête1, Requête2, ) 1. Requête1 : Tous les livres écrits par Jean-Pierre Dubé 2. Requête2 : Tous les livres dont le nom de l'auteur commence par un "G". 3. Requête3 : Tous les livres dont l'année d'édition n'est pas numérique comme il se devrait. 4. Requête4 : Tous les livres acquis en septembre 2004. 5. Requête5 : Tous les livres acquis entre septembre 2002 et septembre 2004. 6. Requête6 : Tous les livres acquis un jeudi. 7. Requête7 : Tous les livres acquis entre le 1er et le 10 de n'importe quel mois de l'an 2004. 8. Requête8 : Tous les livres de type science fiction ou fantastique. 9. Requête9 : Tous les livres policiers écrits avant 2000. 10. Requête10 : Tous les livres policiers sauf ceux écrits par Jeff Lindsay. 11. Requête11 : Tous les livres dont le titre contient les mots c'est différent, dans cet ordre exact. 12. Requête12 : Tous les livres dont le titre commence par j' (j suivi d'une apostrophe), se terminant par er, écrits en 2004 ou après. 13. Requête13 : Tous les livres qui n'ont pas été la seule acquisition de la journée où on les a achetés. 14. Requête14 : Tous les livres dont le numéro ISBN se termine par un groupe de 5 chiffres. 15. Requête15 : Tous les livres dont le titre contient un point d'interrogation. 16. Requête16 : Tous les livres policiers ou d'informatique qui n'ont pas été écrits en 2012. Référence: 1. Profdinfo.com 2. http://www.filemaker.fr/support/ Page 8 sur 17