Page 1 of 2

¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Fri Oct 22, 2021 8:26 pm
by JoseAlvarez
Saludos amigos del foro fivewin.

Tengo un listbox con xbrowse a partir de un arreglo de memoria. Quiero hacer una búsqueda incremental sobre la primera columna que es tipo alfanumerico.

Me gustaria hacerla a medida que se va escribiendo en un campo GET.

De verdad no tengo idea de como se hace y lo que he visto en los posts del foro no lo he podido implementar porque no es mucho lo que logro entender.

Alguien que me de la mano?

Gracias adelantadas ...

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Fri Oct 22, 2021 9:35 pm
by cnavarro
Jose, busca en el foro AUTOSORT ( para activar la búsqueda ) y también oSeek ( para ir viendo lo que tecleas ), hay muchos ejemplos

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Fri Oct 22, 2021 10:09 pm
by JoseAlvarez
Hola cristobal

Sí, ya vi eso que me dices, y he trarado de implementarlo, pero no se de que se trata ni cual es su funcion, y ponerlos a ciegas e ir desubriendo por ensayo y error cuando, donde y para que aplicarlas pues, es muy cuesta arriba.
Igual sigo intentando...

Gracias amigo ¡

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Fri Oct 22, 2021 11:18 pm
by cnavarro
Jose, haz un pequeño ejemplo sobre el que trabajar y lo vamos "arreglando", es realmente sencillo

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Fri Oct 22, 2021 11:24 pm
by JoseAlvarez
Ok cristobal,

Voy a poner el que estoy haciendo, esta muy basico

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Fri Oct 22, 2021 11:29 pm
by karinha
José: Simples, Mira:

Code: Select all  Expand view

STATIC nOpcRadioBusq := 1 // Por Nombre del Cliente

FUNCTION JOSE_XBRW()

   LOCAL cAlias

   USE JOSE INDEX JOSE NEW ALIAS JOSE
   GO TOP

   cAlias := ALIAS()

   // RadioButtons...

   // Lisbox...

   // BUTTON Y ACTION:

   // etc...

   JOSE_CAMBIA_INDICE_XBRW( nOpcRadioBusq, cAlias, oLbx )

RETURN NIL

