Page 1 of 2

en xHarbour + ADS no andan los indices idx.

Posted: Mon Oct 01, 2007 12:40 pm
by acartucho
Estoy migrando las aplicaciones a xHarbour + Fivewin con RddAds, pero me encuentro con el problema que en xHarbour las tablas de mas de 2 millones de registros tienen problemas con los indices (no encuentra los registros en bases dbf con indices idx, no pasa en ADT con indices ADI) y migrar a adt + adi me trae el problema con la aplicaciones viejas en clipper. Si se les ocurre alguna idea te lo voy a agradecer.

Andres

ADS 8.1 para 250 usuarios sobre novell 5.
xHarbour 0.9971 + FiveWin 7.01
esta con el cliente que viene en la version 8.1
y con la correcta ace32.lib

Posted: Mon Oct 01, 2007 2:02 pm
by Carlos Mora
Has probado con CDX? los 2 millones de registros no serán limitaciones propias del IDX? IDX es un formato más que antiguo, de Foxbase original si no me equivoco, y por lo tanto los limites son bajos.

Un saludo,

Carlos.

Posted: Mon Oct 01, 2007 2:26 pm
by acartucho
Los programas en Clipper+FiveWin no tienen problemas con los indices, por lo tanto los indices no tienen problemas. Gracias

Andres

Posted: Mon Oct 01, 2007 4:48 pm
by R.F.
Acabo de probar un indice IDX con una tabla de 5 millones de registros y va perfecto con ADS 8.1 y xHarbour

¿ Que error te esta marcando ?

Posted: Mon Oct 01, 2007 5:41 pm
by acartucho
En indices como numero de documento str(dni,10) o apellido con los 18 caracteres, me da found()=FALSE como que no estuviera en la tabla, cuando en realidad si hago el seek con clipper+fivewin si lo encuentra.
Me da la impresion que cuando la variable del indice supera mas de 10 caracteres ahi empienzan los problemas. Gracias por contestar

Posted: Mon Oct 01, 2007 7:52 pm
by Carlos Mora
Podrías postear el trozo de código que te falla? La verdad es que me parece extraño. No he usado los IDX desde hace mucho, y no he tenido + de 2 millones de registros, pero que te falle un seek me parece raro. Me gustaria ver el código para ver que puede estar cambiando de un compilador a otro.
Un saludo,
Carlos

Posted: Mon Oct 01, 2007 8:46 pm
by acartucho
cDocumento:=92345678
Select Solicitud
seek str(cDocumento,10)
if found() // aqui sale por falso y esta en los indices!!

si lo hago en Clipper + FiveWin lo encuentra.


Gracias.
Andres

Posted: Mon Oct 01, 2007 9:01 pm
by sysctrl2
Andres , tienes que cambiar el indice,

INDEX ON STRZERO(DOCUMENTO,10)

nDocumento := strzero(92345678,10)

if dbseek(nDocumento )
msginfo( 'encontrado' )
endif




saludos...

Posted: Tue Oct 02, 2007 11:35 am
by acartucho
No es ese el problema porque con un seek buscando apellido tampoco funciona en xHarbour y si en Clipper. Para mi el problema esta entre la Rddads de xHarbour y la dll de ads.

Gracias.

Andres

Posted: Tue Oct 02, 2007 1:13 pm
by Patricio Avalos Aguirre
Hola

Yo tuve algo parecido en algun tiempo

el problema era que utilizaba las bases de datos creadas por clipper,

lo que hice fue hacer un procedimiento de crear las bases de datos en xharbour, luego hacer un append from y luego indexar todo a travez de un programa hecho en xharbour.

podrias probar a ver si te soluciona el problema

suerte..

Posted: Tue Oct 02, 2007 10:54 pm
by R.F.
No uses FOUND() esa funcion fue marcada como obsoleta en la version 5.3 de Clipper., utiliza mejor :

IF DBSEEK(valor)...
....
...

Funciona mejor.

Tambien es cierto que el hecho de usar tablas DBF con indices CDX afecta, ya que la estructura DBF que Clipper utiliza con los indices CDX no es exactamente compatible con la estructura nativa de FoxPro, y ADS si utiliza una estructura nativa CDX de Fox.

Curiosamente un programa en Clipper no tiene problemas en leer una tabla CDX creada con ADS o con Fox, pero Fox y ADS si pueden presentar problemas manejando una tabla DBF con indices CDX creada con Clipper.

Posted: Wed Oct 03, 2007 12:21 pm
by acartucho
Gracias, voy crear los dbf con xHarbour y hacer un append, regenerar los indices y ver que pasa. Muchas gracias.

Andres

Posted: Thu Oct 04, 2007 12:50 pm
by acartucho
Rene:

Cree la dbf con xHarbour e hice un append desde la base, genere los nuevos indices idx y en un archivo de fichas de personas de 3.600.000 registros y con un indice con los primeros 18 digitos del apellido, me encuentra apellidos hasta MORENO, si busco apellidos que empienza con la O en adelante no encuentra nada, el found() y DBSEEK() dan FALSE y con SOFTSEEK ON se va al final del archivo. En clipper + fivewin el seek me encuentra todo sin problemas. Gracias por la atencion.

Andres

ADS 8.1 para 250 usuarios sobre novell 5.
xHarbour 0.9971 + FiveWin 7.01
esta con el cliente que viene en la version 8.1

Posted: Fri Oct 12, 2007 11:51 am
by acartucho
Aparentemente descubri donde esta el problema, si los indices se generan con Clipper+Fivewin, xHarbour tiene problemas en encontrar algunos registros y si los genero con xHarbour, cuando los abro con Clipper+Fivewin da error al realizar busquedas. No son compatibles entre si los indices generados con aplicaciones de 16 y 32 bits utilizando ADS 8.1.

Posted: Fri Oct 12, 2007 1:40 pm
by Patricio Avalos Aguirre
Hola

La version de clipper es la 5.3, si no lo es puedes recompilar con esta version y probar