FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Filtrar array.
Posts: 350
Joined: Wed Nov 02, 2005 03:28 PM
Filtrar array.
Posted: Thu Oct 14, 2010 05:44 PM
Me explico tengo un array que uso en varios Browse, y que al final actualizo en la base de datos.
El problema esta en que en algunos Browse solo tiene que salir ciertos elementos del array, por ejemplo los que sean de determinada fecha,
puedo ir clonando array y tal pero me gustaria saber si existe alguna forma de poder hacer un "filtro" a un array para que muestre solo los que necesito pero no perder los
demás.
Espero haberme explicado bien.
Por ejemplo en este array que solo salga los de una determinada fecha pero que sin que se borren los demás porque los necesito tambien para actualizar la base de datos.

Gracias.

Ejemplo del codigo que uso :
Code (fw): Select all Collapse
 DEFINE DIALOG oDCONTACTO RESOURCE "FCONTACTO" OF oApp:aMod[3]:oWnd;
         TITLE "Datos Contacto"

  REDEFINE FOLDER oFcontacto ID 101 OF oDCONTACTO UPDATE;
            PROMPT "&1.General","&2.Fechas";
            DIALOGS "CONTACTO","CONTACTOV" ADJUST on change

  REDEFINE say var transform(vcodigo,"9,999")+"   -   "+vcliente ID 101 OF ofcontacto:aDialogs[1]
  REDEFINE GET gvnombre   Var  vnombre   ID 102 OF ofcontacto:aDialogs[1]
  REDEFINE GET gvcargo    Var  vcargo    ID 103 OF ofcontacto:aDialogs[1]
  REDEFINE GET gvtelefono Var  vtelefono ID 104 OF ofcontacto:aDialogs[1]
  REDEFINE GET gvemail    Var  vemail    ID 105 OF ofcontacto:aDialogs[1]
  REDEFINE GET gvdatos    Var  vdatos    ID 106 MEMO OF ofcontacto:aDialogs[1]

  REDEFINE BROWSE oBrwv ID 103 OF ofcontacto:aDialogs[2]

   oBrwv:SetArray( tvisita )

   oBrwv:bKeyDown   = { | nKey, nFlags | iif(nkey = 13 .or. nkey = 107 .or. nkey = 109,;
                          (CLIENTEVISITA(NKEY,oBrwv:nAt,;
                           Var(1),Var(2)),oBrwv:refresh()),)}


   oBrwv:blDblClick  = { | nKey, nFlags | (CLIENTEVISITA(13,oBrwv:nat,;
                           Var(1),Var(2)),oBrwv:refresh())}

   REDEFINE GET gvcodigo Var  vcodigo  ID 101 OF ofcontacto:aDialogs[2] WHEN LSAY
   REDEFINE GET gvcliente Var  vcliente  ID 102 OF ofcontacto:aDialogs[2] WHEN LSAY
   REDEFINE GET gvnombre Var  vnombre  ID 104 OF ofcontacto:aDialogs[2] WHEN LSAY

   ADD COLUMN to oBrwv ARRAY ELEMENT 1 HEADER "Fecha" size 100 EDITABLE
   ADD COLUMN to oBrwv ARRAY ELEMENT 2 HEADER "Contacto"  size 200
   ADD COLUMN to oBrwv ARRAY ELEMENT 3 HEADER "Usuario" size 100
   ADD COLUMN to oBrwv ARRAY ELEMENT 4 HEADER "PTE" size 40 BITMAP
   ADD COLUMN to oBrwv ARRAY ELEMENT 5 HEADER "Datos" size 150

  REDEFINE BTNBMP aBoton[1] ID 500 RESOURCE "aceptar" OF oDcontacto;
           ACTION (lsalva:=.t.,odcontacto:end())

  REDEFINE BTNBMP aBoton[2] ID 501 RESOURCE "cancelar" ;
           OF oDcontacto action odcontacto:end()


  ACTIVATE DIALOG odcontacto CENTER
Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Filtrar array.
Posted: Thu Oct 14, 2010 06:04 PM
Garbi

Tal vez esta clase te pueda ayudar (TArray)

http://forums.fivetechsupport.com/viewtopic.php?p=71545#p71545
Posts: 350
Joined: Wed Nov 02, 2005 03:28 PM
Re: Filtrar array.
Posted: Fri Oct 15, 2010 05:39 PM

Podrias indicarme como usar setfilter en tvisita para que las posicion 6 del registro de la tabla sea igual a 1002 y la posicion 7 = 2
segun el codigo que he puesto arriba, estoy haciendo pruebas y no lo consigo.
Gracias.

Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Filtrar array.
Posted: Sun Oct 17, 2010 07:52 PM

Garbi

Publica un codigo que podamos probar segun tus necesidades, es la mejor forma de ayudarte

Gracias

Continue the discussion