Ayuda Busqueda Incremental Xbrowse ???

Ayuda Busqueda Incremental Xbrowse ???

Postby remtec » Fri Jan 17, 2020 2:46 pm

Amigos Muy buen dia.

Se me presento un problema en la busqueda incremental de Xbrowse

Tengo un Archivo indexado por 3 condiciones, para su busqueda cambie el Set Filter por ORDSCOPE, ya que en Red, creo que es mas rapido el ORDSCOPE, espero no estar equivocado.

El problema se me presenta que al usar ORDSCOPE, te tenido que que indexar de la siguiente Forma:
inde on Nom_Pro tag Med2 to Profesio // Solo por Nombre
inde on Est_Pro+Nom_Pro tag Med3 to Profesio // Aqui he tenido que agregar un campo por tipo+nombre
inde on Ate_Hor+Nom_Pro tag Med4 to Profesio // Ide arriba

Uso un Combobox para seleccionar la formar de filtrar, para que muestre los datos Xbrowse, pero que ademas me permita buscar digitando el Nombre, para el primero indice me funciona bien, pero para los 2 siguientes indices, a digitar no busca, ya que tengo un campo antes del nombre "S" + Nombre.

Desde ya muchas gracias.

Muchos Saludos.
Anonio

Dejo el Codigo:
Code: Select all  Expand view

...
..
            Abre_dbf("Profesio",1,.f.,"")
            inde on Nom_Pro tag Med2 to Profesio
            inde on Est_Pro+Nom_Pro tag Med3 to Profesio
            inde on Ate_Hor+Nom_Pro tag Med4 to Profesio
            Close Data
....
....
....
.. Para Cambiar Filtro del Combobox.
Function Filtra_Pro(nP,oBrw)

         Sele Profe
         Set Order to
         Do Case
                        Case nP >= 1 .and. nP <= 3
                                Do Case
                                        Case nP == 1
                                                DbSetOrder(2)
                                        Case nP == 2
                                                cVar:="S"
                                                cVar1:="S"
                                                DbSetOrder(3)
                                        Case nP == 3
                                                DbSetOrder(3)
                                                cVar:=" "
                                                cVar1:="N"

                             EndCase
                        Other
                                        DbSetOrder(4)
                                        cVar:="S"
                                        cVar1:="S"
            EndCase
            If nP#1
                    Profe->(ORDSCOPE(0, NIL )) // reset
                    Profe->(ORDSCOPE(1, NIL )) // reset
                Profe->(OrdScope(TOPSCOPE, cVar))
                Profe->(OrdScope(BOTTOMSCOPE, cVar1))
            Endif
        Profe->(DbGotop())
        oBrw:Update()
        oBrw:Refresh()

            Return  .T.


.. Xbrowse

