PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → HFiltre et changement de clé de parcours
HFiltre et changement de clé de parcours
Débuté par guest, 02 déc. 2005 10:07 - Aucune réponse
Posté le 02 décembre 2005 - 10:07
Salut à tous,
Voici mon problème :
- J'ai un table fichier.
- Dans la description ce champ table, onglet Contenu, la rubrique de parcours est IDDEP_PROJET.
- J'ai coché la case "Utiliser la fonction HFiltre pour le parcours du fichier", pour les tries
- Je veux effectuer une recherche générique (type wildcard : dudule*machin*.doc) sur la clé de parcours "NomFichier" (donc différente de IDDEP_PROJET).
- j'ai donc une fenetre avec cette table un champ de saisie et un bouton de lancement de recherche. voici le code :
CléParcours est une chaîne
RubParcours est une chaîne = "NomFichier"
HDésactiveFiltre ("REPOSITORY")
SI SaisieFichier<>"" ALORS
cWhere est une chaîne = renvoyerClauseWhere(RubParcours,SaisieFichier)
CléParcours=HFiltre("REPOSITORY",cWhere)
SI CléParcours <> "" ALORS
//Code pour test
// HLitPremier(REPOSITORY,CléParcours)
// tantque pas HEnDehors(REPOSITORY)
// test est une chaine = REPOSITORY.NomFichier
// HLitSuivant(REPOSITORY,CléParcours)
// FIN
//Fin code pour test

TableAffiche(TableDest,taDébut)
//TableDest..RubriqueParcourue=CléParcours
FIN
SINON
// Annule le filtre
TableDest..FiltreÞP_PROJET.IDDEP_PROJET
TableDest..RubriqueParcourue="IDDEP_PROJET"
FIN

- Le code de renvoyerClauseWhere:
PROCEDURE renvoyerClauseWhere(nomChamp="",cWhere="")
_where est une chaîne
nbEtoiles est entier
nbChaines est entier
i est entier

SI Droite(cWhere,1) ="*" ALORS
cWhere=Gauche(cWhere,Taille(cWhere)-1)
FIN
SI Gauche(cWhere,1)="*" ALORS
cWhere=Droite(cWhere,Taille(cWhere)-1)
FIN

_where = nomChamp+"~] '"+cWhere+"'"
nbEtoiles = ChaîneOccurrence(cWhere,"*")

SI nbEtoiles>0 ALORS
nbChaines = nbEtoiles+1
_where=""
POUR i=1 A nbChaines
_where+=nomChamp+"~] '"+ExtraitChaîne(cWhere,i,"*")+"' ET "
FIN
_where = Gauche(_where,Taille(_where)-4)
FIN
RENVOYER _where

- Si je laisse la case "Utiliser la fonction HFiltre pour le parcours du fichier", le Code pour test me liste bien les valeurs recherchées mais le tableaffiche n'affiche pas ces valeurs
- Si j'enlève la case "Utiliser la fonction HFiltre pour le parcours du fichier", çà fonctionne et je perds le trie automatique et la recherche "simple"...
- si je décommente la ligne TableDest..RubriqueParcourue=CléParcours alors il me renvoie une ligne qui n'a rien a à voir avec la recherche...

Quelqu'un a une idée ??
Michel