|
Débuté par guest, 07 déc. 2005 21:09 - 1 réponse |
| |
| | | |
|
| |
Posté le 07 décembre 2005 - 21:09 |
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 |
| |
| |
| | | |
|
| | |
| |
Posté le 08 décembre 2005 - 10:22 |
Salut,
Remplacez tout ce code par une requête. Vous pourrez trier ensuite la table sur la colonne souhaitée sans que cela ait un impact sur la sélection.
En plus, vous allez gagner en performances...
-- Ed en Ligne
"Michel" <guest@newsgroup.fr> a écrit dans le message de news: 43973ae4$1@news.pcsoft.fr...
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
|
| |
| |
| | | |
|
| | | | |
| | |
|