FoxPro/Visual FoxPro - problema "LENTO" Codigo de Cursor..

   
Vista:

problema "LENTO" Codigo de Cursor..

Publicado por neo (1601 intervenciones) el 18/07/2008 17:15:47
Aqui les dejo mi problema, no es que salga algun error, solo es que en RED funciona LENTO...:

IF EMPTY(Thisform.t1.Value)
ELSE

SET EXACT on
SELECT base
SET ORDER TO ben_id
f1=Thisform.t1.Value
STORE f1 TO busca
SEEK busca
IF FOUND()

****Con esta linea no se pone lento:

BROWSE FIELDS ben_id, estatus, ncompleto, calle, exterior, interior, sector, seccion, folio, folio_ife, id_elect, d_est FONT "tahoma",10 NOLGRID NOEDIT NODELETE NOAPPEND

*****Si activo el Select que se muestra aqui es donde el sistema empieza a ponerse lento
*****Por eso puse el asterisco al incio de la linea y que no se ejecute.

*SELECT ben_id, ncompleto, calle, exterior, interior, sector, seccion, folio, folio_ife, id_elect, estatus, d_est FROM base WHERE ben_id=f1 INTO CURSOR base1
*brow
DO case
case estatus=10
CMES=MESSAGEBOX("Este beneficiario ya recibió su despensa y ha sido capturado, desea ver detalles de captura?",4+16,"Beneficiario Capturado")
IF CMES=6
SELECT ben_id, ncompleto%
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:problema

Publicado por kong (681 intervenciones) el 18/07/2008 17:55:53
Hola mi amigo neo.
Yo tambien trabaje un tiempo con una red inalambrica, cierto es que se vuelve extramadamente lento el programa.
Pero si tu idea es encontrar un solo registro coincidente y que se despiegue sus datos, y si ya te funciona con seek, no veo ningun problema trabajar con seek....

Lo que no entiendo es, por qué quieres hacer un browse luego de hacer el seek.
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:problema

Publicado por sergio (697 intervenciones) el 18/07/2008 18:52:05
Puede ser por el select si l atabla tiene muchos regitros

Una idea es en vez de hacer un select a toda la tabla hace un select filtrando
en vez de utilizar el seek
hace
select * from tabla where condicion del seek y el select va a ser mucho mas rapido
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:problema

Publicado por Dario (94 intervenciones) el 19/07/2008 02:49:44
Yo en particular lo realizao asi ;
Por ejemplo en una base donde tengo las facturas de compras de los proveedores (mas de 150000 registros), y quiero ver las facturas de un proveedor determinado ;

SET ORDER TO CODIGO &&STR(EMPRESA,3)+TIPO+STR(PROVEEDOR,6)+LETRA+STR(SUCURSAL,4)+STR(NUMERO,8)
EMPRESA=1
PROVEEDOR=1210

seek str(1,3)+'FAC'+STR(1210,6)
lcproveedor=proveedor
do while lcproveedor=proveedor and !eof()
copio lo que necesito al cursor
skip
enddo

De esta forma solo recorro una pequeña parte de la base

Espero se entienda y te ayude

Saludos
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:problema

Publicado por neo (1601 intervenciones) el 21/07/2008 20:43:36
Al decir copio, te refieres a hacer un select *from ....??

Gracias Compañeros, me va a servir de mucho sus consejos.

Atte
Neo
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:problema

Publicado por Dario (94 intervenciones) el 21/07/2008 21:14:28
Podes copiarlo con REPLACE o INSERT INTO;
En casos donde la tabla es muy grande no utilizo SELEC, me resulta mas rapido usar un DO WHILE, y recorrer solo una pequeña parte., para ello es muy importante como este armado el indice

Saludos
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