Function Activa_Profe()
    Local oDlg1, oBrw, oFont1,oFont2, oTitu1,oTitu2,oFont3,aStruc,oSay1,oSay2,oGet1,oFont4,oFont5,oTitu3
        Local nPro:=1,  aEstado := {},Estado1:=""


        AADD( aEstado,{"TODOS        "})
        AADD( aEstado,{"SOLO VIGENTES"})
        AADD( aEstado,{"DESACTIVADOS "})
        AADD( aEstado,{"SOLO AGENDA  "})




        Abre_dbf("Profesio",1,.f.,"Profe")
      Set inde to Profesio
      DbSetorder(2)

      Profe->(DbGotop())


     DEFINE FONT oFont  NAME "TAHOMA" SIZE 0,-14
     DEFINE FONT oFont1 NAME 'TAHOMA' SIZE 0,24   BOLD
     DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0,-12  BOLD
     DEFINE FONT oFont3 NAME 'TAHOMA' SIZE 0,18   BOLD
     DEFINE FONT oFont7 NAME "TAHOMA" SIZE 0,-14  BOLD


     DEFINE DIALOG oDlg1 SIZE 550,570 PIXEL FONT oFont3   STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
     @ 00,35  SAY otitu1 PROMPT " MAESTRO DE PROFESIONALES " PIXEL OF oDlg1 COLORS RGB(12, 135, 27)   FONT oFont1

     @ 016,103 SAY "Seleccione"   SIZE 80,10 PIXEL OF oDlg1  RIGHT  FONT oFont1
     @ 016,190 ComboBox oGet1 Var nPro Items ArrTranspose(aEstado)[1] SIZE 70,200 PIXEL OF oDlg1  COLORS RGB(55, 255, 153)     FONT oFont2;
                         ON CHANGE ((Estado1:=ArrTranspose(aEstado)[1][oGet1:nAt]),IF(!Filtra_Pro(@nPro,oBrw),(MsgStop("TODO BIEN"),oBrw:Setfocus(),.F.), (oBrw:Refresh(),oBrw:Setfocus(), .T.) ))

     @ 30,10 XBROWSE oBrw SIZE 300,-35 PIXEL OF oDlg1 DATASOURCE "Profe" ;
            HEADERS 'Nombre del Profesional','Especialidad','Vigencia','Agenda';
            COLUMNS 'Nom_Pro','Tip_Esp','Est_Pro','Ate_Hor';
            PICTURES "@!","@!" ,"!","!";
            COLSIZES 280, 85, 70, 70;
      CELL LINES AUTOSORT NOBORDER;
                             oBrw:nMarqueeStyle :=MARQSTYLE_HIGHLROW
                             oBrw:nColDividerStyle := LINESTYLE_RAISED
                             oBrw:nRowDividerStyle := LINESTYLE_RAISED
                                 oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
                                 oBrw:nOpacity    := 230
                                 oBrw:nHeaderHeight      := 35
                                 oBrw:nFreeze       := 2

                                 oBrw:lSeekBar:= .t.

                                 oBrw:bClrStd  := { || If( Eval( oBrw:bKeyNo,,oBrw1) % 2 == 0, { CLR_BLACK, RGB( 198, 255, 198 ) },;
                                          { CLR_BLACK, RGB( 232, 255, 232 ) } ) }    // Efecto Cebra
                                 oBrw:aCols[ 1 ]:oDataFont := oFont7

                                 oBrw:bClrStd       := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }
                                 oBrw:bClrSelFocus  := {|| { nRGB(  255,  255,  255), nRGB(102, 178, 255) } }
                                 oBrw:bClrSel       := {|| { nRGB(  0,  0,255), nRGB(241,222,088) } }  // para barra de linea selecc cuando el control no tiene el foco
                                 oBrw:lAutoSort := .t.
                                 oBrw:lFooter := .f.
                                 oBrw:lHScroll := .f.
                             oBrw:lIncrFilter   := .F.
                             oBrw:lSeekWild     := .F.                   &&  .T. Busca Contenido, .F. Que comience con lo que digita
                                 oBrw:SetStyle( 2018)
                                 oBrw:nColorPen := CLR_RED
                                 oBrw:bChange := {|| oBrw:Refresh() }
                                 oBrw:aCols[1]:bClrHeader := { || { CLR_HRED,CLR_WHITE } }       // Aplico Color a Una Columna
                                 oBrw:aCols[ 1 ]:oHeaderFont :=  oFont7                  // Aplico Font a una Columna
                                 oBrw:aCols[ 3]:nDataStrAlign := AL_CENTER
                                 oBrw:aCols[ 4]:nDataStrAlign := AL_CENTER

                             WITH OBJECT oBrw:Vigencia
                                        :bLDClickData  := { || Cambia_Esta(), oBrw:Refresh() }      // Permite Seleccionar Sobre una Celda
                                 END WITH

                                WITH OBJECT oBrw:Agenda
                                   :bLDClickData  := { || Cambia_Agen(), oBrw:Refresh() }
                                END WITH


                                  oBrw:CreateFromCode()


    @ 253,90 BTNBMP SIZE 30, 30 PROMPT "SALIR"  OF oDlg1 PIXEL 2007 Resource "#8002"  FONT oFont7 ;
            ToolTip  "SALIR DEL SISTEMA";
            ACTION oDlg1:End()


   ACTIVATE DIALOG oDlg1 CENTERED  ON INIT (oBrw:SetFocus())


     RELEASE FONT oFont,oFont1,oFont7,oFont3,oFont2

     Close all

     Return nil





 
Last edited by remtec on Sun Jan 19, 2020 2:41 pm, edited 2 times in total.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Busqueda Incremental Xbrowse

