Favor Ayuda para Usar Orden de Columnas en XBROWSE

Post Reply
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Favor Ayuda para Usar Orden de Columnas en XBROWSE

Post by remtec »

Amigos, muy buenas tardes.

Como siempre, necesito de su ayuda.

Siempre había usado Ordenar Columnas en Xbrowse pero con indices de un solo campo y sin filtro.

Tengo una DBF que tiene como indices 3 Campos: Tipo Aten, Tip_Pago y ( Codigo Arancel y Otro por Nombre)

Lo que necesito que el usuario pueda seleccionar si Ordena Por la Columna Codigo o Columna Nombre, el codigo que tengo no me permite mostrar adecuadamente.

Cada Acceso al Xbrowse, Trae Como Parametro " Tip_Ate " y "Tip_Pag".

Agregando a esto, necesito poder Buscar por Codigo o Nombre, pero considerando que el Indice esta compuesto por 3 campos.

Ademas, no muestra la Flecha que indica la Columna de Orden, como en todos los demas Xbrowse que uso, a pesar que decidi copiarlo de otro que si funciona con las flechas.

Desede ya, muchas gracias.

Muchos Saludos

Antonio.

Uso FWH 17.09
Dejo El codigo:

Code: Select all


// Asi Genero el Archivo Indice
            Abre_dbf("Aranpago",1,.t.,"")
            Pack
            inde on Tip_Ate+Tip_Pag+Cod_Ara tag Ara1 to Aranpago
            inde on Tip_Ate+Tip_Pag+Nom_Ara tag Ara2 to Aranpago
                        DbCloseArea()

//


     cAlias = "Aran"
   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
     DEFINE FONT oFont1 NAME 'TAHOMA' SIZE 0,24   BOLD
     DEFINE FONT oFont7 NAME "TAHOMA" SIZE 0,-14  BOLD

   DEFINE DIALOG oDlg33 SIZE 445,570 PIXEL FONT oFont  STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )

     @ 00,50 SAY otitu PROMPT " MAESTRO DE ARANCEL "  PIXEL OF oDlg33 COLORS RGB(12, 135, 27)   FONT oFont1

   @ 20,10 XBROWSE oBrw SIZE -10,-35 PIXEL OF oDlg33 DATASOURCE "ARAN" ;
            HEADERS 'Código', 'Nombre de Examen';
      COLUMNS "Cod_Ara",AnsiToOem("NOM_ARA");
            PICTURES "@!","@!" ;
            COLSIZES 70, 280;
      CELL LINES AUTOSORT NOBORDER;
                             oBrw:nMarqueeStyle := MARQSTYLE_HIGHLWIN7
                             oBrw:nColDividerStyle := LINESTYLE_INSET
                             oBrw:nRowDividerStyle := LINESTYLE_INSET
                                 oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
                                 oBrw:nOpacity    := 230
                                 oBrw:nHeaderHeight      := 25


                                 oBrw:bClrStd             := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }
                                 oBrw:bClrSelFocus        := {|| { nRGB(  255,  255,  255), nRGB(102, 178, 255) } }

   WITH OBJECT oBrw
            :lFooter := .t.
            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

            oCol := oBrw:aCols[ 1 ]
            ocol:cToolTip:="Clique para ordenar por CODIGO"
            oCol := oBrw:aCols[ 2 ]
            ocol:cToolTip:="Clique para ordenar por NOMBRE"


            oBrw:aCols[1]:bRClickHeader := {|| oBrw:Seek( "" ), oBrw:cFilterFld := "Ara1", oBrw:Refresh() }  // "Ara1" Es el nombre interno del Indice CDX
            oBrw:aCols[2]:bRClickHeader := {|| oBrw:Seek( "" ), oBrw:cFilterFld := "Ara2", oBrw:Refresh() }
            oCol:bLClickHeader:= {|| oBrw:Gotop() }
            /*
            oBrw:bKeyDown:={|nKey| iif(nKey=32.or.nKey=VK_RETURN, (Muestra_Pac(),oDlg33:End()),oBrw:Refresh())}
            oBrw:bLDblClick:={||(Muestra_Pac(),oDlg33:End()),oBrw:Refresh()}
            */
            oBrw:bChange := {|| oBrw:Refresh() }


      oBrw:CreateFromCode()
   END
   @ 10,10 SAY otitu1 PROMPT "Buscar : "  PIXEL OF oDlg33 COLORS RGB(12, 135, 27)   FONT oFont

   @ 10,40 SAY oBrw:oSeek  VAR oBrw:cSeek SIZE 100,10 PIXEL OF oDlg33 PICTURE "@!"  COLOR CLR_HRED,CLR_YELLOW

     @ 255,250 BTNBMP SIZE 30,30 PROMPT "SALIR" OF oDlg33 PIXEL 2007 Resource "#8101" FONT oFont7 ;
                    ToolTip  "SALIR DEL SISTEMA";
                    ACTION oDlg33:End()



     @ 255,60 BTNBMP  SIZE 30,30 PROMPT "SELEC" OF oDlg33 2007 Resource "#8002" FONT oFont7 ;
                    ToolTip "SELECCIONA EXAMEN" ;
                    ACTION (oDlg33:End())



   ACTIVATE DIALOG oDlg33 CENTERED

     RELEASE FONT oFont,oFont1,oFont7


     Return nil

 
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Favor Ayuda para Usar Orden de Columnas en XBROWSE

