FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour CDX Temporary
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM

CDX Temporary

Posted: Tue Nov 26, 2013 09:07 AM
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 (fw): Select all Collapse
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.
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM

Re: CDX Temporary

Posted: Tue Nov 26, 2013 11:08 AM

Después de usar el indice TEMPORARY haga asi:

SET INDEX TO

SELECT SUDBF

Salu2

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM

Re: CDX Temporary

Posted: Tue Nov 26, 2013 01:48 PM

Loren,

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

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM

Re: CDX Temporary

Posted: Wed Nov 27, 2013 11:23 AM
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 (fw): Select all Collapse
  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. :-)

Mil gracias. Un saludo.
LORENZO, desde Cádiz, España.
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM

Re: CDX Temporary

Posted: Thu Nov 28, 2013 08:32 AM

¿...?

Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM

Re: CDX Temporary

Posted: Fri Nov 29, 2013 05:49 PM

Prueba con Set autopen off

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

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM

Re: CDX Temporary

Posted: Tue Dec 03, 2013 07:51 AM

Lucasdebeltran

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

Gracias. Un saludo.
LOREN

Continue the discussion