Postby artu01 » Fri Jan 17, 2020 4:07 pm

Hola remtec
no entendi bien donde va la 'S' pero podria ayudarte asi:

Code: Select all  Expand view

inde on 'S'+Est_Pro+Nom_Pro tag Med3 to Profesio // Aqui he tenido que agregar un campo por tipo+nombre
inde on 'S'+Ate_Hor+Nom_Pro tag Med4 to Profesio // Ide arriba
 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 397
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Ayuda Busqueda Incremental Xbrowse

Postby remtec » Fri Jan 17, 2020 6:09 pm

Hola Artu01

Muchas gracias por responder.

Lo de la “S” es un ejemplo el índice está bien, solo q cuando debo buscar en forma incremental, en los índices 2 y 3,el usuario digitara un nombre, pero el índice está compuesto por 2 Campos.

Espero haberte dejado más claro mi problema.

Muchos saludos
Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Busqueda Incremental Xbrowse ?

Postby remtec » Fri Jan 17, 2020 11:23 pm

Hola Amigos

Alguna idea??

Saludos
Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Busqueda Incremental Xbrowse ?

Postby artu01 » Fri Jan 17, 2020 11:49 pm

Remtec:
y has intentado ponerle esto
Code: Select all  Expand view


            If nP#1
                    Profe->(ORDSCOPE(0, NIL )) // reset
                    Profe->(ORDSCOPE(1, NIL )) // reset
                Profe->(OrdScope(TOPSCOPE, cVar))
                Profe->(OrdScope(BOTTOMSCOPE, cVar1))
                Profe->(Dbseek(cVar))
            else
               Profe->(DbGotop())
            Endif
       
        oBrw:Update()
        oBrw:Refresh()

 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 397
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Ayuda Busqueda Incremental Xbrowse ?

Postby remtec » Sat Jan 18, 2020 12:38 am

Hola Artu01

Muchas gracias por responder.

Lo q me indicas no es lo q necesito, la búsqueda incremental se va realizando en la medida que el usuario va digitando.
Solo q en mi caso, a esta digitacion se debe anteponer una variable q trae un valor al ingresar al Xbrowse, por lo q la búsqueda debe hacerla así: Variable + dato digitado.

Pienso q no debe ser tan complicado, solo q para mi no logre encontrar la forma.
Con Set Filter, me funcionaba, pero al cambiar a Ordscooe, tuve q crear indices nuevos.

Muchos Saludos.
Antonio.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby remtec » Mon Jan 20, 2020 3:00 pm

Hola Amigos,

Alguna idea, esto complicado con este problema?

Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby FranciscoA » Sat Jan 25, 2020 9:32 pm

Hola Antonio.
Creo que de esta forma podés conseguir lo que buscas:

Code: Select all  Expand view
      :lSeekBar       := .T.
       :lIncrFilter    := .F.
       :lSeekWild      := .T.  
 

Intentalo.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby FranciscoA » Sat Jan 25, 2020 9:39 pm

Por otra parte, hice pruebas utilizando los siguientes pequeños cambios en tu codigo:
//Para Cambiar Filtro del Combobox.
Code: Select all  Expand view
//-----------------------------------------//
Function Filtra_Pro(nP,oBrw)
LOCAL cVar, cVar1

   Sele Profe
   Set Order to

   Do Case
   Case nP >= 1 .and. nP <= 3
       Do Case
       Case nP == 1     //TODOS
           ORDSETFOCUS("MED2")
           Profe->(OrdScope(TOPSCOPE, NIL))
           Profe->(OrdScope(BOTTOMSCOPE, NIL))
       Case nP == 2     //SOLO VIGENTES
           ORDSETFOCUS("MED3")
           cVar  := "S"
           cVar1 := "S"
       Case nP == 3     //DESACTIVADOS
           ORDSETFOCUS("MED3")
           cVar  := "N"
           cVar1 := "N"
       EndCase
   Other        //SOLO AGENDA
       ORDSETFOCUS("MED4")
       cVar  := "S"
       cVar1 := "S"
   EndCase

   If nP#1
      Profe->(OrdScope(TOPSCOPE, cVar))
      Profe->(OrdScope(BOTTOMSCOPE, cVar1))
   Endif

   Profe->(DbGotop())
   oBrw:Refresh()