Post by FranciscoA »

remtec wrote: Tengo una DBF que tiene como indices 3 Campos: Tipo Aten, Tip_Pago y ( Codigo Arancel y Otro por Nombre)

Lo que necesito que el usuario pueda seleccionar si Ordena Por la Columna Codigo o Columna Nombre, el codigo que tengo no me permite mostrar adecuadamente.

Agregando a esto, necesito poder Buscar por Codigo o Nombre, pero considerando que el Indice esta compuesto por 3 campos.

// Asi Genero el Archivo Indice
            Abre_dbf("Aranpago",1,.t.,"")
            Pack
            inde on Tip_Ate+Tip_Pag+Cod_Ara tag Ara1 to Aranpago
            inde on Tip_Ate+Tip_Pag+Nom_Ara tag Ara2 to Aranpago
                        DbCloseArea()
Antonio.
Asi, al vuelo, tienes tres opciones para poder buscar por codigo o nombre:

1) Crear, ademas de los indices que detallas, un indice por el campo cod_ara y otro por el campo nom_ara.

Code: Select all

  // Asi Genero el Archivo Indice
            Abre_dbf("Aranpago",1,.t.,"")
            Pack
            inde on Tip_Ate+Tip_Pag+Cod_Ara tag Ara1 to Aranpago
            inde on Tip_Ate+Tip_Pag+Nom_Ara tag Ara2 to Aranpago

            index on field->cod_ara...
            index on field->nom_ara...
                        DbCloseArea()
 
2) Crear, antes de cargar el xbrowse, esos dos indices adicionales de manera temporal.
Estos indices se eliminan automaticamente cuando los dejas de usar.

Code: Select all

   Index on field->Cod_ara   to "Ind1" TEMPORARY ADDITIVE
   Index on field->Nom_ara to "Ind2" TEMPORARY ADDITIVE
 
3) No crear los indices sugeridos y utilizar:

Code: Select all

      oBrw:lIncrFilter      := .T.
      oBrw:lSeekWild       := .T. 
 
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Favor Ayuda para Usar Orden de Columnas en XBROWSE

Post by remtec »

Hola Francisco

Un placer saludarte y muchas gracias por tu respuesta.

Te explico, las 2 opciones que me indicas de usar Cod_Ara y Nom_ara como indices individuales, no me sirver.

Tengo El Campo Tip_Ate = Me indica el tipo de Examen (Rx, Eco, Scan, Lab)
Tip_Pag = Este Campo registra los diferentes tipos de Pagos para un MISMO Codigo Cod_Ara.
Cod_Ara = Este campo tiene el Codigo del Examen y existira tantas veces como Tip_Pag diferentes tenga.

Ej. Tip_Ate Tip_Pag Codigo Costo
EC PART 0401010 12.000
EC CRUZ 0401010 4.000
EC FONA 0401020 8.000
RX PART 0403001 22.000
RX FONA 0403001 7.000


Para Registrar un Exmamen, debo obtener El precio que corresponde al Codigo tipo de Pago del Paciente.

En la Opcion 3, el Xbrowse es muy lento, ademas muestra todos los examenes no importando el Tip_Pag.

Lo que necesito es que Xbrowse, Solo muestre los Examenes Correspondientes al Tip_Ate y Tip_Pag requerido y que me permita buscar mientras digito el Codigo y Nombre del Examen.

Muchos Saludos
Antonio
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Favor Ayuda para Usar Orden de Columnas en XBROWSE

Post by FranciscoA »

Lo que necesito es que Xbrowse, Solo muestre los Examenes Correspondientes al Tip_Ate y Tip_Pag requerido
Hola Antonio. Intenta con la siguiente muestra:

Code: Select all

[b]#DEFINE TOPSCOPE           0
#DEFINE BOTTOMSCOPE     1
[/b]
function MyFunct()
local cTipoAte := space(5), cTipoPag := space(5)   // o los space que correspondan
local  oTipoAte , oTipoPag

