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.

Perdonen que insista...

Foro público de Xailer en español
Responder
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Perdonen que insista...

Mensaje por pacoelche »

Perdonen que insista con una pregunta:
¿Es normal que crear índices CDX, con Xailer.3 tarde mucho más que con
versiones anteriores de Xailer?
Hace unos días expuse un problema por el que el proceso de indexar se ha
vuelto superlento y nadie me ha contestado.
Simplemente quería saber si es que esto es así con la nueva versión de
xailer.
Muchas gracias
Paco Martínez
Avatar de Usuario
emeasoft
Mensajes: 1094
Registrado: Mié Abr 01, 2009 4:12 pm
Ubicación: emeasoft
Contactar:

Perdonen que insista...

Mensaje por emeasoft »

Hola:
Estamos utilizando Xailer 3,
sin embargo no tuvo diferencias.
Mario Angelini
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Perdonen que insista...

Mensaje por pacoelche »

Pues a mi si que me ocurre.
He comprobado que esto se da con ficheros muy grandes, ya comenté que uno de los ficheros tiene casi 3 millones de registros y otro algo más de 300.000. En otros ficheros que tienen algunos pocos miles de registros no noto ninguna diferencia de tiempo.
Ahora que me he comprado la última versión (3.0) he probado ejecutarlo directamente desde el exe creado y sigue tardando mucho.
He probado en varios ordenadores y en todos tarda muchí­simo más.
Bueno, si no hay ninguna solución, me tocará adelgazar estos ficheros y pasarlos a algún histórico.
Gracias por contestar Mario.
Un saludo
Paco Martí­nez
"www[dot]eMeAsOfT[dot]com" <mario[at]emeasoft[dot]com[dot]br> escribió en el mensaje news:51a123fd$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Hola:
Estamos utilizando Xailer 3,
sin embargo no tuvo diferencias.
Mario Angelini
--
http://www.eMeAsOfT.com
http://emeasoft.blogspot.com/
http://twitter.com/emeasoft
http://www.facebook.com/emeasoft
https://plus.google.com/102999253031532804222
http://g.co/maps/26gey
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Perdonen que insista...

Mensaje por zeasoftware »

Yo estoy usando aun DBF con mas de 1 millón de registros y no es para nada
lento, creo que habrí­as de checar tu modulo de indexación, si estas llamando
algún proceso extra y que hace dicho proceso.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51a0881b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Perdonen que insista con una pregunta:
¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
versiones anteriores de Xailer?
Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
vuelto superlento y nadie me ha contestado.
Simplemente querí­a saber si es que esto es así­ con la nueva versión de
xailer.
Muchas gracias
Paco Martí­nez
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Perdonen que insista...

Mensaje por pacoelche »

Gracias por contestar Ramón:
Te adjunto el código que utilizo y que creo que no tiene nada raro (¡eso creo!)
ERASE("FACTURAS_LINEAS.CDX")
USE FACTURAS_LINEAS EXCLUSIVE NEW
INDEX ON TARIFA+FACTURA TAG CLAVE1 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON DTOS(FECHA) TAG CLAVE2 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON PLATO TAG CLAVE3 TO FACTURAS_LINEAS FOR BAJA<>"S"
CLOS DATA
Si ves algo extraño o crees que se puede hacer de otra forma mejor te agradecerí­a que me lo dijeses.
Un saludo
Paco Martí­nez
<zeasoftware@hotmail.com> escribió en el mensaje news:[email=51ad7149@svctag-j7w3v3j....]51ad7149@svctag-j7w3v3j....[/email]
Yo estoy usando aun DBF con mas de 1 millón de registros y no es para nada
lento, creo que habrí­as de checar tu modulo de indexación, si estas llamando
algún proceso extra y que hace dicho proceso.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51a0881b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Perdonen que insista con una pregunta:
¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
versiones anteriores de Xailer?
Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
vuelto superlento y nadie me ha contestado.
Simplemente querí­a saber si es que esto es así­ con la nueva versión de
xailer.
Muchas gracias
Paco Martí­nez
--
Alex
Mensajes: 58
Registrado: Mié Dic 23, 2009 3:28 pm

