DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Champs, pages et fenêtres / Fonctions Table
  • Conditions d'utilisation
  • Type de recherche
  • Champ Table fichier
  • Divers
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Effectue une recherche dans :
  • un champ Table,
  • un champ Table hiérarchique,
Deux modes de recherche sont disponibles :
  • Recherche d'un élément dans une colonne.
  • Recherche d'un élément dans la valeur mémorisée du champ.
Exemple
// Recherche l'élément "Chemise" dans la colonne "COL_Produit"
// Recherche générique à partir de ligne 5
soit ResCherche = TableCherche(COL_Produit, "Chemise", rechercheCommencePar, 5)
// Permet de lister toutes les occurrences d'une valeur recherchée.
Résultat1 est un entier
Résultat1 = TableCherche(COL_NomColonne, "ValeurRecherchée", rechercheIdentique)
TANTQUE Résultat1 <> -1
Trace(Résultat1)
Résultat1 = TableCherche(COL_NomColonne, "ValeurRecherchée", ...
rechercheIdentique, Résultat1 + 1)
FIN
Syntaxe

Rechercher un élément dans une colonne Masquer les détails

<Résultat> = TableCherche(<Nom de la colonne> , <Élément recherché> [, <Type de recherche> [, <Ligne de départ>]])
<Résultat> : Entier
  • Indice de l'élément trouvé,
  • -1 si aucun élément ne correspond à la recherche.
Si la recherche est réalisée :
  • dans un champ Table par programmation, l'élément trouvé n'est pas sélectionné. Pour sélectionner l'élément trouvé, utilisez la fonction TableSelectPlus.
  • dans un champ Table fichier, l'élément trouvé n'est pas sélectionné, les lignes du champ Table défilent jusqu'à l'élément recherché.
<Nom de la colonne> : Chaîne de caractères
Nom de la colonne dans laquelle s'effectue la recherche.
Si ce paramètre correspond à une chaîne vide (""), la colonne manipulée est la colonne à laquelle appartient le traitement en cours.
Dans un champ Table ou Table hiérarchique fichier, la colonne de recherche doit être liée à une rubrique de type clé. Il n'est pas possible de faire une recherche sur une colonne non liée à une rubrique.
<Élément recherché> : Type de l'élément recherché
Élément à rechercher dans la colonne spécifiée. Si l'élément recherché est de type :
  • "Date" ou "Heure" : la recherche est effectuée sur la valeur retournée.
  • "Monétaire + Euro" : la recherche est effectuée sur la devise mémorisée.
<Type de recherche> : Constante optionnelle de type Entier
Type de recherche à effectuer :
rechercheCommencePar (ou Faux par compatibilité)Recherche générique du type "Commence par"
Les éléments ayant une valeur commençant par <Élément recherché> sont retournés.
Attention : Dans un champ Table par programmation, les espaces au début du texte sont ignorés.
rechercheContientRecherche générique du type "Contient"
Les éléments ayant une valeur contenant <Élément recherché> sont retournés.
rechercheDéfautRecherche par défaut. Pour cette fonction, la recherche par défaut est une recherche à l'identique (du type "Egale à").
Les éléments ayant une valeur strictement égale à <Élément recherché> sont retournés.
Attention : Dans un champ Table par programmation, les espaces au début du texte sont ignorés.
rechercheIdentique (ou Vrai par compatibilité)
(Valeur par défaut)
Recherche à l'identique (du type "Egale à")
Les éléments ayant une valeur strictement égale à <Élément recherché> sont retournés.
Attention : Dans un champ Table par programmation, les espaces au début du texte sont ignorés.
<Ligne de départ> : Entier optionnel
Numéro de la ligne de départ de la recherche dans la colonne.
Si ce paramètre n'est pas spécifié, la recherche est effectuée dans toute la colonne.
Ce paramètre permet de rechercher toutes les occurrences d'une chaîne dans une colonne.
Ce paramètre est ignoré dans le cas d'un champ Table fichier.
Etats et Requêtes

Rechercher un élément dans un champ Table (valeur mémorisée) Masquer les détails

<Résultat> = TableCherche(<Champ Table> , <Valeur recherchée>)
<Résultat> : Entier
  • Indice de l'élément trouvé,
  • -1 si aucun élément ne correspond à la recherche.
<Champ Table> : Nom de champ
Nom du champ à manipuler. Ce champ peut correspondre à :
  • un champ Table.
  • un champ Table hiérarchique.
Le champ Table doit être lié à un fichier de données ou une variable.
<Valeur recherchée> : Type de l'élément recherché
Valeur de l'élément recherché. Cette valeur est recherchée dans la valeur mémorisée du champ.
Remarques

Conditions d'utilisation

Syntaxe 1 : La recherche d'un élément dans une colonne est disponible pour :
  • un champ Table ou Table hiérarchique fichier.
  • un champ Table ou Table hiérarchique par programmation.
  • un champ monosélection ou multisélection.