FUNCTION JOSE_CAMBIA_INDICE_XBRW( nOpcRadioBusq, cAlias, oLbx )

   LOCAL oDlg, oFont, oBrw, oSay, DBPESQ, cIndice, oSaida, nRecno, cResName
   LOCAL nKey := VK_ESCAPE, nColuna := 1, nProposta, aGrad, oBmp

   cResName := "LUPA2"

   IF nOpcRadioEnde == 4 //-> Por Endereco

      DbSelectArea( cAlias )    
      SET ORDER TO 05

      cIndice := OemToAnsi( "Endere‡o" )

      nColuna := 4

   ELSEIF nOpcRadioEnde == 3 //-> Por Cod Cliente

      DbSelectArea( cAlias )    
      SET ORDER TO 03

      cIndice := OemToAnsi( "C¢d. Cliente" )

      nColuna := 2

   ELSEIF nOpcRadioEnde == 2 //-> Por Proposta PROPOCOD

      DbSelectArea( cAlias )    
      SET ORDER TO 01

      cIndice := "Cod. Proposta"

      nColuna := 1

   ELSEIF nOpcRadioEnde == 1 //-> Por Nome CLIENTE

      DbSelectArea( cAlias )    
      SET ORDER TO 04

      cIndice := "Nome Cliente"

      nColuna := 3

   ENDIF

   GO TOP

   // Swap it to descending - Trocar para descendente
   SET DESCENDING OFF

   GO TOP

   DBPESQ := ALIAS()

   aGrad := { { 0.30, CLR_WHITE, CLR_WHITE },{ 0.50, CLR_WHITE, CLR_WHITE } }

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0, -14
                      //   800, 455(Altura)
   DEFINE DIALOG oDlg SIZE 1000, 500 PIXEL FONT oFont                        ;
      TITLE "PLENOIND: PESQUISA INCREMENTAL - Digite o Que Deseja Procurar"  ;
      GRADIENT aGrad

   oDlg:lHelpIcon := .F.
   oDlg:nSeeThroClr := 1

   /*
   @ 30, 10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg                          ;
      DATASOURCE "DBPESQ" AUTOCOLS AUTOSORT CELL LINES NOBORDER              ;
      HEADERS "Código:", "Nome:", "Endereço:", "Fantasia:", "Cnpj:", "Cpf:"  ;
      FIELDS ( cAlias )->CLIENCOD, ( cAlias )->CLIENTE, ( cAlias )->END_FAT, ;
             ( cAlias )->FANTASIA, ( cAlias )->CGC, ( cAlias )->CPF
   */


   @ 30,10 XBROWSE oBrw SIZE -10, -10 PIXEL OF oDlg                          ;
      DATASOURCE "DBPESQ" AUTOCOLS AUTOSORT CELL LINES NOBORDER              ;
      HEADERS "Proposta:", "Código:", "Nome:", "Endereço:", "Bairro:", "Cep:", "Uf:" ;
      FIELDS ( cAlias )->PROPOCOD, ( cAlias )->CLIENCOD,  ( cAlias )->CLIENTE,   ;
             ( cAlias )->END_PROP, ( cAlias )->BAIR_PROP, ( cAlias )->CEP_PROP,  ;
             ( cAlias )->CID_PROP, ( cAlias )->UF_PROP

   oBrw:cTooltip :={ "Click Para Pegar",                                     ;
                     "DADOS DO CLIENTE", 1, CLR_WHITE, CLR_HBLUE }

   // BACKGROUND 'ARANHA'

   // oBrw:RefreshCurrent()
   oBrw:l2007             := .F.
   oBrw:lFlatStyle        := .T.  // ??
   oBrw:SetFont( oFont )
   // oBrw:nHeaderLines        := 3
   // oBrw:nDataLines          := 3
   // oLbx:nColAct := 2     // Onde o Cursor Vai Iniciar na coluna wbrowse.prg
   oBrw:nColSel := nColuna // <n>  // Mister Nages - Perfect. Cursor inicia na xBrowse()
   /*
   oBrw:bClrSel = { || { CLR_WHITE, RGB( 0x33, 0x66, 0xCC ) } }
   cClrBack = Eval( oBrw:bClrSelFocus )[ 2 ]
   oBrw:bClrSelFocus = { || { CLR_WHITE, cClrBack } }
   oBrw:SetColor( CLR_BLACK, RGB( 232, 255, 232 ) )
   oCol:bLDClickData := { || Shellexecute( 0, "Open", oCol:Value ) }
   */