Perdonen que insista...

Mensaje por Alex »

BAJA es un campo en el DBF?
Lo tienes indicado como registro de baja con una 'S'?
Dame tu respuesta para indicarte pasos a seguir
Alex
------------------------------------------------------------ --------------------
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51adb1c3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Gracias por contestar Ramón:
Te adjunto el código que utilizo y que creo que no tiene nada raro (¡eso
creo!)
ERASE("FACTURAS_LINEAS.CDX")
USE FACTURAS_LINEAS EXCLUSIVE NEW
INDEX ON TARIFA+FACTURA TAG CLAVE1 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON DTOS(FECHA) TAG CLAVE2 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON PLATO TAG CLAVE3 TO FACTURAS_LINEAS FOR BAJA<>"S"
CLOS DATA
Si ves algo extraño o crees que se puede hacer de otra forma mejor te
agradecerí­a que me lo dijeses.
Un saludo
Paco Martí­nez
<zeasoftware@hotmail.com> escribió en el mensaje
news:[email=51ad7149@svctag-j7w3v3j....]51ad7149@svctag-j7w3v3j....[/email]
Yo estoy usando aun DBF con mas de 1 millón de registros y no es para nada
lento, creo que habrí­as de checar tu modulo de indexación, si estas llamando
algún proceso extra y que hace dicho proceso.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51a0881b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Perdonen que insista con una pregunta:
¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
versiones anteriores de Xailer?
Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
vuelto superlento y nadie me ha contestado.
Simplemente querí­a saber si es que esto es así­ con la nueva versión de
xailer.
Muchas gracias
Paco Martí­nez
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Perdonen que insista...

Mensaje por pacoelche »

Si que es un campo de la dbf y efectivamente puede contener "S" o vací­o " "
Cuando borro un registro de una dbf pongo este campo en "S" y ya no se muestra durante el trabajo. Hago esto en vez de utilizar DELETE, ya que tengo entendido que DELETE actúa como un SET FILTER y esto he comprobado que enlentece un poco el trabajo con un fichero dbf.
De vez en cuando reorganizo los ficheros y si que los borro definitivamente.
Gracias Alex
"Alex Gueca" <alexgueca@gmail.com> escribió en el mensaje news:51ae8073$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
BAJA es un campo en el DBF?
Lo tienes indicado como registro de baja con una 'S'?
Dame tu respuesta para indicarte pasos a seguir
Alex
------------------------------------------------------------ --------------------
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51adb1c3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Gracias por contestar Ramón:
Te adjunto el código que utilizo y que creo que no tiene nada raro (¡eso
creo!)
ERASE("FACTURAS_LINEAS.CDX")
USE FACTURAS_LINEAS EXCLUSIVE NEW
INDEX ON TARIFA+FACTURA TAG CLAVE1 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON DTOS(FECHA) TAG CLAVE2 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON PLATO TAG CLAVE3 TO FACTURAS_LINEAS FOR BAJA<>"S"
CLOS DATA
Si ves algo extraño o crees que se puede hacer de otra forma mejor te
agradecerí­a que me lo dijeses.
Un saludo
Paco Martí­nez
<zeasoftware@hotmail.com> escribió en el mensaje
news:[email=51ad7149@svctag-j7w3v3j....]51ad7149@svctag-j7w3v3j....[/email]
Yo estoy usando aun DBF con mas de 1 millón de registros y no es para nada
lento, creo que habrí­as de checar tu modulo de indexación, si estas llamando
algún proceso extra y que hace dicho proceso.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51a0881b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Perdonen que insista con una pregunta:
¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
versiones anteriores de Xailer?
Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
vuelto superlento y nadie me ha contestado.
Simplemente querí­a saber si es que esto es así­ con la nueva versión de
xailer.
Muchas gracias
Paco Martí­nez
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Perdonen que insista...

Mensaje por jfgimenez »