(cAlias)->( ORDSETFOCUS("Ara1")  )   //o el que corresponda

@ 5,  5 GET oTipoAte VAR cTipoAte....
@10, 5 GET oTipoPag VAR cTipoPag....
...
...
[b]PonerScope(cAlias,  cTipoAte + cTipoPag)[/b]
...

@15,5 XBROWSE... ALIAS cAlias...
...
etc...


[b]function PonerScope(cAlias,cVar)
(cAlias)->(OrdScope(TOPSCOPE, cVar))
(cAlias)->(OrdScope(BOTTOMSCOPE, cVar))
(cAlias)->(DbGotop())
Return nil
[/b]
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

Re: Favor Ayuda para Usar Orden de Columnas en XBROWSE

Post by armando.lagunas »

Hola:

prueba con esto

Code: Select all

oBrw:aCols[ x ]:cSortOrder := "Aran1"

Code: Select all

oBrw:aCols[ x ]:cSortOrder := "Aran2"
donde x es la columna del xbrowse


Saludos
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Favor Ayuda para Usar Orden de Columnas en XBROWSE

Post by remtec »

Hola Francisco y Armando.

Muchas gracias por su ayuda.

Para realizar el Filtro y poder seleccionar en las Cabeceras del Xbrowse, tuve que usar ambas soluciones y esto funciona bien.

El problema que ahora no me permite realizar búsqueda ni por Codigo, ni Nombre del Examen.

En espera de sus comentarios.

Muchos Saludos.

Antonio

Dejo el Código Actual:

Code: Select all

     @ 00,50 SAY otitu PROMPT " MAESTRO DE ARANCEL DBF "  PIXEL OF oDlg33 COLORS RGB(12, 135, 27)   FONT oFont1

   @ 20,10 XBROWSE oBrw SIZE -10,-35 PIXEL OF oDlg33 DATASOURCE "ARAN" ;
            HEADERS 'Código', 'Nombre de Examen';
      COLUMNS "Cod_Ara",AnsiToOem("NOM_ARA");
            PICTURES "@!","@!" ;
            COLSIZES 70, 280;
      CELL LINES AUTOSORT NOBORDER;
                             oBrw:nMarqueeStyle := MARQSTYLE_HIGHLWIN7
                             oBrw:nColDividerStyle := LINESTYLE_INSET
                             oBrw:nRowDividerStyle := LINESTYLE_INSET
                                 oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
                                 oBrw:nOpacity    := 230
                                 oBrw:nHeaderHeight      := 25


                                 oBrw:bClrStd             := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }
                                 oBrw:bClrSelFocus        := {|| { nRGB(  255,  255,  255), nRGB(102, 178, 255) } }

   WITH OBJECT oBrw
             oBrw:lAutoSort := .t.
            :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

            oCol := oBrw:aCols[ 1 ]
            ocol:cToolTip:="Clique para ordenar por CODIGO"
            oCol := oBrw:aCols[ 2 ]
            ocol:cToolTip:="Clique para ordenar por NOMBRE"
            

            oBrw:aCols[1]:cSortOrder := "Ara1"
            oBrw:aCols[2]:cSortOrder := "Ara2"


            oBrw:aCols[1]:bRClickHeader := {|| oBrw:Seek( ""), oBrw:cFilterFld := "Ara1", oBrw:Refresh() }
            oBrw:aCols[2]:bRClickHeader := {|| oBrw:Seek( ""), oBrw:cFilterFld := "Ara2", oBrw:Refresh() }
            oCol:bLClickHeader:= {|| oBrw:Gotop() }
                        */

            
            oBrw:bChange := {|| oBrw:Refresh() }


                        oBrw:CreateFromCode()
   END
   @ 10,10 SAY otitu1 PROMPT "Buscar : "  PIXEL OF oDlg33 COLORS RGB(12, 135, 27)   FONT oFont

   @ 10,40 SAY oBrw:oSeek  VAR oBrw:cSeek SIZE 100,10 PIXEL OF oDlg33 PICTURE "@!"  COLOR CLR_HRED,CLR_YELLOW

   @ 255,250 BTNBMP SIZE 30,30 PROMPT "SALIR" OF oDlg33 PIXEL 2007 Resource "#8101" FONT oFont7 ;
                    ToolTip  "SALIR DEL SISTEMA";
                    ACTION oDlg33:End()



     @ 255,60 BTNBMP  SIZE 30,30 PROMPT "SELEC" OF oDlg33 2007 Resource "#8002" FONT oFont7 ;
                    ToolTip "SELECCIONA EXAMEN" ;
                    ACTION (oDlg33:End())



   ACTIVATE DIALOG oDlg33 CENTERED

 
Post Reply