duvida para fechar arquivo

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

duvida para fechar arquivo

Mensagem 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.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

duvida para fechar arquivo

Mensagem por alxsts »

Olá!

Esqueça as macros que degradam a performance da aplicação.

Código: Selecionar todos

LOCAL cAlias

cAlias := "PLACON12"

(cAlias)->( DbCloseArea() )
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

duvida para fechar arquivo

Mensagem 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)
[]´s
Alexandre Santos (AlxSts)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

duvida para fechar arquivo

Mensagem por porter »

obrigado alxsts, da forma como postei funcionava no clipper, harbour eu nunca tinha usado, agora deu certo fechando o alias.

valeu.
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

duvida para fechar arquivo

Mensagem 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
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

duvida para fechar arquivo

Mensagem 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.

Código: Selecionar todos

dbCloseArea()
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.
[]´s
Alexandre Santos (AlxSts)
Responder