|
Recherche multicritère table |
Débuté par cyrille Bigorgne, 30 nov. 2023 13:34 - 11 réponses |
| |
| | | |
|
| |
Posté le 30 novembre 2023 - 13:34 |
Bonjour à tous,
J'ai un table rempli par programmation.
Cette table je voudrais la filtrer en fonction de plusieurs combo.
Dans cette table , j'ai créé un champs qui concatène tout mes champs afin de pouvoir utiliser un TableActiveFiltre qui contient cela marche bien quand les valeurs se suit par contre quand les valeurs des combo ne suit pas cela ne fonctionne pas .
cCritereFiltretable est une chaîne
cCritereFiltretable = CMOD_Saison.COMBO_Saison.ValeurAffichée + " " + CMOD_Style.COMBO_Style.ValeurAffichée + " "+ CMOD_Categorie.COMBO_Categorie.ValeurAffichée + " " + CMOD_Famille_SousFamille.COMBO_Famille.ValeurAffichée + " " + CMOD_Famille_SousFamille.COMBO_SousFamille.ValeurAffichée + " " + CMOD_Qualite.COMBO_Qualite.ValeurAffichée + " " + CMOD_Etat.COMBO_Etat.ValeurAffichée
cCritereFiltretable = Remplace(cCritereFiltretable,[" "," "," "," "," "," "," "]," ")
TableActiveFiltre(TABLE_Pricing.COL_DescriptionPricing,filtreContient,SansEspace(cCritereFiltretable,sscExtérieur))
Avez vous une idée du problème ou une autre solution pour faire cette recherche |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 574 messages Popularité : +222 (260 votes) |
|
Posté le 30 novembre 2023 - 14:34 |
Bonjour,
Pourquoi ne pas utiliser TableActiveFiltre() sur les colonnes concernées tout simplement ?
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 548 messages |
|
Posté le 30 novembre 2023 - 14:42 |
Bonjour,
Enchainez les TableActiveFiltre pour chaque colonne selon les valeurs des Combo :
TableActiveFiltre(MaTable.reference, filtreContient , COMBO1.ValeurAffichée) TableActiveFiltre(MaTable.stock, filtreContient , COMBO2.ValeurAffichée) Cdlt |
| |
| |
| | | |
|
| | |
| |
Posté le 30 novembre 2023 - 14:58 |
si on enchaine les tableactivefiltre , le deuxième supprime le filtre du premier ? |
| |
| |
| | | |
|
| | |
| |
Posté le 30 novembre 2023 - 15:03 |
oui en effet ca marche. Désolé
pourquoi chercher compliquer quand on peut faire simple |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 548 messages |
|
Posté le 01 décembre 2023 - 10:35 |
En effet, si vous ciblez deux fois la même colonne avec un filtre différent, le deuxième filtre remplacera le premier. Mais comme vous avez pu vous en rendre compte, un "TableActiveFiltre" sur une colonne différente vient ajouter un Filtre aux enregistrements filtrés par le premier filtre. Cdlt |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 150 messages |
|
Posté le 03 décembre 2023 - 09:38 |
@Cyrille Depuis que çà existe, j'ai toujours utilisé les vues, de préférence aux requêtes ou aux filtres : - Une vue (Hcréevue, Hdétruitvue, etc..) - Un filtre qu'on construit sous forme de variable chaîne par concaténation de conditions proposées dans des champs de saisies ou combos - Une table mémoire - Un bouton de recherche + un bouton de RàZ - Une procédure de remplissage de la table par programmation
Les vues sont souples à utiliser mais surtout plus rapides dans l'extraction et l'affichage des données que les requêtes. Nous avions testé la rapidité sur d'énormes fichiers de la SNCF, parce que le client voulait que çà dépote. Bon développement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 26 messages |
|
Posté le 08 décembre 2023 - 21:01 |
Bonjour Denis,
Auriez vous un exemple de code qui va plus vite avec une vue qu'avec une requete ? Je trouve ca étonnant. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 150 messages |
|
Posté le 09 décembre 2023 - 00:09 |
Bonjour THEO La vitesse d'exécution va dépendre de plusieurs paramètres : Le nombre total d'enregistrement dans le fichier, si la base de données est locale ou installée sur un serveur, la complexité du filtre d'extraction et bien entendu la puissance de calcul de la machine qui traite l'extraction des données. Pour des petites extractions, j'utilise parfois des requêtes. Pour les gros volumes de données, toujours des vues. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 26 messages |
|
Posté le 10 décembre 2023 - 00:36 |
C'est bizarre, vue ou requete il n'y a pas de raison que l'une soit plus rapide que l'autre. Il faudrait comparer les plans d'execution, peut etre qu'il y a une autre raison. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 150 messages |
|
Posté le 11 décembre 2023 - 02:13 |
Salut Theo On pourrait discuter de çà pendant des heures Pour moi, à l'époque, je m'étais bien cassé la tête : Mon client (SNCF) était (à juste titre) très pointilleux et les temps de retour de données aux demandes d'extraction étaient capitales. Un opérateur dans une grue ou un guichetier ne peuvent pas attendre pour accéder à l'info. Les vues nous avaient solutionné le problème.
En passant de Windev V11 à V27, je m'attendais à des améliorations en vitesse, côté requête. J'ai donc reprogrammé une appli locale de vidéothèque (env. 10000 fiches avec images) en passant d'une vue à une requête. Avec 12 critères d'extraction cumulatifs (année, genre, acteurs, etc...) contenant des ET et des CONTIENT, l'extraction par vue est toujours plus rapide qu'avec une requête.
Tout dépend du contexte, du niveau d'extraction souhaitée et du matos. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 574 messages Popularité : +222 (260 votes) |
|
Posté le 11 décembre 2023 - 10:01 |
Je dirais que tout dépend surtout de la base de donnée que tu utilises, des index créés... Si tu utilises HFSQL forcément tu te retrouves avec des performances pas terribles. Avec d'autres SGBD qui gèrent mieux ces cas, tu as des performances normales.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | | | |
| | |
|