Return  .T.
 

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby FranciscoA » Sat Jan 25, 2020 9:42 pm

Este es el código completo para las pruebas:
Code: Select all  Expand view
//--------------------------------------------------------//
Function Medicos()

REQUEST DBFCDX

   DbUseArea(.T.,"DBFCDX","PROFESIO","PROFE",.F.)
   index on FIELD->Nom_Pro tag Med2 to Profesio                    
   index on FIELD->Est_Pro + FIELD->Nom_Pro tag Med3 to Profesio  
   index on FIELD->Ate_Hor + FIELD->Nom_Pro tag Med4 to Profesio  
   PROFE->(dbcloseArea())

   Activa_Profe()
RETURN NIL

//Para Cambiar Filtro del Combobox.
//-----------------------------------------//
Function Filtra_Pro(nP,oBrw)
LOCAL cVar, cVar1

   Sele Profe
   Set Order to

   Do Case
   Case nP >= 1 .and. nP <= 3
       Do Case
       Case nP == 1     //TODOS
           ORDSETFOCUS("MED2")
           Profe->(OrdScope(TOPSCOPE, NIL))
           Profe->(OrdScope(BOTTOMSCOPE, NIL))
       Case nP == 2     //SOLO VIGENTES
           ORDSETFOCUS("MED3")
           cVar  := "S"
           cVar1 := "S"
       Case nP == 3     //DESACTIVADOS
           ORDSETFOCUS("MED3")
           cVar  := "N"
           cVar1 := "N"
       EndCase
   Other        //SOLO AGENDA
       ORDSETFOCUS("MED4")
       cVar  := "S"
       cVar1 := "S"
   EndCase

   If nP#1
      Profe->(OrdScope(TOPSCOPE, cVar))
      Profe->(OrdScope(BOTTOMSCOPE, cVar1))
   Endif

   Profe->(DbGotop())
   oBrw:Refresh()

Return  .T.

//-----------------------------------------//
Function Activa_Profe()
    Local oDlg1, oBrw, oFont, oFont1,oFont2,oFont3,oFont7, oTitu1,oTitu2,aStruc,oSay1,oSay2,oGet1,oTitu3
    Local nPro:=1,  aEstado := {},Estado1:=""

    AADD( aEstado,{"TODOS        "})
    AADD( aEstado,{"SOLO VIGENTES"})
    AADD( aEstado,{"DESACTIVADOS "})
    AADD( aEstado,{"SOLO AGENDA  "})

    USE PROFESIO ALIAS "PROFE" SHARED VIA "DBFCDX"
    Set index to Profesio
    DbSetorder(2)   //"MED3"

    Profe->(DbGotop())

    DEFINE FONT oFont  NAME "TAHOMA" SIZE 0,-14
    DEFINE FONT oFont1 NAME 'TAHOMA' SIZE 0,24   BOLD
    DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0,-12  BOLD
    DEFINE FONT oFont3 NAME 'TAHOMA' SIZE 0,18   BOLD
    DEFINE FONT oFont7 NAME "TAHOMA" SIZE 0,-14  BOLD

    DEFINE DIALOG oDlg1 SIZE 570,570 PIXEL FONT oFont3   STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
    @ 00,35  SAY otitu1 PROMPT " MAESTRO DE PROFESIONALES " PIXEL OF oDlg1 COLORS RGB(12, 135, 27)   FONT oFont1

    @ 016,103 SAY "Seleccione"   SIZE 80,10 PIXEL OF oDlg1  RIGHT  FONT oFont1
    @ 016,190 ComboBox oGet1 Var nPro Items ArrTranspose(aEstado)[1] SIZE 70,200 PIXEL OF oDlg1  FONT oFont2;  // COLORS RGB(55, 255, 153)
              ON CHANGE ((Estado1:=ArrTranspose(aEstado)[1][oGet1:nAt]),IF(!Filtra_Pro(@nPro,oBrw),(MsgStop("TODO BIEN"),oBrw:Setfocus(),.F.), (oBrw:Refresh(),oBrw:Setfocus(), .T.) ))

    @ 30,10 XBROWSE oBrw SIZE 300,-35 PIXEL OF oDlg1 DATASOURCE "Profe" ;
            HEADERS 'Nombre del Profesional','Especialidad','Vigencia','Agenda';
            COLUMNS 'Nom_Pro','Tip_Esp','Est_Pro','Ate_Hor';
            PICTURES "@!","@!" ,"!","!";
            COLSIZES 180, 150, 120, 70;
            CELL LINES AUTOSORT NOBORDER

    WITH OBJECT oBrw
       :nMarqueeStyle  := MARQSTYLE_HIGHLROW
       :bClrHeader     := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
       :nHeaderHeight  := 35
       :nFreeze        := 2
       :lSeekBar       := .T.
       :lIncrFilter    := .F.
       :lSeekWild      := .T.  
       :lFooter  := .f.
       :lHScroll := .f.

       :nOpacity       := 230
       :SetStyle( 2018)
       :nColorPen      := CLR_RED

       :aCols[1]:oDataFont     := oFont7
       :aCols[1]:bClrHeader    := { || { CLR_HRED,CLR_WHITE } }       // Aplico Color a Una Columna
       :aCols[1]:oHeaderFont   :=  oFont7                  // Aplico Font a una Columna
       :aCols[3]:nDataStrAlign := AL_CENTER
       :aCols[4]:nDataStrAlign := AL_CENTER

       :CreateFromCode()
    END

    @ 253,90 BTNBMP SIZE 30, 30 PROMPT "SALIR"  OF oDlg1 PIXEL 2007  FONT oFont7 ;
            ToolTip  "SALIR DEL SISTEMA";
            ACTION oDlg1:End()

   ACTIVATE DIALOG oDlg1 CENTERED  ON INIT (oBrw:SetFocus())

   RELEASE FONT oFont,oFont1,oFont2,oFont3,oFont7
   Close all
   Ferase(".\profesio.cdx")