Pour un champ Table ou Table hiérarchique fichier :
  • le mode de parcours doit être automatique.
  • la colonne doit être liée à une rubrique de type clé.
Etats et Requêtes Syntaxe 2 : La recherche un élément dans la valeur mémorisée est disponible pour :
  • un champ Table ou Table hiérarchique fichier.
  • un champ Table ou Table hiérarchique sur variable.
  • un champ monosélection ou multisélection.

Type de recherche

  • Recherche à l'identique : Seuls les éléments ayant une valeur strictement égale à <Élément recherché> sont retournés par la fonction TableCherche. Par exemple :
    // Retourner tous les "Dupond" de la colonne "COL_ColonneNom"
    TableCherche(COL_ColonneNom, "Dupond")
    Attention : Dans un champ Table par programmation, les espaces au début du texte sont ignorés.
  • Recherche générique : Les éléments commençant par <Élément recherché> sont retournés par la fonction TableCherche.
    Par exemple :
    // Retourner tous les noms commençant par "DUP"
    TableCherche(COL_ColonneNom, "DUP", rechercheCommencePar)
Etats et Requêtes

Champ Table fichier

  • Dans un champ Table fichier, il est possible d'utiliser la syntaxe suivante pour rechercher un élément dans une colonne :
    NomDeLaTable = ElémentRecherché
  • Sur les champs Table fichier à accès direct, lors de l'utilisation de la fonction TableCherche :
    • l'affichage du champ Table est déplacé.
    • l'indice renvoyé correspond à un indice "approchant" car ce type de champ Table peut gérer des milliards d'enregistrements.

Divers

  • Dans un champ Table par programmation, la recherche effectuée avec la fonction TableCherche :
    • n'est pas sensible à la casse (majuscules/minuscules).
    • ignore les espaces au début du texte.
  • Dans un champ Table fichier, la recherche effectuée avec la fonction TableCherche tient compte des caractéristiques de recherche définies dans l'analyse pour la rubrique liée à la colonne de recherche (sensible ou non à la casse, ...).
Classification Métier / UI : Code UI
Composante : wd300obj.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
TableCherche () est très lent.
La recherche de Parent dans une table hiérarchique pénalise énormément.
Le remplacement de TableCherche () par un tableau associatif, a divisé par 18, la durée du traitement. 38 min -> 2 min.

tabIndiceFam est tableau associatif d'entiers
tabIndiceAnnée est tableau associatif d'entiers

…/..
//sIndiceFam = TableCherche(COL_Cache , REQ_Serv_Ventes.FamDesc ,rechercheIdentique)
IndiceFam = tabIndiceFam[ REQ_Serv_Ventes.FamDesc ]
SI IndiceFam < 1 ALORS
IndiceFam = TableAjouteLigne(TABLEH_ServicesVentes, REQ_Serv_Ventes.FamDesc, REQ_Serv_Ventes.FamDesc , "", 0 , "" ,REQ_Serv_Ventes.FamDesc,0)
tabIndiceFam[ REQ_Serv_Ventes.FamDesc ] = IndiceFam
FIN
...
AntonioDev
23 sep. 2022
TableCherche () est très lent.
//IndiceAnnée = TableCherche(COL_Cache, REQ_Serv_Ventes.FamDesc +":" + REQ_Serv_Ventes.Année , rechercheIdentique)
IndiceAnnée = tabIndiceAnnée[ REQ_Serv_Ventes.FamDesc +":" + REQ_Serv_Ventes.Année ]
SI IndiceAnnée < 1 ALORS
IndiceAnnée = TableAjouteFils(TABLEH_ServicesVentes, IndiceFam, REQ_Serv_Ventes.Année,REQ_Serv_Ventes.FamDesc +":" + REQ_Serv_Ventes.Année,"" ,0, "" ,"" , 0)
InsèreLigneDansTableaux( IndiceAnnée )
tabIndiceAnnée[ REQ_Serv_Ventes.FamDesc +":" + REQ_Serv_Ventes.Année ] = IndiceAnnée
FIN

…/…

PROCÉDURE INTERNE InsèreLigneDansTableaux( LigneInsérée )
POUR TOUT Indice DE tabIndiceFam
SI Indice >= LigneInsérée ALORS
Indice ++
FIN
FIN
POUR TOUT Indice DE tabIndiceAnnée
SI Indice >= LigneInsérée ALORS
Indice ++
FIN
FIN
FIN
AntonioDev
23 sep. 2022
Réponse à Pascal :
Ajoute nom table devant la colonne,
Ex:
LigHab = TableCherche( FEN_MENU.CFI_Planning.TABLEH_T1.COL_IdCat , LISTE_Cat[iLigneSélectionnée]..ValeurMémorisée )
AntonioDev
23 sep. 2022
Spécifier la table ?
Comment préciser dans quelle table effectuer la recherche sur une colonne commune à plusieurs tables ?
Pascal
30 juil. 2021

Dernière modification : 24/06/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale