4D v16.3CHERCHER |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
CHERCHER
CHERCHER
La commande CHERCHER recherche les enregistrements répondant au(x) critère(s) de recherche spécifié(s) dans critère et retourne une sélection d'enregistrements de laTable. CHERCHER modifie la sélection courante de laTable pour le process courant. Le premier enregistrement de la nouvelle sélection devient l'enregistrement courant. Si vous omettez le paramètre laTable, la commande s'applique à la table par défaut. Si aucune table par défaut n'a été définie, une erreur est générée. Si vous ne passez ni le paramètre critère ni le paramètre *, CHERCHER affiche la boîte de dialogue de l'Editeur de recherches de 4D pour table (sauf lorsqu'il s'agit de la dernière ligne d'une recherche complexe, cf. ci-dessous) : Pour plus d'informations sur l'utilisation de cet éditeur, reportez-vous au manuel Mode Développement. L'exemple suivant affiche l'Editeur de recherches pour la table [Produits] : CHERCHER([Produits]) L'exemple suivant affiche l'Editeur de recherches pour la table par défaut (si elle a été définie) : CHERCHER Si vous spécifiez le paramètre critère, l'Editeur de recherches ne s'affiche pas et la recherche est entièrement définie par programmation. Pour des recherches simples (recherches sur un seul champ), vous appelez CHERCHER une seule fois avec le paramètre critère construit de la manière décrite plus bas. Pour des recherches complexes (recherches sur de multiples champs ou avec de multiples conditions), vous appelez CHERCHER autant de fois que nécessaire avec le paramètre critère et le paramètre optionnel * sauf pour la dernière ligne CHERCHER (qui déclenche la recherche). L'exemple suivant recherche les [Personnes] dont le nom commence par "a" : CHERCHER([Personnes];[Personnes]Nom="a@") L'exemple suivant recherche les [Personnes] dont le nom commence par "a" ou "b" : CHERCHER([Personnes];[Personnes]Nom="a@";*) ` * indique qu'il y a un autre critère de recherche Note : Le mode d'interprétation du caractère @ dans les recherches peut être modifié via une option des préférences. Pour plus d'informations, reportez-vous à la section Opérateurs de comparaison. Le paramètre critère utilise la syntaxe suivante : {opérateur ; } champ comparateur valeur
Note : Il est possible de définir le comparateur sous la forme d'une expression alphanumérique au lieu d'un symbole. Dans ce cas, il est obligatoire d'utiliser des points-virgules pour dissocier les éléments de la chaîne de recherche. Ce principe permet par exemple de créer des séquences de recherches paramétrables en faisant varier le comparateur, ou de construire des interfaces de recherche utilisateur personnalisées. Reportez-vous à l'exemple 21.
Voici les règles à observer pour la construction de séquences de recherche :
Note : Chaque table maintient sa propre construction de recherche courante. Cela signifie que vous pouvez créer de multiples recherches simultanément, une pour chaque table. Dans ce cas, vous devez passer le paramètre table ou spécifier une table par défaut. Quelle que soit la manière dont la recherche a été définie :
Nous recherchons tous les enregistrements dont le nom correspond à "Dupont" : CHERCHER([Personnes];[Personnes]Nom="Dupont") Note : Si le champ Nom est indexé, nous bénéficions donc d'une recherche accélérée tirant parti de l'index. Rappel : Cette recherche trouvera les enregistrements tels que "Dupont", "dupont", "DUPONT", etc. Si vous voulez que la recherche tienne compte des majuscules/minuscules, définissez des critères supplémentaires utilisant les codes de caractères. Nous recherchons les personnes se nommant "Dupont" et se prénommant "Jean". Le champ Nom est indexé. En revanche, le champ Prénom ne l'est pas : CHERCHER([Personnes];[Personnes]Nom="Dupont";*) ` Chercher toute personne qui s'appelle Dupont Cet exemple effectue dans un premier temps une recherche rapide sur le champ indexé Nom, ce qui réduit la sélection d'enregistrements à ceux des personnes s'appelant Dupont. La recherche s'effectue ensuite séquentiellement sur le champ Prénom, mais nous serons peu pénalisés puisqu'elle s'exécute parmi une présélection d'enregistrements. Cet exemple tirera automatiquement parti de l'index composite incluant les champs [Personnes]Prénom+[Personnes]Nom (s'il existe) pour trouver les enregistrements de toutes les personnes nommées Jean Dupont : CHERCHER([Personnes];[Personnes]Prénom="john";*) ` Trouver tous les Jean Pour plus d'informations, veuillez vous référer au paragraphe Index composites. L'exemple suivant recherche les personnes se nommant Dupont ou Blanc. Le champ Nom est indexé : ` Chercher toute personne qui s'appelle Dupont… La commande utilise l'index du champ Nom pour les deux recherches. Les deux recherches sont effectuées, et leurs résultats sont placés dans des ensembles internes qui sont finalement combinés par l'intermédiaire d'une opération Union. L'exemple suivant recherche des personnes qui ne travaillent pas pour une société. La recherche est effectuée en testant si le nom de la société est une chaîne vide. CHERCHER([Personnes];[Personnes]Société="") ` Chercher les personnes sans société L'exemple suivant recherche chaque personne se nommant "Dupont" et travaillant dans une société basée à Paris. La deuxième recherche utilise un champ venant d'une autre table. Cette recherche peut être effectuée parce que la table [Personnes] est liée à la table [Société] par un lien de N vers 1 : CHERCHER([Personnes];[Personnes]Nom="Dupont";*) ` Chercher toute personne qui s'appelle Dupont… L'exemple suivant recherche l'enregistrement de chaque personne dont l'initiale du nom est située entre les lettre A (incluse) et M (incluse) : CHERCHER([Personnes];[Personnes]Nom<"n") ` Trouver toute personne entre A et M L'exemple suivant recherche les enregistrements des personnes habitant soit Paris soit Lyon : CHERCHER([Personnes];[Personnes]CodePostal="75@";*) ` Trouver ceux qui habitent Paris… Recherche par mot-clé : l’exemple suivant recherche dans toute la table [Produits] les enregistrements dont le champ Description contient le mot “facile” : CHERCHER([Produits];[Produits]Description%"facile") Nous recherchons les enregistrements correspondant à la réponse fournie dans une boîte de dialogue : vTrouvé:=Demander("Saisissez un code de facture :") `Demander un code de facture à l'utilisateur Cet exemple recherche tous les enregistrements des factures saisies en 1996. Nous recherchons les dates entre le 31/12/95 et le 1/1/97 : CHERCHER([Factures];[Factures]DateFacture >!31/12/95!;*) ` Trouver des factures après le 31/12/95… L'exemple suivant trouve les employés qui ont un salaire entre 20 000 et 40 000 Euros. La recherche inclut les employés qui gagnent 20 000 Euros et exclut ceux qui gagnent 40 000 Euros : CHERCHER([Employés];[Employés]Salaire >=20000;*) ` Trouver les employés qui ont un salaire entre… L'exemple suivant cherche les employés du service Marketing qui ont un salaire supérieur à 30 000 Euros. Le champ Salaire est utilisé dans un premier temps car il est indexé. Notez que la seconde recherche utilise un champ venant d'une autre table. Le champ [Service]Nom est lié à la table [Employés] par un lien automatique de N vers 1. CHERCHER([Employés];[Employés]Salaire >30000;*) Soient trois tables reliées par des liens de N vers 1 : [Ville] -> [Département] -> [Région] . La recherche suivante trouve toutes les régions comportant des villes dont le nom débute par "Saint" : CHERCHER([Région];[Ville]Nom="Saint@") ` Trouver toutes les régions contenant des villes commençant par Saint La recherche suivante recherche les informations égales à la valeur de la variable mavar. CHERCHER([Lois];[Lois]Texte =mavar) ` Trouver toutes les lois qui sont égales à la valeur de mavar La recherche peut avoir des résultats différents selon la valeur de mavar. Elle sera également exécutée différement. Par exemple :
L'exemple suivant ajoute ou non les lignes d'une recherche complexe en fonction de la valeur de variables. Ainsi, seuls les critères valides sont pris en compte pour la recherche : CHERCHER([Facture];[Facture]Payee=Faux;*) Cet exemple illustre l'utilisation d'un comparateur sous forme d'expression alphanumérique. La valeur du comparateur est définie via un pop up menu placé dans une boîte dialogue de recherche personnalisée : C_TEXTE($ope) L’utilisation des index de mots-clés d’image peut accélérer de façon importante vos applications. CHERCHER([IMAGES];[IMAGES]Photos %"cats") // cherche les photos contenant le mot-clé cats Si la recherche est correctement effectuée, la variable système OK prend la valeur 1.
Voir aussi
|
PROPRIÉTÉS
Produit : 4D HISTORIQUE
Modifié : 4D v11 SQL UTILISATION DE L'ARTICLE
4D - Langage ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||