Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 04-06-2007 17:45:32

ben_ghost  
Membre Geek
Lieu: paris
Date d'inscription: 22-03-2007
Messages: 33
Pépites: 100
Banque: 0

Filtrer par mot clés ?

Coucou,
je suis en train de faire un systéme de recherche , je pensais utiliser un filtre sur une string... mais je ne sais pas trop comment faire... quel fonction utiliser enfin tt koi... Je pensais utiliser match mais cela ne semble pas être la fonction la plus judicieuse...

Autrement dit vous avez "C++;java;C#;Powerbuilder" sur la ligne 1 si je fais une recherche sur le mot "java" j'aimerais que cette ligne ne soit pas filtrer et que les ligne ne contenant pas ce mot le soit ...mais le set filter avec le match il me retourne une erreur??? vous sauriez pourquoi ? et sinon y a t'il un autre moyen ?

Ben

Hors ligne

 

#2 04-06-2007 17:55:32

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4659
Pépites: 945
Banque: 2,147,483,647
Site web

Re: Filtrer par mot clés ?

tu passes par filter et setfilter d'une datawindow, c'est ca ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 06-06-2007 17:49:02

ben_ghost  
Membre Geek
Lieu: paris
Date d'inscription: 22-03-2007
Messages: 33
Pépites: 100
Banque: 0

Re: Filtrer par mot clés ?

heu oui mais d'abord  setfilter puis filter :

voici ma fonction de recherche :

Code: pb

integer pointeur, i
String EachSpecify, tanpom
setnull(EachSpecify)
// Get the arguments and strip blanks from start and end of string

tanpom = Trim(specify)

DO WHILE Len(tanpom ) > 0
   i = Pos( tanpom , ";")
   if i = 0 then i = Len(tanpom ) + 1
  if isnull(EachSpecify) then
      EachSpecify = "if (Pos(~"" + Left(tanpom , i - 1) + "~",competence) <> 0, 1, 0)"
  else
    EachSpecify = EachSpecify + " or " + &
              "if (Pos(~"" + Left(tanpom , i - 1) + "~",competence) <> 0, 1, 0)"
  end if

   tanpom = Replace(tanpom , 1, i, "")

LOOP

if Debug = true then messagebox("Debug", EachSpecify)
initfilter(dw_list, EachSpecify)
/*
  for pointeur=1 to dw_list.rowcount()  // Pour chaque ligne
    if true then                // Si la recherche est OK
                            // On incorpore la donnée
    end if
  next
*/
Return 1




Bien evidement celle ci ne marche pas... initfilter réinitialise le filtre (setfilter("") puis filter() et ensuite applique le filtre perso)

Hors ligne

 

#4 06-06-2007 18:09:04

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: Filtrer par mot clés ?

Pourquoi n'utilises-tu pas la fonction rowsmove vers le filter buffer dans une boucle où tu ferais juste un pos de ton mot clé ?
Une maquette de la fonction ci-dessous. En espérant t'aider...

Chrnico


Code: pb

/*
Fonction qui filtre les lignes de taDW si le mot cle n'est pas dans le champ competence
Argument : as_mot_cle_recherche   string
*/

string ls_competence
long ll_row, ll_count

ll_count = taDW.Rowcount()

for ll_row = ll_count to 1 step -1
   ls_competence = taDW.Object.competence[ll_row]
   if pos(ls_chaine, as_mot_cle_recherche) = 0 then
       taDW.RowsMove(ll_row,ll_row,Primary!, taDW, 1, Filter!)
   end if
next


Dernière modification par Chrnico (06-06-2007 18:13:36)


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22