Estimados
Hoy me ha pasado algo raro mi programa no localizaba un producto pero si estaba en la tabla y al parecer no se habia actualizado el indice
alguna forma de chequear si esta los indices correctos o corructos
utiliza DBF Y CDX
como saber si el indice esta bien con su base de datos
- Patricio Avalos Aguirre
- Posts: 1060
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
como saber si el indice esta bien con su base de datos
Saludos
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
- Rick Lipkin
- Posts: 2668
- Joined: Fri Oct 07, 2005 1:50 pm
- Location: Columbia, South Carolina USA
Re: como saber si el indice esta bien con su base de datos
Patricio
Just curious .. I hope you are using the compound Cdx and not a single or multiple Idx(s) ? If you are using Idx .. only the OPEN index will be updated .. otherwise using Cdx .. when you complete an Append or Edit a record .. are you issuing a DbCommit() ?
DbCommitt() is a 'hard disk' write which also forces the ( compound ) Cdx index to be updated as well... especially in a multi-user application.
Rick Lipkin
Just curious .. I hope you are using the compound Cdx and not a single or multiple Idx(s) ? If you are using Idx .. only the OPEN index will be updated .. otherwise using Cdx .. when you complete an Append or Edit a record .. are you issuing a DbCommit() ?
DbCommitt() is a 'hard disk' write which also forces the ( compound ) Cdx index to be updated as well... especially in a multi-user application.
Rick Lipkin
Re: como saber si el indice esta bien con su base de datos
En su dia hice rutinas al respecto que fueron un desastre.
¿ Desastre ? Si, porque eran super lentas. Mucho mas lentas que reconstruir los indices.
Lo que hacia era comprobar que &( Indexkey(nTag) ) == OrdKeyVal() para cada registro y para cada tag del indice.
Luego pensé en hacerlo sólo con los últimos registros, porque serían los más susceptibles de estar desindexados...
Al final lo dejé como causa perdida.
¿ Desastre ? Si, porque eran super lentas. Mucho mas lentas que reconstruir los indices.
Lo que hacia era comprobar que &( Indexkey(nTag) ) == OrdKeyVal() para cada registro y para cada tag del indice.
Luego pensé en hacerlo sólo con los últimos registros, porque serían los más susceptibles de estar desindexados...
Al final lo dejé como causa perdida.
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: como saber si el indice esta bien con su base de datos
Code: Select all | Expand
SELECT CADCLIEN
SET ORDER TO 01
IF ORDKEYCOUNT() # RECCOUNT()
VERIFY_CDX( "CADCLIEN" )
ENDIF
// Verifica .CDX
FUNCTION VERIFY_CDX( XNOMBREARQ )
MsgInfo( "Atencion... Problemas en el indice", "Atencion..." )
RETURN NIL
Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- karinha
- Posts: 7935
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: como saber si el indice esta bien con su base de datos
hmpaquito wrote:En su dia hice rutinas al respecto que fueron un desastre.
¿ Desastre ? Si, porque eran super lentas. Mucho mas lentas que reconstruir los indices.
Lo que hacia era comprobar que &( Indexkey(nTag) ) == OrdKeyVal() para cada registro y para cada tag del indice.
Luego pensé en hacerlo sólo con los últimos registros, porque serían los más susceptibles de estar desindexados...
Al final lo dejé como causa perdida.
hmpaquito, algo asi?
Code: Select all | Expand
#include "FiveWin.ch"
FUNCTION DISPLAYKEYS()
FIELD First
LOCAL cKey, cFirst, cLast, cAlias, nTag
USE Customer NEW
INDEX ON First TAG nTag TO LastFir
GO TOP
cAlias := ALIAS()
WHILE !EOF()
cKey := ( cAlias )->( ORDKEYVAL() ) // Get key
// value
cLast := LEFT(cKey, 20) // Get last
// name
cFirst := RIGHT(cKey, 20) // Get first
// name
IF &( Indexkey(nTag) ) == OrdKeyVal()
// NADA A HACER
ELSE
// ? cLast, cFirst
? "Problemas en el indice .CDX?"
RETURN NIL
ENDIF
DBSKIP()
SYSREFRESH()
ENDDO
CLOSE
RETURN NIL
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341