Return nil
 
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby remtec » Mon Jan 27, 2020 2:33 pm

Hola Fracisco,

Como estas, como siempre muchas gracias por tu ayuda.

He ejecutado tu codigo y lamentablemente sigo teniendo el mismo problema.

Como ves los indices Med3 y Med4, estan compuestos por 2 campos, el Xbrowse filtra bien, pero mi problemas es que al realizar Busqueda Incremental, mientras el usuario Digita el nombre del profesional que desea seleccionar, esta no se realiza, ya que en la busqueda, solo tiene el dato de lo digitado, pero su archivo indice tiene un campo antes que es Character, de lago 1, para mi caso, estos llevan "S" o "N", en la base y en el Xbrowse al buscar, tendria que anteponer este valor en la busqueda.

Muchos Saludos y mil gracias.

Antonio

FranciscoA wrote:Este es el código completo para las pruebas:
Code: Select all  Expand view
//--------------------------------------------------------//
Function Medicos()

REQUEST DBFCDX

   DbUseArea(.T.,"DBFCDX","PROFESIO","PROFE",.F.)
   index on FIELD->Nom_Pro tag Med2 to Profesio                    
   index on FIELD->Est_Pro + FIELD->Nom_Pro tag Med3 to Profesio  
   index on FIELD->Ate_Hor + FIELD->Nom_Pro tag Med4 to Profesio  
   PROFE->(dbcloseArea())

   Activa_Profe()
RETURN NIL

//Para Cambiar Filtro del Combobox.
//-----------------------------------------//
Function Filtra_Pro(nP,oBrw)
LOCAL cVar, cVar1

   Sele Profe
   Set Order to

   Do Case
   Case nP >= 1 .and. nP <= 3
       Do Case
       Case nP == 1     //TODOS
           ORDSETFOCUS("MED2")
           Profe->(OrdScope(TOPSCOPE, NIL))
           Profe->(OrdScope(BOTTOMSCOPE, NIL))
       Case nP == 2     //SOLO VIGENTES
           ORDSETFOCUS("MED3")
           cVar  := "S"
           cVar1 := "S"
       Case nP == 3     //DESACTIVADOS
           ORDSETFOCUS("MED3")
           cVar  := "N"
           cVar1 := "N"
       EndCase
   Other        //SOLO AGENDA
       ORDSETFOCUS("MED4")
       cVar  := "S"
       cVar1 := "S"
   EndCase

   If nP#1
      Profe->(OrdScope(TOPSCOPE, cVar))
      Profe->(OrdScope(BOTTOMSCOPE, cVar1))
   Endif

   Profe->(DbGotop())
   oBrw:Refresh()

