w w w . a d o n i x . c o m

FIND

Sommaire


"find"permet de rechercher une valeur particulière dans une série de variables ouexpressions numériques, alphanumériques ou dates.

 

Syntaxe

  find(valeur_à_chercher, liste_exprg ) [<> 0 ]]

 

Paramètres

Elément

Description

Remarques

valeur_à_ chercher

Expression à rechercher dans la listedes arguments qui suivent.

Aucune.

liste_exprg

Liste d'expressions_généraliséesséparées par le caractère ','.

Toutes les expressions doivent être dumême type.

 

Exemples

  # Recherche simple : X est un tableau de valeurs déclaré comme X(1..N)
   I =find(VALEUR, X)
    Infbox VALEUR-"se trouve à la place"-I-" dans le tableau X"
  # Après une première saisie en tableau, se repositionner sur
   # la première colonne pour une valeur recherchée
   FNC_RECHERCHE
       Integer I
       I =find(VALEUR_RECH,[M]COLONNE1(0..[M]NBL-1))
       If I<>0
          zonsui = sum("COLONNE1(", num$(I-1), ")")
       Endif
  # Si I est nul, la recherche n'a pas abouti
   Return
    # Recherche de valeurs dans un tableau de chaînes
   Char LIGNES(5)(40)     :# 40 chaînes de 5 caractères maximum
    Gosub LIRE_LIGNES      :# Remplit le tableau LIGNES
    I = pat(sum(LIGNES(0..39)), "*A*")
    If I <> 0
       Infbox "Il y a un 'A' dans au moins l'une des lignes"
    Endif
    I =find("A", LIGNES(0..39))
    If I <> 0
       Infbox 'Il y a au moins l'une des lignes égale à "A" '
    Endif
 # transmettre la fonction Find à la base
For [AMK]CODMSK
  If [F:AMK]CODACT=ACTIV orfind(ACTIV,[F:AMK]ACTBLOC(0..[F:AMK]NBBLOC-1))<>0
    OBJET = "AMK"
    NOM = [F:AMK]CODMSK
    TRAITE = [F:AMK]TRTSPE
    Gosub EXTOBJ : If !OK : Break : Endif
  Endif
Next

 

Description et commentaires

"find"permet de rechercher une valeur particulière dans une série de variables oud'expressions numériques, alphanumériques ou dates. "find"renvoie le rang de la valeur trouvée dans la liste donnée si la valeur esttrouvée (de 1 au nombre de valeurs dans la liste) ou 0 si la valeur n'est pas trouvée.

t>Pour une recherche dans une série de valeurs numériques, on peut mêlerdes expressions et des variables de type Integer, Shortint, Decimal et Libelle.

Si l'un des arguments de la fonction est une variable dimensionnée sansprécision d'indice ou d'intervalle d'indices, tous les éléments de la variablesont utilisés. La précision d'un indice ou d'un intervalle d'indice détermineles éléments à prendre en compte.

Si l'on donne un intervalle d'indices tel qu'il n'y a aucun élément dans laliste des variables à chercher (find(RECHERCHE, VALEURS(1..0)) parexemple) le résultat renvoyé est 0.

Le type du résultat est Integer.

Lorsque la fonction Find se termine par "<>0", la fonctionest transmise à la base. Find(champ,valeur1,valeur2....)<>0 sera traduità la base de données par champ in (valeur1,valeur1.....). Le fait detransmettre à la base cette expression, va, dans certains cas, améliorer lestemps de réponses puisque c'est la base qui va effectuer le filtre et non X3.La requête transmise correspond à une liste de "ou" du point de vuedu plan d'exécution de la base de données. Si le find est un filtrediscriminant, une clé devra exister commençant par le champ décrit par le findpour que la requête soit performante. Oracle oriente alors sont plan d'exécutionen autant de sous requêtes efficace qu'il y a de valeurs.

 

Erreurs associées

Erreur

Description

ERMODE(10)

Lesindices donnés ne sont pas numériques.

ERINDI( 8)

Erreurde bornes pour des indices.

ERDOM(50)

Lesarguments ne sont pas du même type, ou aucune valeur ne se trouve dans laliste (dans le cas defind(VALEURS(1..0)) par exemple).

ERDIM(55)

Tropde dimensions données.

 

Mots-clés associés

MAX - MIN - SUM- PRD - AVG - VAR- UNI


SOMMAIRE

Adonix X3(r) L4G
Copyright (c) Adonix 1999 - All rights reserved