Rubens, o João descobriu, se mandar DBSETORDER(0) antes de fechar o Temporário é destruido. Testei aki e deu certo...
Agora outra questão relacionada ao assunto:
FUNCTION TstTemporary // Rubens Topic 17412 Apagar Indice Temporary
Use ConRec.DBF alias ConRec New Share
Alert( str( OrdCount() ) ) //-----------------> Mostra 12
nSecIni:=Seconds()
Index on Recno() TAG TEMP TO TstTemp FOR ConRec->Cancelado== 'S' TEMPORARY //---------> Não teria q ser pra um outro arquivo de indice Temporario?
Alert(SecToTime(Seconds()-nSecIni))
Alert( str( OrdNumber()) ) //----------------> Mostra 13
Alert( str( OrdCount() ) ) //-----------------> Mostra 13 ou seja acabou ADICIONANDO no indice do ConRec e não em outro
DbSetOrder(0) //------------> Legal apagou o Chave/Tag Temporaria nr 13 pq depois listo e vemos q tem 12, apesar de não ser a intenção deste teste pq não era pra ser a Ordem 13 pq setei jogar em um novo Arquivo de Indice.
dbcloseall()
Use ConRec.DBF alias ConRec New Share
Alert( str( OrdCount() ) ) //---------------------> Mostrou 12
Agora se refaço o teste acima com SET AUTOPEN OFF
E seto o Indice com dbSetIndex( Nome Indice ) ai cria separado e os resultados são os esperados.
Então concluo que:
SET AUTOPEN ON o Indice Temporario joga como Additive no indice de mesmo nome da tabela MESMO não tendo ADDITIVE no comando
DbSetOrder(0) Destroi o Temporario, não precisando mudar de ordem e depois mandar o OrdDestroy
A Nivel de desempenho o Indice temporário é bem melhor e não precisa do HB_MEMIO para isso
Concordam com os resultados? Alguma observação ou algo a acrescentar ou divergir?