//   BrwColors( oBrw )

   WITH OBJECT oBrw

      oBrw:aCols[ 1 ]:nWidth := 60
      oBrw:lFlatStyle    := .T.

      // oBrw:lSeekBar := .T.
      // oBrw:lGetbar  := .T.
      oBrw:lIncrFilter := .T. // Liga o Filtro incremental
      oBrw:lSeekWild   := .T. // Liga a busca incremental
      // viewtopic.php?f=3&t=38397
      // Disable xbrowse search
      // oBrw:bSeek := { |c| .F. }

      oBrw:bKeyDown   := { |nKey| If( nKey == VK_RETURN, ( oDlg:End() ), nil ) }
      oBrw:bKeyChar   := { |nKey| If( nKey == VK_ESCAPE, ( oBrw:Seek( "" ), oDlg:End() ), nil ) }
      oBrw:bLDblClick    := { || cSeek := oBrw:aRow[ 2 ], oDlg:End() }

      oBrw:AutoFit() // Auto ajuste / ajuste automatico do xBrowse()
      // oBrw:cFilterFld := "END_PROP" // SE EU QUISER SOMENTE ENDERECO
      // oBrw:bClrEdits := { || { CLR_BLACK, CLR_YELLOW } }

      oBrw:CreateFromCode()

   END

   @ 10, 055 SAY "Digite o Que Deseja Procurar: " SIZE 120, 10 PIXEL OF oDlg ;
      COLOR CLR_CYAN, CLR_WHITE TRANSPARENT

   /*  // oLbxPePd:Seek("")
   @ 10, 150 SAY oBrw:oSeek PROMPT oBrw:cSeek PICTURE "@!" SIZE 120, 10      ;
      PIXEL OF oDlg COLOR CLR_CYAN, CLR_YELLOW FONT oFont BORDER
   */

   @ 10, 150 SAY oBrw:oSeek PROMPT oBrw:cSeek PICTURE "@!" UPDATE            ;
      OF oDlg PIXEL COLOR CLR_CYAN, CLR_WHITE FONT oFont SIZE 120, 10 BORDER

   @ 10, 270 SAY "Procure Por: "+cIndice + " <Back> Apaga" SIZE 150, 10 PIXEL OF oDlg          ;
      COLOR CLR_CYAN, CLR_WHITE TRANSPARENT

   WITH OBJECT oBrw:oSeek
      // oBrw:bLClicked     := { || nRecNo := ( cAlias )->( RecNo() ), oDlg:End() }
      oBrw:bLClicked     := { || oDlg:End() }
   END

   @ 1.5, 5.5 SAY "<ESC>" SIZE 50, 12 PIXEL OF oDlg COLOR CLR_CYAN, CLR_WHITE TRANSPARENT

   @ 0.5, 056 BITMAP oBmp RESOURCE cResName SIZE 50, 50 NO BORDER OF oDlg TRANSPARENT

   oBmp:cToolTip := "Pesquisa Incremental Por: " + cIndice

   @ 010, 005 BUTTONBMP oSaida PROMPT( "&Saida" ) ACTION( oDlg:End() )       ;
      RESOURCE "154" TEXTRIGHT SIZE 40, 12 PIXEL FONT oFont OF oDlg CANCEL

   oSaida:cToolTip := "Saida - Exit - Cancelar"

   //oLbxPePd:Seek("")
   ACTIVATE DIALOG oDlg CENTERED                                             ;
            ON INIT ( oBrw:cSeek(""), oBrw:SetFocus(), .F. )

   oFont:End()

   // Swap it to descending - Trocar para descendente
   SET DESCENDING ON

   CLOSE( DBPESQ )  // CLOSE FILTER - FECHO FILTRO DA XBROWSE()

   // REABRO O BANCO PARA REFRESCAR A LISTBOX ORIGINAL E POSICIONO O CURSOR

   USE CADPROPO ALIAS CADPROPO INDEX CADPROPO NEW SHARED
   SET ORDER TO 01
   SET DESCENDING ON
   GO TOP

   DBCADPROPO := ALIAS()

   SELECT( DBCADPROPO )

   oLbx:Refresh()

RETURN NIL
 


Regards, saludos.

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Sat Oct 23, 2021 12:05 am
by JoseAlvarez
Code: Select all  Expand view
c_Descripcion := 1
n_Cantidad    := 2

REDEFINE XBROWSE oBrwArticulos Id 10  DATASOURCE aArticulos              ;
                                      COLUMNS    2, 29                   ;
                                      HEADERS    "Descripcion"          ,;
                                                 "Cantidad"              ;
                                      FIELDSIZES  350,150                ;
                                      PICTURE     nil,"@E 9,999,999.99"  ;
                                      JUSTIFY     AL_LEFT               ,;
                                      AL_RIGHT                           ;
                                      CELL LINES                         ;
                                      FASTEDIT                           ;
                                      of oDlg_Articulos

                                     WITH object aArticulos
                                             
                                          oBrwArticulos :l2007                := .t.
                                          oBrwArticulos :lRecordSelector      := .t.
                                          :cFilterFld    := "DESCRIPCION"
                                          oBrwArticulos :aCols[c_Descripcion] :nHeadStrAlign := AL_CENTER
                                          oBrwArticulos :aCols[n_Cantidad]    :nHeadStrAlign := AL_CENTER
                                             
                                          oBrwArticulos :aCols[c_Descripcion] :oHeaderFont   := oFontHeader
                                          oBrwArticulos :aCols[n_Cantidad]    :oHeaderFont   := oFontHeader
                                           
                                          oBrwArticulos :oDataFonts           :=oFontData
                                         
                                    END

                                      WITH OBJECT oBrwArticulos:aCols[n_Cantidad]

                                         oCol         :=oBrwArticulos:aCols[n_Cantidad]
                                         :nEditType   := EDIT_GET
                                         oBrwArticulos:aCols[n_Cantidad]:bClrStd := ChangeColor(  )

                                     END

                                    oBrwArticulos:Refresh()


