Página 1 de 1

Para Daniel Perchi - Consultas

Publicado: Mié Feb 19, 2014 10:51 am
por jrcpoli-quitar_1
Saludos:
Yo las consultas dentro de una base con muchos registros las hago
usando una secuencia que básicamente es:
Posicionarse en el primer registro que cumpla la condición buscada.
Recorrer todos los registros siguientes que cumplan esa condición.
Ejemplo:
** Seleccionamos el Indice
:OrdSetFocus("FEDERACION")
* Posicionamos el registro
IF :Seek(DTOS(dFecha ) + LTRIM(cLugar) + LTRIM(cFed ) )
DO WHILE !:EoF() .AND. ;
(DTOC(:FieldGetByName("FECHA_S")) == DTOC(dFecha ) .AND. ;
LTRIM(:FieldGetByName("L_SUELTA")) == LTRIM(cLugar) .AND. ;
LTRIM(:FieldGetByName("N_FED")) == LTRIM(cFed ) )
*
IF LTRIM(:FieldGetByName("NUM_CLUB")) == LTRIM(cClub )
** Si no está marcado para borrar
IF !:Deleted()
*
::GrabaIndiv( oDS )
*
** Actualizar contador de registros
nContador1 := VAL(::oEditRegistros:Value)
nContador1++
::oEditRegistros:Value := TRANSFORM(nContador1,
"@E 99999")
ProcessMessages()
*
ENDIF
*
ENDIF
*
:Skip()
*
END DO
*
ENDIF
Esto se ejecuta de forma rápida.
--
José R.Castro
---
Este mensaje no contiene virus ni malware porque la protección de avast! Antivirus está activa.
http://www.avast.com

Para Daniel Perchi - Consultas

Publicado: Mié Feb 19, 2014 4:45 pm
por Carlos Ortiz
en realidad lo que creo que cuestiona es cuando se abren las tablas, yo
ya lo habí­a expuesto hace unos años, con archivos extremadamente grandes
el comando USE demora en xailer (pero no es de xailer el problema sino
de xharbour) ni te cuento cuando la tabla tiene millones de registros
borrados.
solución rápida no hay solo, no tener muchos registros deleteados en las
tablas puede ayudar
El 19/02/2014 06:51, José Ramón Castro Polinio escribió:
> Saludos:
>
> Yo las consultas dentro de una base con muchos registros las hago
> usando una secuencia que básicamente es:
>
> Posicionarse en el primer registro que cumpla la condición buscada.
> Recorrer todos los registros siguientes que cumplan esa condición.
>
> Ejemplo:
>
> ** Seleccionamos el Indice
> :OrdSetFocus("FEDERACION")
> * Posicionamos el registro
> IF :Seek(DTOS(dFecha ) + LTRIM(cLugar) + LTRIM(cFed ) )
> DO WHILE !:EoF() .AND. ;
> (DTOC(:FieldGetByName("FECHA_S")) == DTOC(dFecha )
> .AND. ;
> LTRIM(:FieldGetByName("L_SUELTA")) == LTRIM(cLugar)
> .AND. ;
> LTRIM(:FieldGetByName("N_FED")) == LTRIM(cFed ) )
> *
> IF LTRIM(:FieldGetByName("NUM_CLUB")) == LTRIM(cClub )
> ** Si no está marcado para borrar
> IF !:Deleted()
> *
> ::GrabaIndiv( oDS )
> *
> ** Actualizar contador de registros
> nContador1 := VAL(::oEditRegistros:Value)
> nContador1++
> ::oEditRegistros:Value := TRANSFORM(nContador1,
> "@E 99999")
> ProcessMessages()
> *
> ENDIF
> *
> ENDIF
> *
> :Skip()
> *
> END DO
> *
> ENDIF
>
> Esto se ejecuta de forma rápida.
>