Pessoal e professores boa noite!
Pra não abrir outro tópico desnecessariamente, posto aqui minha dúvida:
Tenho usado o seguinte código para renomear o meu "arquivo.dbf" para "arquivo.dbf2" (nome fictício só para efeito didático).
No momento da renomeação, tudo ocorre perfeitamente.
Agora, crio um novo arquivo (sem nenhum campo) e através de uma matriz que pegou todos os nomes dos campos do "arquivo.dbf" (antes de renomear) e para voltar os dados novamente para o novo "arquivo.dbf" uso o APPEND FROM.
Vejam, como essas linhas funcionam:
Código: Selecionar todos
(...)
&ARQUIVO.->(dbclosearea())
if frename(NOME_EXTERNO, NOME_EXTERNO+"2") = 0
dbcreate(NOME_EXTERNO, a_stru)
use (NOME_EXTERNO) exclusive new
// append from &NOME_EXTERNO.+"2"
// append from "&NOME_EXTERNO."+"2"
append from C:\SISTEMA\CADCLI.DBF2
use
// ferase(&NOME_EXTERNO.+"2")
else
wait 'não alterou o nome do arquivo'
return
endif
(...)
Observerm que comentei 3 linhas: 2 com o APPEND FROM e uma com o ERASE. Quero falar sobre as linhas do APPEND FROM.
Bom, não postei o código, mas, explico o conteúdo (básico) das 2 matrizes que aqui chamo de ARQUIVO e NOME_EXTERNO.
ARQUIVO = "CADCLI" (uso para identificar apenas o alias())
NOME_EXTERNO = "C:\SISTEMA\CADCLI.DBF" (aqui é o caminho e nome completo do arquivo)
Então - prezados professores, como estou usando & (macro substituição) para renomear o arquivo (NOME_EXTERNO) para NOME_EXTERNO2 (e funciona corretamente).
Como faço para que o APPEND FROM (linhas comentadas) usem a macrosubstituição?
Por que a minha pergunta, se eu posso muito bem colocar o nome como fiz?
É muito simples, essas 2 matrizes (ARQUIVO e NOME_EXTERNO) são passadas por referência e quero usar essa função ALTERA_ARQUIVO() em todos os módulos.
Alguém pode testar o código e me dar uma solução?
grato!