Page 1 of 1

CDX Temporary

PostPosted: Tue Nov 26, 2013 9:07 am
by Loren
Buenos días, compañeros:

Tengo el caso de un aplicativo DBF-CDX en RED LOCAL cuyo "ARTI.DBF" contiene más de 3000 referencias. Para agilizar la búsqueda por palabras de estas referencias sustituí el típico dbsetfilter(&bfiltr,cfiltr) por indices CDX Temporary. Así:

Code: Select all  Expand view
index on descrip tag tempor to tempor temporary for upper(alltrim(nomcl)) $ upper(descrip)


De esta manera las búsquedas son INSTANTANEAS, pero aleatoriamente (NO SIEMPRE) genera un error del tipo Error DBFCDX/1201 Workarea not indexed porque automáticamente "desparece" el resto de índices asociados a esta DBF. ¿Cómo es posible?

¿Habeis utilizado esta forma para búsquedas? ¿Como compatibilizar este índice temporal con el resto de índices?

Mil gracias.
Un saludo.
LORENZO
desde Cádiz, España.

Re: CDX Temporary

PostPosted: Tue Nov 26, 2013 11:08 am
by karinha
Después de usar el indice TEMPORARY haga asi:

SET INDEX TO

SELECT SUDBF

Salu2

Re: CDX Temporary

PostPosted: Tue Nov 26, 2013 1:48 pm
by lucasdebeltran
Loren,

Añade la cláusula ADDITIVE al índice para que se añada a los que ya tienes.

Re: CDX Temporary

PostPosted: Wed Nov 27, 2013 11:23 am
by Loren
Gracias a ambos por contestar.

LucasdeBeltran, añadí la clausula ADDITIVE y aparentemente funciona correcto, pero al salir del programa y volver a entrar me genera un error justo al abrrir las DBF, del tipo:

Unrecoverable error 9104: hb_cdxIndexFree: index file still locked.

ARTI.DBF tiene asociado siempre los siguientes CDX:
2: => ARTI RddName: DBFCDX
___________________________________________________

RecNo RecCount BOF EOF
1478 1477 .T. .T.

Indices en Uso: TagName
TRAN(CODIGOA,'######') CODARTI
DESCRIP DESCRIP
TRAN(FAMILIA,'########') CODFAMI
TRAN(CBARRA_U,'##################')CODBARU
TRAN(CBARRA_C,'##################')CODBARC


.. y al hacer la búsqueda por descripción se hace así:
Code: Select all  Expand view
 index on descrip tag tempor to arti temporary ADDITIVE for upper(alltrim(nomcl)) $ upper(descrip)


He observado que cuando inicia el programa ARTI.DBF tiene asociado un índices más

2: => ARTI RddName: DBFCDX
___________________________________________________

RecNo RecCount BOF EOF
1478 1477 .T. .T.

Indices en Uso: TagName
TRAN(CODIGOA,'######') CODARTI
DESCRIP DESCRIP
TRAN(FAMILIA,'########') CODFAMI
TRAN(CBARRA_U,'##################')CODBARU
TRAN(CBARRA_C,'##################')CODBARC
=> descrip TEMPOR


¿Sabeis la solución al problema? Estoy dandole vuelta y haciendo pruebas pero no logro resolverlo. :cry:

Mil gracias. Un saludo.
LORENZO, desde Cádiz, España.

Re: CDX Temporary

PostPosted: Thu Nov 28, 2013 8:32 am
by Loren
¿...?

Re: CDX Temporary

PostPosted: Fri Nov 29, 2013 5:49 pm
by lucasdebeltran
Prueba con Set autopen off

Y antes de quit, ¿pones dbcloseall()?.

Re: CDX Temporary

PostPosted: Tue Dec 03, 2013 7:51 am
by Loren
Lucasdebeltran

Funcionó con Set autopen off y poniendo antes del quit "dbcloseall()"

Gracias. Un saludo.
LOREN