Return  .T.

//-----------------------------------------//
Function Activa_Profe()
    Local oDlg1, oBrw, oFont, oFont1,oFont2,oFont3,oFont7, oTitu1,oTitu2,aStruc,oSay1,oSay2,oGet1,oTitu3
    Local nPro:=1,  aEstado := {},Estado1:=""

    AADD( aEstado,{"TODOS        "})
    AADD( aEstado,{"SOLO VIGENTES"})
    AADD( aEstado,{"DESACTIVADOS "})
    AADD( aEstado,{"SOLO AGENDA  "})

    USE PROFESIO ALIAS "PROFE" SHARED VIA "DBFCDX"
    Set index to Profesio
    DbSetorder(2)   //"MED3"

    Profe->(DbGotop())

    DEFINE FONT oFont  NAME "TAHOMA" SIZE 0,-14
    DEFINE FONT oFont1 NAME 'TAHOMA' SIZE 0,24   BOLD
    DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0,-12  BOLD
    DEFINE FONT oFont3 NAME 'TAHOMA' SIZE 0,18   BOLD
    DEFINE FONT oFont7 NAME "TAHOMA" SIZE 0,-14  BOLD

    DEFINE DIALOG oDlg1 SIZE 570,570 PIXEL FONT oFont3   STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
    @ 00,35  SAY otitu1 PROMPT " MAESTRO DE PROFESIONALES " PIXEL OF oDlg1 COLORS RGB(12, 135, 27)   FONT oFont1

    @ 016,103 SAY "Seleccione"   SIZE 80,10 PIXEL OF oDlg1  RIGHT  FONT oFont1
    @ 016,190 ComboBox oGet1 Var nPro Items ArrTranspose(aEstado)[1] SIZE 70,200 PIXEL OF oDlg1  FONT oFont2;  // COLORS RGB(55, 255, 153)
              ON CHANGE ((Estado1:=ArrTranspose(aEstado)[1][oGet1:nAt]),IF(!Filtra_Pro(@nPro,oBrw),(MsgStop("TODO BIEN"),oBrw:Setfocus(),.F.), (oBrw:Refresh(),oBrw:Setfocus(), .T.) ))

    @ 30,10 XBROWSE oBrw SIZE 300,-35 PIXEL OF oDlg1 DATASOURCE "Profe" ;
            HEADERS 'Nombre del Profesional','Especialidad','Vigencia','Agenda';
            COLUMNS 'Nom_Pro','Tip_Esp','Est_Pro','Ate_Hor';
            PICTURES "@!","@!" ,"!","!";
            COLSIZES 180, 150, 120, 70;
            CELL LINES AUTOSORT NOBORDER

    WITH OBJECT oBrw
       :nMarqueeStyle  := MARQSTYLE_HIGHLROW
       :bClrHeader     := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
       :nHeaderHeight  := 35
       :nFreeze        := 2
       :lSeekBar       := .T.
       :lIncrFilter    := .F.
       :lSeekWild      := .T.  
       :lFooter  := .f.
       :lHScroll := .f.

       :nOpacity       := 230
       :SetStyle( 2018)
       :nColorPen      := CLR_RED

       :aCols[1]:oDataFont     := oFont7
       :aCols[1]:bClrHeader    := { || { CLR_HRED,CLR_WHITE } }       // Aplico Color a Una Columna
       :aCols[1]:oHeaderFont   :=  oFont7                  // Aplico Font a una Columna
       :aCols[3]:nDataStrAlign := AL_CENTER
       :aCols[4]:nDataStrAlign := AL_CENTER

       :CreateFromCode()
    END

    @ 253,90 BTNBMP SIZE 30, 30 PROMPT "SALIR"  OF oDlg1 PIXEL 2007  FONT oFont7 ;
            ToolTip  "SALIR DEL SISTEMA";
            ACTION oDlg1:End()

   ACTIVATE DIALOG oDlg1 CENTERED  ON INIT (oBrw:SetFocus())

   RELEASE FONT oFont,oFont1,oFont2,oFont3,oFont7
   Close all
   Ferase(".\profesio.cdx")

