PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Filtres entre 2 bornes
Filtres entre 2 bornes
Iniciado por ehbilodeau, 19,nov. 2018 20:22 - 2 respuestas
Publicado el 19,noviembre 2018 - 20:22
Bonjour,

J'ai besoin d'aide pour un problème que je n'arrive pas à régler !
J'ai un tableau remplie par une requête. Dans la fenêtre j'ai ajouté un bouton qui sauvegarde dans un fichier TXT les Filtres appliqué au tableau via la loupe.
// Récupération des filtres
sNomFiltre est une chaîne
sListeFiltre est une chaîne = TableColonnesFiltrées(TABLE_Table1)
POUR TOUTE chaîne sFiltre de sListeFiltre SEPAREE PAR RC
sCol est chaîne = ExtraitChaîne(sFiltre, 1, ";")
nType est entier = ExtraitChaîne(sFiltre, 2, ";")
sVal est chaîne = ExtraitChaîne(sFiltre, 3, ";")
//Trace(sCol, nType, sVal)
FIN
sNomFiltre = Combo_Filtres..ValeurAffichée
SI Combo_Filtres <> "" ALORS
fSauveTexte("C:\Synergie\temp\"+sNomFiltre+".txt",sListeFiltre)
ListeSupprimeTout(Combo_Filtres)
ResListeFichier sont des chaînes
ResListeFichier = fListeFichier("C:\Synergie\Temp"+"\*.*", frInterruptible)
// Pour chaque fichier trouvé
POUR TOUTE chaîne UnFichier de ResListeFichier SEPAREE PAR RC
ListeAjoute(Combo_Filtres, fExtraitChemin(UnFichier,fFichier+fExtension))
FIN
SINON
Erreur("Pour sauvegarder le filtres il faut entrer un nom dans le champ Filtres !")
FIN


Par la suite j'ai un combo qui permet de sélectionner un filtre sauvegarder pour l'appliquer sur le tableau

nNumFichier est un entier
sLigneLue est une chaîne

nNumFichier = fOuvre ("C:\Temp\"+Combo_Filtres..ValeurAffichée, foLecture)
SI nNumFichier <> -1 ALORS
sLigneLue = fLitLigne(nNumFichier) // Lecture de la 1ère ligne
TANTQUE sLigneLue <> EOT // Test de la fin de fichier
// Traitement de la ligne
sColonne est une chaîne = "Table_Table1."+ ExtraitChaîne(sLigneLue, 1, ";")
nType est un numérique = ExtraitChaîne(sLigneLue, 2, ";")
sValeur est une chaîne = ExtraitChaîne(sLigneLue, 3, ";")
TableActiveFiltre(sColonne,nType,sValeur)
// Lecture de la ligne suivante
sLigneLue = fLitLigne(nNumFichier)
FIN
fFerme(nNumFichier)
FIN


Mon problème est que lorsqu'un utilisateur choisi de filtrer une colonne Date avec le filtre "Compris entre deux bornes". J'obtiens alors l'erreur suivante :

Erreur à la ligne 15 du traitement Sélection d'une ligne de Combo_Filtres.
Vous avez appelé la fonction tableactiveFiltre.
La valeur de la constante (32082) est invalide avec cette fonction.


Comment puis-je résoudre mon problème ?
(mon code peut ne pas être optimisé ! je suis nouveau à la programmation)

Merci,

Etienne HB
Miembro registrado
2.323 mensajes
Publicado el 20,noviembre 2018 - 10:13
Bonjour,

Rassurez-vous, votre code est correct.
Mais … si vous regardez les valeurs standards renvoyées par la fonction TableColonnesFiltrées() et acceptées par la fonction TableActiveFiltre(), vous ne trouverez pas le filtre "Compris entre deux bornes".
cf. :
https://doc.pcsoft.fr/fr-FR/index.awp?1000020517
https://doc.pcsoft.fr/fr-FR/index.awp?1000017149

Je vous suggère donc :
1. De soumettre votre problème au support technique pour qu'il fasse évoluer ces fonctions dans une prochaine version.
2. Vous testiez cette valeur dans votre code et que vous appliquiez vous-même ce filtre par programmation.

--
Bon dev,
Jean-Pierre
Publicado el 20,noviembre 2018 - 14:40
Bonjour Jean-Pierre,

Je vais suivre votre conseil pour la première suggestion !
Pour la seconde, si je comprends bien, je vais devoir remplir mon tableau a nouveau avec ma requête, mais en spécifiant les filtres ?

Merci,

Etienne