Paco,
yo ya no utilizo DBFs y por eso mi ayuda es muy limitada, pero...
> Si que es un campo de la dbf y efectivamente puede contener "S" o
> vací­o " "
> Cuando borro un registro de una dbf pongo este campo en "S" y ya no se
> muestra durante el trabajo. Hago esto en vez de utilizar DELETE, ya
> que tengo entendido que DELETE actúa como un SET FILTER y esto he
> comprobado que enlentece un poco el trabajo con un fichero dbf.
Lo que estás haciendo es exactamente igual. Si utilizas un campo con un
valor determinado para marcar los borrados, también va a funcionar como
un SET FILTER. Para eso es mejor que uses los dbDelete() de siempre, y
crees los í­ndices con la cláusula "FOR !Deleted()", que creo que estaba
optimizada para estos casos.
En ambos casos, lo que te libra de que actue como un SET FILTER es el
FOR al crear el í­ndice. Pero claro, te libras del filtro al recorrer
después la tabla usando esos í­ndices, pero al crear los í­ndices le estás
metiendo un SET FILTER como una casa.
> De vez en cuando reorganizo los ficheros y si que los borro
> definitivamente.
De la misma forma podrí­as hacer un simple PACK para eliminar los
registros borrados, y sin tantas vueltas.
Aparte de eso, yo sigo en lo mio... aconsejar a todo el mundo que esté
usando DBFs a pasarse a SQLite. Es verdad que no es trivial, y hay que
hacer cambios importantes, pero menos que al pasar a otros motores SQL.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Perdonen que insista...

Mensaje por pacoelche »

José:
Mil gracias por tus valiosos consejos.
Acabo de hacer una pequeña prueba eliminando los FOR y efectivamente me baja un poco el tiempo al reindexar los ficheros, pero tampoco es como para tirar cohetes. Pero claro, esto me tocarí­a el revisar todos los programas, y la verdad es que como lo estoy haciendo hasta ahora, el único impedimento que he visto es la indexar los ficheros, ya que el resto de programación no veo que el programa tarde más en grabar registros, tiempo de consulta, etc.
Supongo que todo esto es debido del cambio de xHarbour a Harbour. Ya meditaré detenidamente si sigo como hasta ahora o cambio la forma de tratar las bajas de los ficheros, como tu me indicas.
Por otro lado me gustarí­a que me comentases un poco por donde empezar con SQLite. Sinceramente mis conocimientos sobre el tema es 0 (pero, cero, cero, cero). ¿Sabes de algún manual, libro, página, etc. por donde pueda empezar? ¿Necesito algún software aparte? A ser posible en la lengua de Cervantes (castellano).
Reitero mi agradecimiento
Un saludo
Paco Martí­nez
"Jose F. Gimenez" <jfgimenezAM]"@wanadoo.es> escribió en el mensaje news:51aefcf9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Paco,
yo ya no utilizo DBFs y por eso mi ayuda es muy limitada, pero...
> Si que es un campo de la dbf y efectivamente puede contener "S" o
> vací­o " "
> Cuando borro un registro de una dbf pongo este campo en "S" y ya no se
> muestra durante el trabajo. Hago esto en vez de utilizar DELETE, ya
> que tengo entendido que DELETE actúa como un SET FILTER y esto he
> comprobado que enlentece un poco el trabajo con un fichero dbf.
Lo que estás haciendo es exactamente igual. Si utilizas un campo con un
valor determinado para marcar los borrados, también va a funcionar como
un SET FILTER. Para eso es mejor que uses los dbDelete() de siempre, y
crees los í­ndices con la cláusula "FOR !Deleted()", que creo que estaba
optimizada para estos casos.
En ambos casos, lo que te libra de que actue como un SET FILTER es el
FOR al crear el í­ndice. Pero claro, te libras del filtro al recorrer
después la tabla usando esos í­ndices, pero al crear los í­ndices le estás
metiendo un SET FILTER como una casa.
> De vez en cuando reorganizo los ficheros y si que los borro
> definitivamente.
De la misma forma podrí­as hacer un simple PACK para eliminar los
registros borrados, y sin tantas vueltas.
Aparte de eso, yo sigo en lo mio... aconsejar a todo el mundo que esté
usando DBFs a pasarse a SQLite. Es verdad que no es trivial, y hay que
hacer cambios importantes, pero menos que al pasar a otros motores SQL.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Perdonen que insista...

