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.

Para Daniel Perchi - Consultas

Foro público de Xailer en español
Responder
jrcpoli-quitar_1
Mensajes: 37
Registrado: Mar Jun 25, 2013 10:01 am

Para Daniel Perchi - Consultas

Mensaje 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
Avatar de Usuario
Carlos Ortiz
Mensajes: 873
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Para Daniel Perchi - Consultas

Mensaje 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.
>
Responder