Olá,
Estamos com um fonte onde implementamos o uso do fwtemporarytable e observamos que o reclock( 'tabela', .T. ) criava somente uma única linha independente do loop realizado, ou seja, ficávamos sempre com uma tabela de um único registro. Somente conseguimos sanar o problema voltando para o dbappend. Algo vivenciou isso?
Obs.: Exemplo anexo.
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Marcelo, parece estar correto, se você fizer um DBGoTop antes do DBEval, continua gerando esse problema? Depurando, ele entra na função IncTabTmp mais de uma vez?
Daniel, a função inctabtmp é chamada tantas vezes quantas linhas existirem na query de montagem. Mas valeu a dica, somente postei para ver se alguém já tinha visto essa situação. Grato pelo apoio.
Observamos que a situação ocorre dentro de um dbeval, se utilizarmos um do while esta não ocorre. A alternativa encontrada foi: usar o dbeval mas com dbappend e dbcommit ou usar a reclock dentro de um do while.
Marcelo, o DBEval trabalha com bloco de código, que salva toda a sua stack de execução, com isso, ele pode estar interferindo em algum controle de variável/semáforo. Se a sua tabela origem for um valor presente no banco de dados, recomendo não utilizar nenhum dos dois métodos citado, utiliza na verdade um insert into, com uma performance muito melhor, pois o próprio banco de dados que resolve isso.