Mensaje por zeasoftware »

Yo uso algo parecido:
For Status == “A” .And. !Deleted()
Supongo tu campo BAJA es character 1
No veo mal en tu proceso, ya no lo tengo de esa manera, si no, hice uno basándome en uno de los ejemplos que trae Xailer...
Cuantos registros manejas?
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" <pacoelche@hotmail.com> escribió en el mensaje de noticias:[email=51aef048@svctag-j7w3v3j....]51aef048@svctag-j7w3v3j....[/email]
Si que es un campo de la dbf y efectivamente puede contener "S" o vací­o " "
Cuando borro un registro de una dbf pongo este campo en "S" y ya no se muestra durante el trabajo. Hago esto en vez de utilizar DELETE, ya que tengo entendido que DELETE actúa como un SET FILTER y esto he comprobado que enlentece un poco el trabajo con un fichero dbf.
De vez en cuando reorganizo los ficheros y si que los borro definitivamente.
Gracias Alex
"Alex Gueca" <alexgueca@gmail.com> escribió en el mensaje news:51ae8073$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
BAJA es un campo en el DBF?
Lo tienes indicado como registro de baja con una 'S'?
Dame tu respuesta para indicarte pasos a seguir
Alex
------------------------------------------------------------ --------------------
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51adb1c3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Gracias por contestar Ramón:
Te adjunto el código que utilizo y que creo que no tiene nada raro (¡eso
creo!)
ERASE("FACTURAS_LINEAS.CDX")
USE FACTURAS_LINEAS EXCLUSIVE NEW
INDEX ON TARIFA+FACTURA TAG CLAVE1 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON DTOS(FECHA) TAG CLAVE2 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON PLATO TAG CLAVE3 TO FACTURAS_LINEAS FOR BAJA<>"S"
CLOS DATA
Si ves algo extraño o crees que se puede hacer de otra forma mejor te
agradecerí­a que me lo dijeses.
Un saludo
Paco Martí­nez
<zeasoftware@hotmail.com> escribió en el mensaje
news:[email=51ad7149@svctag-j7w3v3j....]51ad7149@svctag-j7w3v3j....[/email]
Yo estoy usando aun DBF con mas de 1 millón de registros y no es para nada
lento, creo que habrí­as de checar tu modulo de indexación, si estas llamando
algún proceso extra y que hace dicho proceso.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51a0881b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Perdonen que insista con una pregunta:
¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
versiones anteriores de Xailer?
Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
vuelto superlento y nadie me ha contestado.
Simplemente querí­a saber si es que esto es así­ con la nueva versión de
xailer.
Muchas gracias
Paco Martí­nez
--
Avatar de Usuario
Carlos Ortiz
Mensajes: 873
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Perdonen que insista...

Mensaje por Carlos Ortiz »

ojo, cuando las dbf tienen muchos registros deleteados se pone muy lerda
su gestión.
El 25/05/2013 06:45, Francisco Martí­nez Garcí­a escribió:
> Perdonen que insista con una pregunta:
>
> ¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
> versiones anteriores de Xailer?
>
> Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
> vuelto superlento y nadie me ha contestado.
>
> Simplemente querí­a saber si es que esto es así­ con la nueva versión de
> xailer.
>
> Muchas gracias
> Paco Martí­nez
>
>
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Perdonen que insista...

Mensaje por pacoelche »

