Página 1 de 1

Porque o EVAL({||}) e EVERY no "index on" não está

Enviado: 27 Fev 2007 13:29
por Cezar
Boa tarde,

No clipper eu tinha esta rotina de indexação funcionado:

A função eval() executa a funçao Meter( aMeter ) para desenhar uma barra de progresso e seria executada em função do valor do comando EVERY.

Exemplo:
Total de Regs := ( LastRec() * 2 )
5000regs. no arquivo x 2 indices = 10000 regs. total
aMeter[3] := 1

INDEX ON CodMat TAG "I01" TO ( cInd ) EVAL {|| Meter( aMeter ) } EVERY aMeter[3]
INDEX ON DesMat TAG "I02" TO ( cInd ) EVAL {|| Meter( aMeter ) } EVERY aMeter[3]

Como o valor do EVERY = 1 , a função Meter( aMeter ) será executada 10000 !
Se o EVERY = 2 a função Meter( aMeter ) será executada 5000 !

No xHarbour isto não está funcionando, no caso o EVERY so executa a função Meter( aMeter ) 2 vezes. Sempre a qtde de indices.

Voces tem idéia do que acontece ??

Agradeço a dica.

cez_a@ubbi.com.br

Enviado: 28 Fev 2007 02:05
por Cezar
ola,

Index On CodCli To Clientes Tag "I01" Eval {|| Meter( aMeter ) } Every aMeter[3]

O problema era, na função Meter( aMeter ), deveria ter um RETURN(.T.) e estava Nil.

Grato.