Página 1 de 1

Lentitud en DBF con CDX en consulta de datos

Publicado: Jue May 09, 2013 5:53 am
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...

Lentitud en DBF con CDX en consulta de datos

Publicado: Jue May 09, 2013 8:32 pm
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

Lentitud en DBF con CDX en consulta de datos

Publicado: Jue May 09, 2013 8:48 pm
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)

Lentitud en DBF con CDX en consulta de datos

Publicado: Jue May 09, 2013 10:39 pm
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