Hola Carlos:
Precisamente porque (creo) que con "delete" enlentece no lo utilizo e
inutilizo las líneas que doy de baja con el FOR BAJA<>"S", que lo único que
hace es no indexar esas líneas.
"Carlos Ortiz" <cortizassist@hotmail.com> escribió en el mensaje
news:51af5369$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> ojo, cuando las dbf tienen muchos registros deleteados se pone muy lerda
> su gestión.
>
> El 25/05/2013 06:45, Francisco Martínez García escribió:
>> Perdonen que insista con una pregunta:
>>
>> ¿Es normal que crear índices CDX, con Xailer.3 tarde mucho más que con
>> versiones anteriores de Xailer?
>>
>> Hace unos días expuse un problema por el que el proceso de indexar se ha
>> vuelto superlento y nadie me ha contestado.
>>
>> Simplemente quería saber si es que esto es así con la nueva versión de
>> xailer.
>>
>> Muchas gracias
>> Paco Martínez
>>
>>
>
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Perdonen que insista...

Mensaje por pacoelche »

Casi 3 millones.
<zeasoftware@hotmail.com> escribió en el mensaje news:[email=51af4b09@svctag-j7w3v3j....]51af4b09@svctag-j7w3v3j....[/email]
Yo uso algo parecido:
For Status == “A” .And. !Deleted()
Supongo tu campo BAJA es character 1
No veo mal en tu proceso, ya no lo tengo de esa manera, si no, hice uno basándome en uno de los ejemplos que trae Xailer...
Cuantos registros manejas?
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" <pacoelche@hotmail.com> escribió en el mensaje de noticias:[email=51aef048@svctag-j7w3v3j....]51aef048@svctag-j7w3v3j....[/email]
Si que es un campo de la dbf y efectivamente puede contener "S" o vací­o " "
Cuando borro un registro de una dbf pongo este campo en "S" y ya no se muestra durante el trabajo. Hago esto en vez de utilizar DELETE, ya que tengo entendido que DELETE actúa como un SET FILTER y esto he comprobado que enlentece un poco el trabajo con un fichero dbf.
De vez en cuando reorganizo los ficheros y si que los borro definitivamente.
Gracias Alex
"Alex Gueca" <alexgueca@gmail.com> escribió en el mensaje news:51ae8073$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
BAJA es un campo en el DBF?
Lo tienes indicado como registro de baja con una 'S'?
Dame tu respuesta para indicarte pasos a seguir
Alex
------------------------------------------------------------ --------------------
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51adb1c3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Gracias por contestar Ramón:
Te adjunto el código que utilizo y que creo que no tiene nada raro (¡eso
creo!)
ERASE("FACTURAS_LINEAS.CDX")
USE FACTURAS_LINEAS EXCLUSIVE NEW
INDEX ON TARIFA+FACTURA TAG CLAVE1 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON DTOS(FECHA) TAG CLAVE2 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON PLATO TAG CLAVE3 TO FACTURAS_LINEAS FOR BAJA<>"S"
CLOS DATA
Si ves algo extraño o crees que se puede hacer de otra forma mejor te
agradecerí­a que me lo dijeses.
Un saludo
Paco Martí­nez
<zeasoftware@hotmail.com> escribió en el mensaje
news:[email=51ad7149@svctag-j7w3v3j....]51ad7149@svctag-j7w3v3j....[/email]
Yo estoy usando aun DBF con mas de 1 millón de registros y no es para nada
lento, creo que habrí­as de checar tu modulo de indexación, si estas llamando
algún proceso extra y que hace dicho proceso.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51a0881b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Perdonen que insista con una pregunta:
¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
versiones anteriores de Xailer?
Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
vuelto superlento y nadie me ha contestado.
Simplemente querí­a saber si es que esto es así­ con la nueva versión de
xailer.
Muchas gracias
Paco Martí­nez
--
Alex
Mensajes: 58
Registrado: Mié Dic 23, 2009 3:28 pm

Perdonen que insista...

Mensaje por Alex »