Return nil
 
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby FranciscoA » Mon Jan 27, 2020 10:31 pm

Este es el resultado del codigo ejemplo. Recuerda que no se usa lIncrFilter, solamente lSeekWild.
Image
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby FranciscoA » Mon Jan 27, 2020 10:36 pm

su archivo indice tiene un campo antes que es Character, de lago 1, para mi caso, estos llevan "S" o "N", en la base y en el Xbrowse al buscar, tendria que anteponer este valor en la busqueda.

Estoy de acuerdo.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby remtec » Thu Jan 30, 2020 5:38 pm

Hola Fracisco,

Como siempre muchas gracias por tu ayuda y precocupacion.

No he respondido antes, ya que me he dado vueltas probando y no logro solucionar el problema, aunque tu me muestras que a ti te funciona, pues bien, este mismo codigo a mi no me funciona.

Por este motivo me he tomado la atribución de subir a este link el codigo que a ti te funciona y a mi no, pero ademas he subido el archivo con el que yo realizo las pruebas.

Que error cometo yo, estos dias no di con el problema, aunque a tu codigo la unica modificacion es agregarle las primeras lineas:

#include "FiveWin.ch"
#include "xbrowse.ch"
#DEFINE TOPSCOPE 0
#DEFINE BOTTOMSCOPE 1

Desde ya muchos Saludos.

Antonio

En este link, se encuentra el Prg y la Dbf.:

https://drive.google.com/drive/folders/ ... wsr_yvdlJJ
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Busqueda Incremental Xbrowse ???

Postby karinha » Thu Jan 30, 2020 7:15 pm

Mira que fácil controlar tus índices usando el comando: MEMORY/TEMPORARY no hay limitaciones.

Code: Select all  Expand view

// \SAMPLES\REMTEC.PRG - Modificado en: 30/01/2020 - kapiabafwh@gmail.com

#include "FiveWin.ch"
#include "xbrowse.ch"

ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT

FUNCTION Medicos()

   RDDSETDEFAULT( "DBFCDX" )

   SET CENTURY ON
   SET DATE BRITISH
   SET TIME FORMAT TO "HH:MM:SS"
   SET EPOCH TO YEAR( DATE() ) - 30
   SET SOFTSEEK OFF
   SET WRAP ON
   SETCANCEL( .F. )
   SET CONFIRM OFF
   SET DELETED ON
   SET ESCAPE OFF
   SET EXACT ON
   SET EXCLUSIVE OFF
   SET MULTIPLE OFF

   Activa_Profe() // crea los indices en memoria ram, super rapido.

RETURN NIL

