FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Indice condicional
Posts: 69
Joined: Wed Mar 29, 2006 10:54 PM
Indice condicional
Posted: Tue Apr 04, 2006 03:53 PM

Saludos al foro,

Tengo un programa que tiene un comportamiento distinto en FW y FWH, es referente a indices condicionales. Anexo un ejemplo:

include "FiveWin.ch"

include "ord.ch"

//----------------------------------------------------------------------------//

function Main()
local cNumero
local aCampos := {{ 'NUMERO', 'C', 6, 0 }}

REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )

SET DATE FRENCH
SET CENT ON

dbcreate( 'PRUEBA', aCampos )

use PRUEBA alias PRUEBA
APPEND BLANK
prueba->NUMERO := "100000"

APPEND BLANK
prueba->NUMERO := "200000"

// CASO 1: Con este indice funcion bien lee unicamente el numero "100000"
// INDEX ON prueba->NUMERO TAG prueba1 TO prueba

// CASO 2: Con este indice lee todos los registros
INDEX ON prueba->NUMERO TAG prueba1 TO prueba FOR !DELETED()

cNumero := "100000"

SET SCOPE TO cNumero
GO TOP
DO WHILE !eof()
    msginfo( prueba->NUMERO )

    DELETE
    SKIP
ENDDO

CLOSE ALL

return nil

Esta aplicacion debe eliminar registros dentro de un rango utilizando un indice condicional.

Si creamos la aplicacion con el primer indice funciona ok, pero si lo creamos con el segundo indice el scope no se queda en el valor indicado y sigue hasta el final del archivo. Esto funciona bien en FW. Alguien podria darme una mano con esto ?.

Gracias.

Saludos



Alvaro Urdaneta



Fwh 25.09, xharbour1.3.1, bcc77, Brw45

Posts: 219
Joined: Fri Nov 04, 2005 02:34 PM
Indice condicional
Posted: Tue Apr 04, 2006 10:51 PM

Que tal si intentas esto?

PRUEBA->(OrdScope( 0, cNumero ) )
PRUEBA->(OrdScope( 1, cNumero ) )
PRUEBA->(DBGoTop())

y para quitar el filtro

PRUEBA->(OrdScope( 0, NIL ) )
PRUEBA->(OrdScope( 1, NIL ) )

Espero te sirva

Juan Carlos Salinas Ojeda

México. D.F.

-------------------------------------------------
Posts: 69
Joined: Wed Mar 29, 2006 10:54 PM
Indice condicional
Posted: Tue Apr 04, 2006 11:27 PM

Gracias por la respuesta, hice la prueba y funciona igual, el problema es con el indice condicional y recuerdo haber leido en un foro de xHarbour algo respecto a un bug del INDEX, es posible que eso suceda aqui. Cuando se usan indices condicionales (!DELETED()) y defines un rango se rompe este rango al eliminar algun registro dentro del rango.

Saludos

Saludos



Alvaro Urdaneta



Fwh 25.09, xharbour1.3.1, bcc77, Brw45

Continue the discussion