Antonio,
- este caso unicamente sucede cuando el archivo tiene un (1) registro activo, ( puede tener 10 registros pero 9 borrados )
- se utiliza un indice condicional !DELETED()
- un DO WHILE lee todo el archivo y borra el unico registro activo
- al finalizar DO WHILE ordkeycount() devuelve 1 en lugar de 0
- si invoco ordkeycount() inmediatamente despues de DELETE funciona bien, me parece que despues de un DELETE se pierde el eof() y un ordkeycount() lo restablece
- no puedo utilizar GO TOP como me recomendastes en lugar de SKIP porque puede haber condiciones para eliminar el registro
#include "FiveWin.ch"
#include "ord.ch"
//----------------------------------------------------------------------------//
function Main()
local cNumero, nAlgo
local aCampos := {{ 'NUMERO', 'C', 6, 0 }}
set delete on
REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
dbcreate( 'PRUEBA', aCampos )
select 1
use PRUEBA alias PRUEBA
APPEND BLANK
prueba->NUMERO := "1"
INDEX ON prueba->NUMERO TAG prueba1 TO prueba FOR !DELETED()
GO TOP
DO WHILE !eof()
IF prueba->NUMERO = "1"
DELETE
ENDIF
//si comento la siguiente linea funciona mal ( el mensaje abajo muestra 1 )
//si no lo comento funciona bien ( el mensaje abajo muestra 0 )
// nAlgo := ordkeycount()
SKIP
ENDDO
msginfo( ordkeycount() )
CLOSE ALL
return nil
Saludos