In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Lentitud en DBF con CDX en consulta de datos

Foro público de Xailer en español
Responder
rure710907
Mensajes: 6
Registrado: Jue May 09, 2013 5:38 am

Lentitud en DBF con CDX en consulta de datos

Mensaje por rure710907 »

Tengo un serio problema con mis bases de datos tengo un modulo de consulta de cotizaciones ordenado por nombre de cliente, numero de cliente y numero de cotizacion. Al abrir la consulta la cual trabaja con DBEDIT, mustra rapido la información pero al iniciar la busqueda por nombre tecleando empieza a buscar letra x letra es donde empieza la lentitud y cada letra la retarda casi el minuto..
Si alguien tiene la solucion no dude en decirme que hacer.....
Yo tenia mi sistema en clipper5.2 con NTX y lo acabo de migrar a XAILER y me parecio excelente pero como soy novato obio tengo algunos detalles....
Gracias. por su ayuda...
Avatar de Usuario
emeasoft
Mensajes: 1090
Registrado: Mié Abr 01, 2009 4:12 pm
Ubicación: emeasoft
Contactar:

Lentitud en DBF con CDX en consulta de datos

Mensaje por emeasoft »

Olá:
Vocíª está apagando os .CDX para reindexar?
Vocíª está usando TAG?
O correto é apagar os CDX toda vez que for reindexar;
Reindexar pelo menos uma vez por dia;
Usar TAG:
INDEX ON campo1 TAG campo1
INDEX ON campo2 TAG campo2
...
Saudaçíµes
Mário Angelini
rure710907
Mensajes: 6
Registrado: Jue May 09, 2013 5:38 am

Lentitud en DBF con CDX en consulta de datos

Mensaje por rure710907 »

hola la lentitud se presenta acabado de indexar
este el parte del codigo que uso:
aqui verfico el indice CDX y en caso de no existir se crea
if !file("TEM_CLTE.CDX") .or. activa = 1
Indice("tem_clte","cte_nume","cte_clve",0)
Indice("tem_clte","cte_nomb","cte_nomb",0)
Indice("tem_clte","cte_rfc","cte_rfc",0)
Indice("tem_clte","cte_vtas","cte_vtas",1)
endif
Use &BaseW
if Ordw = 1
Index On &CadInW Tag &IndicW To &BaseW Eval AvanCdx() Every LastRec()*0.10 DESCENDING
else
Index On &CadInW Tag &IndicW To &BaseW Eval AvanCdx() Every LastRec()*0.10
endif
Rutina de consulta con DBEDIT
s_box(10,03,22,75,3)
@ 12,04 say "í†"
@ 12,74 say "µ"
@ 21,05 say "Buscar: "
vt_lin = 21
vt_col = 13
i_arti = 0
v_busc = " "
fields := { "cte_nume","cte_nomb","cte_stat","cte_sald","cte_rfc ","cte_tele","cte_dire","cte_colo" }
vt_pict:= { "#####","@!s60","!","###,###,###.##","@!","@!","@! ","@!" }
names := { "Clave","N o m b r e","Bloq.","Saldo","R.f.c.","Tel‚fono","Direcci¢n ","Colonia" }
dbedit(11,05,20,73,fields,"f_vari",vt_pict,names,,,"í„íí„ ")
set order to 1
restore screen from scr_help
release scr_help
Parte de la funcion de busqueda dentro del DBedit donde voy tecleando el nombre del cliente letra por letra para ir ubicando el registro
case lastkey() > 64 .and. lastkey() < 91 .or.;
lastkey() > 96 .and. lastkey() < 123 .or.;
lastkey() > 33 .and. lastkey() < 58
if lastkey() > 64 .and. lastkey() < 91 .or.;
lastkey() > 33 .and. lastkey() < 58
v_codig = lastkey()
v_carac = chr(v_codig)
else
v_codig = lastkey()
v_carac = chr(asc(chr(v_codig))-32)
endif
if pro = "P_LINE"
seek(v_carac)
*DBSeek(v_carac,.t.,.t.)
elseif pro = "P_INVE" .or. pro = "P_CLTE" .or. pro = "P_COTI" .or.;
pro = "P_REMI" .or. pro = "P_FACT" .or. pro = "P_PROV" .or.;
pro = "P_DEVO" .or. pro = "P_OCOM" .or. pro = "P_COMP" .or.;
pro = "P_REME"
v_busc = alltrim(v_busc + v_carac)
@ 21,13 say v_busc
if p_nume = 0
seek(v_busc)
*DBSeek(v_busc,.t.,.t.)
else
seek(val(v_busc))
*DBSeek(Val(v_busc),.t.,.t.)
endif
endif
return(2)
Avatar de Usuario
emeasoft
Mensajes: 1090
Registrado: Mié Abr 01, 2009 4:12 pm
Ubicación: emeasoft
Contactar:

Lentitud en DBF con CDX en consulta de datos

Mensaje por emeasoft »

Isto é que deixa muito lento.
Retire e vocíª vai ver que fica bem melhor.

...Eval AvanCdx() Every LastRec()*0.10 DESCENDING

Experimente fazer assim:
Ferase("nomearq.CDX")
..
FIELD campo1,campo2
...
USE nomearq NEW EXCLUSIVE ALIAS ARQX
INDEX ON campo1 TAG Ind1
INDEX ON campo2 TAG Ind2
ARQX->(DBCloseArea())
...
USE nomearq NEW SHARED ALIAS ARQX
ARQX->(DBSetOrder(1)) // Ind1
ARQX->(DBSeek(xxxxx))
...
ARQX->(DBSetOrder(2)) // Ind2
ARQX->(DBSeek(yyy))
...
Mário
Responder