Francisco:
Aun que estas utilizando í­ndices condicionales (Por la clausula "FOR") en mi
experiencia con "CDX" siempre utilizo la clausula "DELETE" para eliminar
cualquier registro y pongo el "SET DELETED ON" para que no se muestren los
registros eliminados, hasta la reconstrucción de í­ndices aplico el "PACK"
para eliminar esos registros fí­sicamente, esto para que las bases de datos
no crezcan sin control, jamás uso el "RESUME", si quiero volver a dar de
alta un registro lo capturo de nuevo.
En la clausula "INDEX ON" la aplico de la siguiente forma, utilizando como
ejemplo una de tus clausulas:
USE FACTURAS_LINEAS EXCLUSIVE NEW
INDEX ON TARIFA+FACTURA TAG CLAVE1 TO FACTURAS_LINEAS FOR !DELETED()
Y me funciona rápido y eficiente, espero haberte ayudado para mejorar la
velocidad de tu reconstrucción de í­ndices
Saludos
Alex
------------------------------------------------------------ --------------------
Si que es un campo de la dbf y efectivamente puede contener "S" o vací­o " "
Cuando borro un registro de una dbf pongo este campo en "S" y ya no se
muestra durante el trabajo. Hago esto en vez de utilizar DELETE, ya que
tengo entendido que DELETE actúa como un SET FILTER y esto he comprobado que
enlentece un poco el trabajo con un fichero dbf.
De vez en cuando reorganizo los ficheros y si que los borro definitivamente.
Gracias Alex
"Alex Gueca" <alexgueca@gmail.com> escribió en el mensaje
news:51ae8073$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
BAJA es un campo en el DBF?
Lo tienes indicado como registro de baja con una 'S'?
Dame tu respuesta para indicarte pasos a seguir
Alex
------------------------------------------------------------ --------------------
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51adb1c3$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Gracias por contestar Ramón:
Te adjunto el código que utilizo y que creo que no tiene nada raro (¡eso
creo!)
ERASE("FACTURAS_LINEAS.CDX")
USE FACTURAS_LINEAS EXCLUSIVE NEW
INDEX ON TARIFA+FACTURA TAG CLAVE1 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON DTOS(FECHA) TAG CLAVE2 TO FACTURAS_LINEAS FOR BAJA<>"S"
INDEX ON PLATO TAG CLAVE3 TO FACTURAS_LINEAS FOR BAJA<>"S"
CLOS DATA
Si ves algo extraño o crees que se puede hacer de otra forma mejor te
agradecerí­a que me lo dijeses.
Un saludo
Paco Martí­nez
<zeasoftware@hotmail.com> escribió en el mensaje
news:[email=51ad7149@svctag-j7w3v3j....]51ad7149@svctag-j7w3v3j....[/email]
Yo estoy usando aun DBF con mas de 1 millón de registros y no es para nada
lento, creo que habrí­as de checar tu modulo de indexación, si estas llamando
algún proceso extra y que hace dicho proceso.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:51a0881b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Perdonen que insista con una pregunta:
¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
versiones anteriores de Xailer?
Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
vuelto superlento y nadie me ha contestado.
Simplemente querí­a saber si es que esto es así­ con la nueva versión de
xailer.
Muchas gracias
Paco Martí­nez
Rich
Mensajes: 75
Registrado: Mar Mar 12, 2013 1:50 am
Contactar:

Perdonen que insista...

Mensaje por Rich »

Amigos:
Ya me he mudado a MariaDB, pero desde finales de los ochenta con nuestro amado Clipper summer 87, me hice unas funciones que reconstruidas en Clipper 5.x y metidas en mi libreria personal me permitian reciclar los registros 'deleteados' en lugar de hacer nuevos append blank (siempre que no hubiese ninguna necesidad de hacer recall) y con ello siempre mantuve agiles a las DBF's independientemente de que en algunos casos las hay (todavia viven algunas de mis viejas aplicaciones de 16 bits) con 3 o mas millones de registros activos.
Para quien no ha dado el paso hacia SQL, les recomiendo considerar esta alternativa, ya que hacer packs sin respaldo es peligroso.
Saludos
Saludos amigos.
Rich
Mensajes: 75
Registrado: Mar Mar 12, 2013 1:50 am
Contactar:

Perdonen que insista...

Mensaje por Rich »