Cristobal, este es el xBrowse que estoy construyendo. Trabaja sobre un arreglo de memoria

Joao, voy a darle una mirada a tu codigo, aunque ya vi que trabajas con DBF y yo lo estoy haciendo con arreglos de memoria

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Sat Oct 23, 2021 1:22 pm
by JoseAlvarez
Amigos,
Aunque no se como funciona, ya logre hacer la busqueda, solo que lo hice "volando por instrumentos" , es decir a ciegas, no se que funcion hace cada una de las instrucciones que coloque, fijandome en las sugerencias de cristobal y joao.

lo unico que hice fue agregar esto:


.
.
.
oBrwArticulos :lAutoSort := .t.
oBrwArticulos :lIncrFilter := .t.
oBrwArticulos :lSeekWild := .t.
oBrwArticulos :Seek("")
.
.
.

REDEFINE SAY oBrwArticulos:oSeek ID 4004 PROMPT oBrwArticulos:cSeek PICTURE "@!" OF oDlg_Articulos FONT oFontSays COLOR CLR_HRED
oBrwArticulos:bChange := {|| oBrwArticulos:oSeek:Refresh() }
.
.
.
.

Activate dialog oDlg_Articulos on init (oBrwArticulos:cSeek( "" ), oBrwArticulos:SetFocus())
.



¿podrian por favor explicarme que hace cada una de ellas? aunque se puede inferir, seria bueno una explicacion mas detallada para saber como funcionan y como usarla mas adelante.

el caso es que esta funcionado solo "hacia adelante" mientras voy digitando las letras de busqueda, pero si quiero retroceder, al oprimir BACKSPACE me arroja este error



Application
===========
Path and name: C:\Neuro32\Neuro32.EXE (32 bits)
Size: 7,247,872 bytes
Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20170215)
FiveWin Version: FWHX 14.06
Windows version: 6.2, Build 9200

Time from start: 0 hours 1 mins 30 secs
Error occurred at: 23/10/2021, 09:15:43
Error description: Error BASE/1004 Class: 'NIL' has no exported method: CORDER
Args:
[ 1] = U

Stack Calls
===========
Called from: => CORDER( 0 )
Called from: c:\fwh\source\classes\xbrowse.prg => TXBROWSE:ARRAYINCRFILTER( 8466 )
Called from: c:\fwh\source\classes\xbrowse.prg => TXBROWSE:ARRAYINCRSEEK( 8369 )
Called from: c:\fwh\source\classes\xbrowse.prg => (b)TXBROWSE:SETARRAY( 4308 )
Called from: c:\fwh\source\classes\xbrowse.prg => TXBROWSE:SEEK( 6474 )
Called from: c:\fwh\source\classes\xbrowse.prg => TXBROWSE:KEYCHAR( 2495 )
Called from: => TWINDOW:HANDLEEVENT( 0 )
Called from: c:\fwh\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1733 )
Called from: c:\fwh\source\classes\xbrowse.prg => TXBROWSE:HANDLEEVENT( 12264 )
Called from: c:\fwh\source\classes\window.prg => _FWH( 3279 )
Called from: => DIALOGBOX( 0 )
Called from: c:\fwh\source\classes\dialog.prg => TDIALOG:ACTIVATE( 277 )
Called from: .\prg\Ajustes.PRG => FNCT_AJUSTES( 332 )
Called from: .\prg\Menus.PRG => (b)FBARRADEBOTONES( 388 )

a que se refiere con method: CORDER ????

otra cosa es que quisiera hacerlo con un campo GET y no con un say... se puede??

FW17.01 + xHarbour + BCC7.2 + Tdolphin

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Sat Oct 23, 2021 5:31 pm
by JoseAlvarez
LISTO amigos,

Gracias a Todos por sus aportes y ayuda.

Ya hice la busqueda, me funciona bien,
Lo unico es que quisiera hacerlo con un campo GET y no con say

Los usuarios de mi sistema ya estan acostumbrados a las busquedas con GET , este estilo de SAYS seguro traera inconformidad por aquello del costumbrismo y me pidiran que mantenga la misma linea y estilo. Ademas de que esteticamente no me gusta para nada.

