Hola, quisiera saber como puedo saber si un índice no está corrupto cuando abro una base de datos. estoy utilizando fh26 y xharbour 0.99.61
Gracias
IF !FILE( "MIINDICE.CDX" )
? [ es necesario... ]
REINDEXA()
RETURN NIL
ENDIF
surGom wrote:Gracias Karihna pero no es que si el índice no está creado lo haga sino que si el mismo está corrupto me avise para reindexar
Luis
surGom wrote:Hola, quisiera saber como puedo saber si un índice no está corrupto cuando abro una base de datos. estoy utilizando fh26 y xharbour 0.99.61
Begin Sequence
Set Index To.......
Recover
MsgWait( "Reindexando", "Indice corrupto o Inexistente" )
Index On ......
End Sequence
Recover recibe el control cuando se genera un error y con el código que muestras no se produce ninguno ya que no estás abriendo ningún índice.surGom wrote:Manuel probé con tu solución pero no me resultó ó no la entiendo bien, hice lo siguiente
use Detemb
DATABASE oDetemb
begin Sequence
oDetemb:setorder(3)
recover
? "Base desordenada" // la idea es llamar a una funcion que indexe
End Sequence
surGom wrote:Gracias Karinha pero me ha pasado que se corrompe el índice si hay un corte de corriente y al reanudar me tira error al buscar algún dato, por eso es que quiero saber al abrir la base de datos si el índice esta desordenado que me avise.
Manuel probé con tu solución pero no me resultó ó no la entiendo bien, hice lo siguiente
use Detemb
DATABASE oDetemb
begin Sequence
oDetemb:setorder(3)
recover
? "Base desordenada" // la idea es llamar a una funcion que indexe
End Sequence
Un abrazo
REQUEST OrdKeyNo, OrdKeyCount, OrdKeyGoto
FUNCTION MAIN()
SELECT( NOMBREBANCO )
SET ORDER TO MIINDICE
GO TOP
If OrdkeyCount() # RecCount()
MIRACDX("NOMBREBANCO")
Endif
RETURN NIL
//
Static Function MIRACDX( XARCHIVO )
SndPlaySound( "Erro.Wav" )
MsgInfo(oemtoansi("ATEN€ÇO !!! O Sistema Detectou Que Um dos Öndices do Arquivo: "+XARCHIVO+".DBF" )+CRLF+;
oemtoansi(" Est Corrompido ou Desatualizado. Isto Ocorre as Vezes Por Queda" )+CRLF+;
oemtoansi(" de Energia ou Desligamento Incorreto do Computador. Ser Preciso" )+CRLF+;
oemtoansi(" Corrigir o Problema Para Evitar Erros na Opera‡Æo do Sistema." )+CRLF+;
oemtoansi(" O Programa Ser Agora Conduzido Para a Rotina de Indexa‡Æo de Dados.")+CRLF+;
oemtoansi(" Apenas Confirme a Op‡Æo de Indexa‡Æo. Tecle Enter..."),;
oemtoansi("Reorganiza‡Æo Obrigat¢ria dos Dados"))
DbCLoseAll()
Reindexa(0) //-> Indexador
__Quit()
Return Nil
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: groiss and 75 guests