Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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
tu passes par filter et setfilter d'une datawindow, c'est ca ?
Hors ligne
heu oui mais d'abord setfilter puis filter :
voici ma fonction de recherche :
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
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
/* 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)
Hors ligne