Gostaria de uma confirmação sobre um bug com indices temporários usando a clausula Temporary ou Memory Additive com o rdd Leto
A situação é esta:
Em uma rotina eu faço isto:
O indice real da tabela APC01 é APC01.CDX
APC01->(ordListClear()) //Remove o indice APC01.CDX da área de trabalho.
Até aqui tudo bem, não há indice na área de trabalho.
Só para confirmar que não há nenhum indice na área de trabalho, faço o For..Next OrdCont() que é zero
FOR I:=1 TO APC01->(OrdCount())
? APC01->(OrdName(i))
? APC01->(OrdKey(i))
? APC01->(OrdFor(i))
inkey(0)
NEXT
Agora é criado o indice temporário:
INDEX ON CODIGO TAG TEMPIND01 FOR !Deleted() TEMPORARY ADDITIVE //Aparentemente cria o indice temporário.
O Problema que eu verifiquei é que o aquivo APC01.CDX foi atualizado!!!???
Então temos um bug na criação de indices temporários com LetoDb?
Fiz o mesmo teste em um programa sem letodb usando somente o rdd dbfcdx
O resultado do teste foi sem erro, o indice temporário foi criado e o indice fisico apc01.cdx não foi modificado.
USE APC01 ALIAS APC01 SHARED NEW VIA "DBFCDX"
INDEX ON CODIGO TAG CODIGO TO APC01
APC01->(DbCloseArea())
USE APC01 ALIAS APC01 SHARED NEW VIA "DBFCDX"
SET INDEX TO APC01.CDX
FOR I:=1 TO APC01->(OrdCount())
? APC01->(OrdName(i))
? APC01->(OrdKey(i))
? APC01->(OrdFor(i))
inkey(0)
NEXT
APC01->(OrdListClear())
FOR I:=1 TO APC01->(OrdCount()) //verifica se há algum indice
? APC01->(OrdName(i))
? APC01->(OrdKey(i))
? APC01->(OrdFor(i))
inkey(0)
NEXT
INDEX ON UTI+CODIGO TAG TEMPIND01 FOR UTI="S" .AND. !Left(Classe_Pg,2) $ "06,08,10,11,12" .AND. Empty(D_Faleci) .AND. Empty(D_Deslig) .AND. !Deleted() TEMPORAY ADDITIVE
FOR I:=1 TO APC01->(OrdCount())
? APC01->(OrdName(i))
? APC01->(OrdKey(i))
? APC01->(OrdFor(i))
inkey(0)
NEXT