alguna manera de hacerlo con un GET ?

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Sat Oct 23, 2021 6:49 pm
by artu01

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Sat Oct 23, 2021 11:06 pm
by JoseAlvarez


Gracias Artu01,

Ya revise y probe, funciona igual que el SAY, solo que aparece en el GET.

No es lo que quiero, no quisiera escribir "en el aire" sino dentro del get. Cuando lo hago, el browse no se mueve. Tengo que tipear fuera del browse para que se active la busqueda.

Creo que es por mi version de FW, 17.01

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Sun Oct 24, 2021 2:13 pm
by karinha
José, mira este ejemplo se te gusta? FiveWin és fácil, difícil és comprender el Silvio Falconi. jajajajajaja. Broma, broma.


Code: Select all  Expand view

// \samples\XBRWGET.PRG

#Include "FiveWin.ch"

#Define CLR_LGREEN     nRGB( 190, 215, 190 )
#Define CLR_SOFTYELLOW nRGB( 255, 251, 225 )

ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT

FUNCTION Main()

   LOCAL oDlg, oFont, oBrw, aCols, oGet, oCbx, cHead, aHead, aGrad, cTitle
   LOCAL cSeek := SPACE( 100 )

   SET DATE BRITISH
   SET CENTURY ON
   SET DELETED ON

   tGet():lDisColors  := .F.
   tGet():nClrTextDis := CLR_HBLUE
   tGet():nClrPaneDis := CLR_SOFTYELLOW

   SetGetColorFocus( CLR_LGREEN )

   FERASE( "CUSTOMER.CDX" )

   USE CUSTOMER VIA "DBFCDX"

   FW_CdxCreate()  // CREA TU PROPIO INDICE.

   SET ORDER TO TAG FIRST
   GO TOP

   aCols := {                                 ;
            { "FIRST",  "Nombre",,    120, }, ;
            { "LAST",   "Apellido",,  120, }, ;
            { "STREET", "Dirección",, 180, }, ;
            { "CITY",   "Ciudad",,    150, }, ;
            { "STATE",  "Estado",,     50, } }

   aHead := ArrTranspose( aCols )[ 2 ]
   cHead := "Nombre"

// aGrad := { { 0.30, CLR_BLACK, CLR_YELLOW},{ 0.50, CLR_YELLOW, CLR_BLACK } }
   aGrad := { { 0.30, CLR_CYAN, CLR_HCYAN  },{ 0.50, CLR_HCYAN, CLR_CYAN } }

   cTitle := "Busqueda Incremental Para José Alvarez"

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0, -14

   DEFINE DIALOG oDlg TITLE cTitle SIZE 800, 600 PIXEL TRUEPIXEL FONT oFont  ;
      GRADIENT aGrad

   oDlg:lHelpIcon := .F.

   @ 20, 20 COMBOBOX oCbx VAR cHead ITEMS aHead                              ;
      SIZE 150, 200 PIXEL OF oDlg                                            ;
      ON CHANGE ( oBrw:Seek( "" ),                                           ;
                  oBrw:cFilterFld := oBrw:oCol( cHead ):cExpr,               ;
                  oBrw:SetFocus() )

   @ 20, 300 GET oGet VAR cSeek SIZE 466, 24 PIXEL OF oDlg                   ;
      VALID( BUSCA_NOMBRE( cSeek, oBrw, oGet ) )
   // ON CHANGE... Funciona?

   @ 70, 20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg                          ;
      DATASOURCE "CUSTOMER" COLUMNS aCols                                    ;
      AUTOSORT CELL LINES NOBORDER

   WITH OBJECT oBrw

      :lIncrFilter := .T.
      :lSeekWild   := .T.

      :oSeek       := oGet

      :bKeyDown    := { |nKey| If( nKey == VK_RETURN, ( oDlg:End() ), NIL ) }
      :bKeyChar    := { |nKey| If( nKey == VK_ESCAPE, ( oBrw:Seek( "" ), oDlg:End() ), nil ) }
      :bLDblClick  := { || cSeek := oBrw:aRow[ 2 ], oDlg:End() }

      :CreateFromCode()

   END

   ACTIVATE DIALOG oDlg CENTERED                                             ;
      ON INIT ( oBrw:cSeek( "" ), oBrw:SetFocus(), .F. )

   RELEASE FONT oFont