FUNCTION Activa_Profe()

   LOCAL oDlg1, oBrw, oFont, oFont1, oFont2, oFont3, oFont7, oTitu1, oTitu2, ;
         aStruc, oSay1, oSay2, oGet1, oTitu3
   LOCAL nPro := 1,  aEstado := {}, Estado1 := ""

   AADD( aEstado, { "TODOS        " } )
   AADD( aEstado, { "SOLO VIGENTES" } )
   AADD( aEstado, { "DESACTIVADOS " } )
   AADD( aEstado, { "SOLO AGENDA  " } )

   USE PROFESIO NEW SHARED ALIAS PROFE
   GO TOP

   DEFINE FONT oFont  NAME "TAHOMA" SIZE 0, - 14
   DEFINE FONT oFont1 NAME 'TAHOMA' SIZE 0,   24 BOLD
   DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0, - 12 BOLD
   DEFINE FONT oFont3 NAME 'TAHOMA' SIZE 0,   18 BOLD
   DEFINE FONT oFont7 NAME "TAHOMA" SIZE 0, - 14 BOLD

   DEFINE DIALOG oDlg1 SIZE 570, 570 PIXEL FONT oFont3                       ;
          STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )

   @ 00, 35  SAY otitu1 PROMPT " MAESTRO DE PROFESIONALES " PIXEL OF oDlg1   ;
      COLORS RGB( 12, 135, 27 )   FONT oFont1

   @ 016, 103 SAY "Seleccione" SIZE 80, 10 PIXEL OF oDlg1 RIGHT FONT oFont1

   @ 016, 190 ComboBox oGet1 Var nPro Items ArrTranspose( aEstado )[1]       ;
      SIZE 70, 200 PIXEL OF oDlg1  FONT oFont2 ;
      ON CHANGE ( ( Estado1 := ArrTranspose(aEstado )[1][oGet1:nAt] ),       ;
         IF( !Filtra_Pro(@nPro,oBrw ),(MsgStop("TODO BIEN" ),                ;
            oBrw:Setfocus(), .F. ), (oBrw:Refresh(),oBrw:Setfocus(), .T. ) ) )

   @ 30, 10 XBROWSE oBrw SIZE 300, - 35 PIXEL OF oDlg1 DATASOURCE "Profe"    ;
      HEADERS 'Nombre del Profesional', 'Especialidad', 'Vigencia', 'Agenda' ;
      COLUMNS 'Nom_Pro', 'Tip_Esp', 'Est_Pro', 'Ate_Hor'                     ;
      PICTURES "@!", "@!" , "!", "!"                                         ;
      COLSIZES 180, 150, 120, 70                                             ;
      CELL LINES AUTOSORT NOBORDER

   WITH OBJECT oBrw
      :nMarqueeStyle  := MARQSTYLE_HIGHLROW
      :bClrHeader     := {|| { nRGB( 140, 0, 0 ), nRGB( 231, 242, 255 ), } }
      :nHeaderHeight  := 35
      :nFreeze        := 2
      :lSeekBar       := .T.
      :lIncrFilter    := .F.
      :lSeekWild      := .T.
      :lFooter  := .F.
      :lHScroll := .F.

      :nOpacity       := 230
      :SetStyle( 2018 )
      :nColorPen      := CLR_RED

      :aCols[1]:oDataFont     := oFont7
      :aCols[1]:bClrHeader    := { || { CLR_HRED,CLR_WHITE } } // Aplico Color a Una Columna
      :aCols[1]:oHeaderFont   :=  oFont7                       // Aplico Font a una Columna
      :aCols[3]:nDataStrAlign := AL_CENTER
      :aCols[4]:nDataStrAlign := AL_CENTER

      :CreateFromCode()
   END

   @ 253, 90 BTNBMP SIZE 30, 30 PROMPT "SALIR"  OF oDlg1 PIXEL 2007  ;
      FONT oFont7 ToolTip  "SALIR DEL SISTEMA" ACTION oDlg1:End()

   ACTIVATE DIALOG oDlg1 CENTERED  ON INIT ( oBrw:SetFocus() )

   RELEASE FONT oFont, oFont1, oFont2, oFont3, oFont7

   CLOSE

RETURN nil

//-> Para Cambiar Filtro del Combobox.
FUNCTION Filtra_Pro( nP, oBrw )

   SELE Profe // USANDO COMANDO MEMORY/TEMPORARY - MUI BUENO E FACIL.

   DO CASE
   CASE nP >= 1 .AND. nP <= 3

      DO CASE
      CASE nP == 1     // TODOS

         INDEX ON FIELD->Nom_Pro TAG MED2 TO ARCHTEMP MEMORY

      CASE nP == 2     // SOLO VIGENTES

         INDEX ON FIELD->Est_Pro + FIELD->Nom_Pro TAG Med3 TO ARCHTEMP ;
            FOR FIELD->Est_Pro = "S" MEMORY

      CASE nP == 3     // DESACTIVADOS

         INDEX ON FIELD->Ate_Hor + FIELD->Nom_Pro TAG Med4 TO ARCHTEMP ;
            FOR FIELD->Ate_Hor = "N" MEMORY

      ENDCASE

      OTHERWISE        // SOLO AGENDA

      INDEX ON FIELD->Ate_Hor + FIELD->Nom_Pro TAG Med5 TO ARCHTEMP    ;
         FOR FIELD->Ate_Hor = "S" MEMORY

   ENDCASE

   GO TOP

   oBrw:Refresh()

RETURN  .T.

// FIN - kapiabafwh@gmail.com - I love FiveWin the best.
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7213
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 68 guests