Amigos:
Creo que es mas útil que les muestre el código de las funciones mencionadas:
Para borrar logicamente:
#xtranslate OverArgs( <Arg>, <VTy>, <Def> ) => ;
IF( <Arg> = NIL, <Def>, IF( VALTYPE( <Arg> ) != <VTy>, <Def>, <Arg> ) )
FUNCTION OverNDel( lRetry, cAlias, nUserx, nTime, lConfirm )
LOCAL lSuccessFull := .F.
LOCAL nCount
LOCAL nLimit := ( cAlias )->( FCount() )
LOCAL bBlock
lRetry := OverArgs( lRetry , 'L', .F. )
cAlias := OverArgs( cAlias , 'C', Alias() )
nTime := OverArgs( nTime , 'N', 10 )
lConfirm := OverArgs( lConfirm, 'L', .T. )
// Asegura operacion del semaforo validando nUser.
IF ( ValType( nUserx ) != 'N' .OR. Empty( nUserx ) )
RETURN lSuccessFull
ENDIF
// Solicita confirmacion para la supresion del registro.
IF lConfirm
IF !( MsgYesNo( 'CONFIRME BORRADO DE REGISTRO' ))
RETURN lSuccessFull
ENDIF
ENDIF
// Intenta bloquear registro.
IF !( OverNTry( {|| ( cAlias)->( DbRLock())}, ;
If( lRetry, { || MsgYesNo( 'REINTENTAR ACCESO A RED ?' ) }, .F. ), nUserx, nTime ) )
RETURN lSuccessFull
ENDIF
FOR nCount := 1 TO nLimit
IF ValType( ( cAlias )->&( Field( nCount ) ) ) = 'C'
bBlock := { || Space( Len( ( cAlias )->( &( Field( nCount) ) ) ) ) }
ELSEIF ValType( ( cAlias )->&( Field( nCount ) ) ) = 'D'
bBlock := { || CTOD( '' ) }
ELSEIF ValType( ( cAlias )->&( Field( nCount ) ) ) = 'L'
bBlock := { || .F. }
ELSEIF ValType( ( cAlias )->&( Field( nCount ) ) ) = 'M'
//bBlock := { || }
LOOP
ELSEIF ValType( ( cAlias )->&( Field( nCount ) ) ) = 'N'
bBlock := { || 0 }
ENDIF
// Reinicializa el campo en cuestion con valor minimo, lo que provoca que sea
// cual fuere el campo de indexación, el registro aparezca al principio.
( cAlias )->&( Field( nCount ) ) := Eval( bBlock )
NEXT nCount
( cAlias)->( DbDelete() )
// Flush y Refresh.
OverNFls( 2, cAlias )
// Si lo borró.
lSuccessFull := .T.
RETURN lSuccessFull
Para 'agregar' registro:
FUNCTION OverNAdd( lRetry, cAlias, nUserx, lmodo, nTime)
LOCAL lSuccessFull := .F.
OverArgs( lRetry, 'L', .F.)
OverArgs( cAlias, 'C', 10 )
OverArgs( lModo, 'L', .T.)
OverArgs( nTime, 'N', 10 )
SET DELETED OFF
IF lmodo
// Intenta localizar un empty al principio.
( cAlias )->( DBGoTop() )
ELSE
// Intenta localizar un empty al final.
( cAlias )->( DBGoBottom() )
ENDIF
IF ( cAlias )->( Deleted() ) .AND. Empty( ( cAlias )->( Field( 1) ) )
// Asegura operacion del semaforo validando nUser.
// Intenta bloquear registro.
IF ( ValType( nUserx ) != 'N' .OR. Empty( nUserx ) ) .OR. ;
!( lSuccessFull := OverNTry( { || ( cAlias)->( DbRLock() ) }, ;
If( lRetry, { || MsgYesNo( 'REINTENTAR ACCESO A RED ?' ) }, .F. ), nUserx, nTime ) )
SET DELETED ON
RETURN lSuccessFull
ELSE
( cAlias )->( DbRecall() )
ENDIF
ELSE
// Adiciona un registro en blanco.
( cAlias )->( DbAppend() )
lSuccessFull := .T.
ENDIF
// Registrar datos del usuario en campo semaforo.
( cAlias )->net_name := Str( nUserx, 5 )
SET DELETED ON
RETURN lSuccessFull
Saludos.
Saludos amigos.
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Perdonen que insista...

