Página 1 de 1
duvida para fechar arquivo
Enviado: 19 Jul 2013 16:24
por porter
ola pessoal, estou tentando fechar um arquivo, mas olhando pelo debugador percebi que esse comando nao da erro mas nao fecha o arquivo, estou fazendo assim:
assim nao fecha
PLAC = "PLACON12"
CLOSE("&PLAC..DBF")
assim fecha
CLOSE PLACON12
eu nao posso deixar um arquivo fixo porque o nome do arquivo esta sempre mudando por isso tenho que fechar assim CLOSE("&PLAC..DBF")
obrigado.
duvida para fechar arquivo
Enviado: 19 Jul 2013 16:33
por alxsts
Olá!
Esqueça as macros que degradam a performance da aplicação.
Código: Selecionar todos
LOCAL cAlias
cAlias := "PLACON12"
(cAlias)->( DbCloseArea() )
duvida para fechar arquivo
Enviado: 19 Jul 2013 16:36
por alxsts
Olá!
Outra coisa: quando se fecha uma área de trabalho, usa-se o nome do alias da área ou o seu número. Não se usa a extensão do arquivo (.DBF), como você está fazendo. Creio que é por isso que não está funcionando.
Edit:
- Close não é uma função, como você está tentando utilizar.
- Se for utilizar macros, o operador macro deve ser colocado no lugar correto, fora da string: &"PLACON" ao invés de "&PLACON" (esta última forma é uma string comum, com valor &PLACON)
duvida para fechar arquivo
Enviado: 19 Jul 2013 16:56
por porter
obrigado alxsts, da forma como postei funcionava no clipper, harbour eu nunca tinha usado, agora deu certo fechando o alias.
valeu.
duvida para fechar arquivo
Enviado: 30 Jul 2013 10:10
por Amparo
ola amigos
desenterrando um pouquinho o post...
ao inves de usar
LOCAL cAlias
cAlias := "PLACON12"
(cAlias)->( DbCloseArea() )
voce pode usar o comando diretamente, assim nao precisa criar mais variaveis basta apenas que a area ativa seja a qual voce quer fechar
DBCLOSEAREA(alias())
abraços
amparo
duvida para fechar arquivo
Enviado: 30 Jul 2013 11:28
por alxsts
Olá!
porter escreveu:eu nao posso deixar um arquivo fixo porque o nome do arquivo esta sempre mudando
Usei uma variável para atender a necessidade do colega Porter, que informou que o nome do arquivo é variável.
Não há dúvida de que a
função pode ser usada diretamente e, neste caso, fechará a área corrente.
Para fechar uma área não selecionada, é só usar uma expressão com o operador alias (->), especificando o nome da área a fechar (o nome pode ser literal ou estar em uma variável) :
Código: Selecionar todos
PROCEDURE Main
LOCAL cAlias
USE Product SHARED NEW
USE Customer SHARED NEW
USE Invoice SHARED NEW // Área corrente
Customer->( dbCloseArea() ) // Fecha a área que não está selecionada
cAlias := "Product"
(cAlias)->( dbCloseArea() ) // Fecha a área Product com uma expressão com alias
RETURN
//-----------------------------------------------------------------------
Aliás, esta
função não aceita parâmetros de entrada, como mostrado no post anterior. Caso sejam informados, são ignorados.