FoxPro/Visual FoxPro - mejorar velocidad en red

   
Vista:

mejorar velocidad en red

Publicado por jose leo (136 intervenciones) el 29/10/2008 04:54:09
Holas

Es valido este codigo para mejorar la busqueda de registros en red (15000)

Textbox/Keypress

...
SELECT Pnatural
SET ORDER TO Nombre
SEEK ALLTRIM(THISFORM.Txtcliente.VALUE)
SELECT * FROM Pnatural WHERE Nombre=ALLTRIM(THISFORM.Txtcliente.VALUE) ORDER BY Nombre INTO CURSOR cursornatural
...
muestra BROWSE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:mejorar velocidad en red

Publicado por kong (681 intervenciones) el 29/10/2008 10:38:40
SELECT Pnatural
SET ORDER TO Nombre
****SEEK ALLTRIM(THISFORM.Txtcliente.VALUE)
buscarnombre=alltrim(THISFORM.Txtcliente.VALUE)
SELECT * FROM Pnatural WHERE Nombre=buscarnombre ORDER BY Nombre INTO CURSOR cursornatural

muestra BROWSE

..........................

select pnatural
set order to nombre
buscarnombre=alltrim(THISFORM.Txtcliente.VALUE)
set filter to nombre=buscarnombre

muestra BROWSE

............................

SELECT Pnatural
SET ORDER TO Nombre
buscarnombre=alltrim(THISFORM.Txtcliente.VALUE)
SEEK buscarnombre

muestra BROWSE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mejorar velocidad en red

Publicado por HELDER (COUNDY) (710 intervenciones) el 29/10/2008 17:04:06
SELECT Pnatural
go top
SET ORDER TO Nombre
buscarnombre=alltrim(THISFORM.Txtcliente.VALUE)
SEEK buscarnombre order tag campo_indice

browse
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mejorar velocidad en red

Publicado por neo (1601 intervenciones) el 29/10/2008 20:24:43
a mi me pasaba igual, y no entiendo porqué el cursor es ligeramente lento a comparacion de un browse fields...Pero si prefieres velocidad, mejor utiliza en vez de un cursor el comando Browse, ejemplo:

SELECT Pnatural
SET ORDER TO Nombre
SEEK ALLTRIM(THISFORM.Txtcliente.VALUE)
IF Found()
*BROWSE FIELDS campo1, campo2, campo3 FONT "tahoma",10 NOLGRID noedit

endif

Nota:
El único inconveniente es que muestra todos los registros de la tabla, pero el enfoque lo recibe a partir de los que buscas en seek. Pruebalo y me cuentas. Cuando yo utilizo el Seek generalmente no muestro por medio de consulta o browse sino, que solo paso los datos a los texbox sin mostrar nada antes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mejorar velocidad en red

Publicado por kong (681 intervenciones) el 30/10/2008 01:20:26
estoy de acuerdo con Neo..... Si solo quieres mostrar un solo registro, entonces no es necesario hacer un browse, solo un TEXTBOX bastaria, y eso aceleraria muchisimo tu aplicacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mejorar velocidad en red

Publicado por jose leo (136 intervenciones) el 30/10/2008 03:50:53
gracias por sus ayudas, lo que pasa es que si necesito mostrar un browse que tenga registrso que coinicdan por ejemplo al digitar en el text box CAB, me muestre
CABALLERO
CABANILLAS
CABILDO, etc

gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mejorar velocidad en red

Publicado por Ernesto Hernandez (4632 intervenciones) el 30/10/2008 17:49:34
si lo estas mostrando en un combo revisa la propiedad IncrementalSearch

suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mejorar velocidad en red

Publicado por HELDER (COUNDY) (710 intervenciones) el 30/10/2008 18:18:54
Este codigo funciona en un combo, en el evento InteractiveChange

PUBLIC lnUltimaTecla, lcMostrarValor, lcUltimoValorMostrado,;
lnUltimaSeleccion, lnSeleccionados

SELECT Tu_tabla
lnUltimaTecla = LASTKEY()
lcUltimoValorMostrado = ""
lnUltimaSeleccion = 0
lnSeleccionados = 0

IF (lnUltimaTecla >= 32 AND lnUltimaTecla <= 126)
IF THIS.SELSTART >= 1
lcMostrarValor = SUBSTR(THIS.DISPLAYVALUE,1,THIS.SELSTART-1)+(CHR(lnUltimaTecla))
ELSE
lcMostrarValor = (CHR(lnUltimaTecla))+ALLT(THIS.DISPLAYVALUE)
ENDIF
IF EMPTY(lcMostrarValor)
lcMostrarValor = ALLT(CHR(lnUltimaTecla))
ENDIF
FOR i = 1 TO THIS.LISTCOUNT
IF UPPER(lcMostrarValor) = UPPER(SUBSTR(THIS.LIST(i),1,LEN(lcMostrarValor)))
THIS.DISPLAYVALUE = THIS.LIST(i)
IF LEN(ALLT(THIS.DISPLAYVALUE)) > LEN(lcMostrarValor)
THIS.SELSTART = LEN(lcMostrarValor)
THIS.SELLENGTH = LEN(ALLT(THIS.DISPLAYVALUE))-LEN(lcMostrarValor)
ENDIF

lcUltimoValorMostrado = THIS.DISPLAYVALUE
lnUltimaSeleccion = THIS.SELSTART
lnSeleccionados = THIS.SELLENGTH
RETURN
ENDIF
ENDFOR

THIS.DISPLAYVALUE = lcUltimoValorMostrado
THIS.SELSTART = lnUltimaSeleccion
THIS.SELLENGTH = lnSeleccionados
ENDIF

**Este aporte me lo envio un amigo de LWP

Saludes,

Desde HOnduras
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mejorar velocidad en red

Publicado por Ernesto Hernandez (4632 intervenciones) el 30/10/2008 18:27:09
entonce si tu codigo funcion prueba optimizandolo en un cursor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar