FIND |
"find"permet de rechercher une valeur particulière dans une série de variables ouexpressions numériques, alphanumériques ou dates.
find ( valeur_à_chercher, liste_exprg ) [ <> 0 ]]
valeur_à_ chercher | ||
liste_exprg |
# 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 or find (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
"find"permet de rechercher une valeur particulière dans une série de variables oud'expressions numériques, alphanumériques ou dates. "
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 (
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.
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. |
MAX - MIN - SUM- PRD - AVG - VAR- UNI
Adonix X3(r) L4G |