Mensaje por zeasoftware »

Yo hago eso, por que manejo una especie de papelera, donde el usuario puede
recuperar ciertos datos, esto con Delete(); y un proceso de depuración donde
los elimino fí­sicamente de la DBF (mantenimiento).
Exactamente que quieres hacer?
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:[email=51af5462@svctag-j7w3v3j....]51af5462@svctag-j7w3v3j....[/email]
Hola Carlos:
Precisamente porque (creo) que con "delete" enlentece no lo utilizo e
inutilizo las lí­neas que doy de baja con el FOR BAJA<>"S", que lo único que
hace es no indexar esas lí­neas.
"Carlos Ortiz" <cortizassist@hotmail.com> escribió en el mensaje
news:51af5369$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> ojo, cuando las dbf tienen muchos registros deleteados se pone muy lerda
> su gestión.
>
> El 25/05/2013 06:45, Francisco Martí­nez Garcí­a escribió:
>> Perdonen que insista con una pregunta:
>>
>> ¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
>> versiones anteriores de Xailer?
>>
>> Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
>> vuelto superlento y nadie me ha contestado.
>>
>> Simplemente querí­a saber si es que esto es así­ con la nueva versión de
>> xailer.
>>
>> Muchas gracias
>> Paco Martí­nez
>>
>>
>
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Perdonen que insista...

Mensaje por pacoelche »

Hola Ramón:
Mi único problema es que cuando reindexo los ficheros tarda muchí­simo más tiempo que antes.
Cuando tení­a compilados los programas con Xailer 1.9 (xHarbour) me tardaba unos 3 minutos, ahora con Xailer 3 (Harbour) me tarda unos 27 minutos.
Como ya comenté anteriormente el trabajo diario con el programa no parece que se haya vuelto más lento, solo cuando reindexo. Menos mal que esto solo lo utilizo un par de veces al mes y cuando me aseguro que ninguno de los usuarios está utilizando el programa.
Gracias por tu interés
<zeasoftware@hotmail.com> escribió en el mensaje news:[email=51afb0c1@svctag-j7w3v3j....]51afb0c1@svctag-j7w3v3j....[/email]
Yo hago eso, por que manejo una especie de papelera, donde el usuario puede
recuperar ciertos datos, esto con Delete(); y un proceso de depuración donde
los elimino fí­sicamente de la DBF (mantenimiento).
Exactamente que quieres hacer?
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Proveedor Autorizado:
REACHCORE
FACTURAXION
SERVISIM
"Francisco Martí­nez Garcí­a" escribió en el mensaje de
noticias:[email=51af5462@svctag-j7w3v3j....]51af5462@svctag-j7w3v3j....[/email]
Hola Carlos:
Precisamente porque (creo) que con "delete" enlentece no lo utilizo e
inutilizo las lí­neas que doy de baja con el FOR BAJA<>"S", que lo único que
hace es no indexar esas lí­neas.
"Carlos Ortiz" <cortizassist@hotmail.com> escribió en el mensaje
news:51af5369$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> ojo, cuando las dbf tienen muchos registros deleteados se pone muy lerda
> su gestión.
>
> El 25/05/2013 06:45, Francisco Martí­nez Garcí­a escribió:
>> Perdonen que insista con una pregunta:
>>
>> ¿Es normal que crear í­ndices CDX, con Xailer.3 tarde mucho más que con
>> versiones anteriores de Xailer?
>>
>> Hace unos dí­as expuse un problema por el que el proceso de indexar se ha
>> vuelto superlento y nadie me ha contestado.
>>
>> Simplemente querí­a saber si es que esto es así­ con la nueva versión de
>> xailer.
>>
>> Muchas gracias
>> Paco Martí­nez
>>
>>
>
--
Responder