RETURN NIL

FUNCTION BUSCA_NOMBRE( bSeek, oBrw, oGet )

   LOCAL ErroSeek := SPACE( 100 )

   SEEK( UPPER( bSeek ) )

   IF FOUND()

      oBrw:Refresh()
      oBrw:SetFocus()

   ELSE

      SET SOFTSEEK ON

      SEEK( UPPER( bSeek ) )

      oGet:VARPUT( ErroSeek )
      oGet:Refresh()

      SET SOFTSEEK OFF

   ENDIF

RETURN( .T. )

// FIN / END
 


Regards, saludos.

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Mon Oct 25, 2021 6:27 pm
by karinha
En mi humilde opinión, xBrowse () se está volviendo ilimitado. Simplemente fantástico.

https://imgur.com/fsPWkFW

Image

Regards, saludos.

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Thu Oct 28, 2021 4:51 pm
by JoseAlvarez
karinha wrote:En mi humilde opinión, xBrowse () se está volviendo ilimitado. Simplemente fantástico.

https://imgur.com/fsPWkFW

Image

Regards, saludos.


Joao, muchisimas gracias una vez mas por tu gentil ayuda,

Justo lo que queria!!

Agradecido, un abrazo.

Re: ¿Cómo hago una búsqueda incremental en xBrowse?

PostPosted: Wed Nov 03, 2021 10:09 am
by Ramón J.
Buenos días

João, me gusta mucho tu aplicación. Una pregunta: ¿tu aplicación también sirve para trabajar en red? Si es así, ¿cómo haces para que las búsquedas incrementales no se ralenticen ni se bloquee la aplicación? Verás, en mi aplicación cuando trabajas en modo local las búsquedas son rápidas, pero cuando cuando trabajas en red se ralentiza mucho e incluso a veces se bloquea y se cierra la aplicación.

El código de la búsqueda incremental en mi aplicación es este:

Code: Select all  Expand view

IF ! file ( CURDRIVE() +":"+cRuta+"\DATA\SATINDEX.DBF")
  msgstop("No se encontró la base de datos de SAT";
  )
  else
  USE ( CURDRIVE() +":"+cruta+"\DATA\SATINDEX.DBF") ALIAS "INDICE" index "SATINDEX" SHARED NEW
   ENDIF


SELE INDICE
INDICE->(dbgoTOP())

DEFINE DIALOG oDlg FROM 3, 3 TO 33, 100 TITLE "Mantenimiento de SAT"
oDlg:nStyle:=nAnd(oDlg:nStyle, nNOt(WS_SYSMENU))

@ 11,110 GET oGet VAR cSeek SIZE 250,10 PIXEL OF oDlg COLOR CLR_BLACK,CLR_YELLOW PICTURE '@!'
  oGet:cTooltip:= {"Introduzca nombre de la SAT o parte de ella.","Búsqueda incremental"}
       
 @ 2,1 XBROWSE oLbx SIZE 360, 160 OF oDlg DATASOURCE "INDICE" ;
   COLUMNS "NOMBRE_SAT","N_REG_IFA","MUNIC_SOC", "PROVIN_SOC","ALT_DIS_CA";
    HEADERS "Denomimación", "Nº registro", "Localidad", "Provincia", "Situación";   
   COLSIZES 310,70,100,80,250 CELL LINES FOOTERS AUTOSORT FASTEDIT
         
       oCol:= oLbx:aCols[ 1 ]          
       oLbx:lHScroll:= .F.
       oLbx:lVScroll:= .T.        
      //  oLbx:lfastdraw:=.t.
       
       
      WITH OBJECT  oLbx
      :lIncrFilter   := .t.
      : oSeek         := oGet
      :lSeekWild     := ( nWild == 2 )
      :cFilterFld    := "NOMBRE_SAT"
      :nStretchCol   := STRETCHCOL_WIDEST
     END    
 
 oLbx:CreateFrom
 


La búsqueda es letra a letra. La base de datos tiene solo tiene 2.000 registros. En modo local va muy bien, pero cuando colocas la aplicación en la red se vuelve muy lenta, a veces la diálogo se queda en blanco y muchas veces se bloquea.

¿Cómo lo harías para que fuera igual de rápido en red?

Saludos y gracias