Página 1 de 1
Saber se DBF já está aberto
Enviado: 06 Dez 2016 01:40
por lugab
Pessoal, boa noite...
No programa cheio de funções, vários arquivos vão sendo abertos, mas eu preciso saber saber se um deles, por exemplo o arquivo "Barquivo.dbf com o aliás arqB", já foi aberto anteriormente em algum outro trecho...
exemplo:
Código: Selecionar todos
use Aarquivo shared new alias arqA
use Barquivo shared new alias arqB
use Carquivo shared new alias arqC
Como faço pra saber ? Eu uso Hb20, console...
Saber se DBF já está aberto
Enviado: 06 Dez 2016 02:49
por Jairo Maia
Você pode usar a função Select():
Código: Selecionar todos
nArea := Select( arqB )
If nArea = 0
SELE 0
USE "Aarquivo.dbf" Shared New Alias arqB
Else
DbSelectArea( nArea )
EndIf
Saber se DBF já está aberto
Enviado: 06 Dez 2016 20:02
por lugab
Obrigado, Jairo. Vou testar.
O comando select() seria assim:
ou assim
?
Saber se DBF já está aberto
Enviado: 06 Dez 2016 20:20
por Jairo Maia
Ops!!! Tem razão...
O correto é entre aspas, pois no exemplo foi usado o nome literal do Alias, não variável. Mas seria rápido você perceber, receberia o RTE de variável inexistente.
Saber se DBF já está aberto
Enviado: 07 Dez 2016 15:18
por JoséQuintas
O comando select() seria assim:
Cuidado com o texto... e com o fonte também.
Existe o comando SELECT
Existe a função Select()
Parece a mesma coisa, mas não é.
SELECT é o comando pra trocar a área em uso
Select() é a função pra retornar qual a área
Em algumas rotinas até uso isto:
Mais um motivo pra manter o fonte bem formatado, ou até usar maiúsculas/minúsculas pra comandos e funções.
Saber se DBF já está aberto
Enviado: 07 Dez 2016 19:00
por lugab
Jairo e Quintas,
muito obrigado..
Saber se DBF já está aberto
Enviado: 08 Dez 2016 11:21
por Itamar M. Lins Jr.
Ola!
Esse é mais smart!
https://harbour.github.io/doc/harbour.html#used
Saudações,
Itamar M. Lins Jr.
Saber se DBF já está aberto
Enviado: 08 Dez 2016 12:48
por JoséQuintas
Esse não serve.
Código: Selecionar todos
d:\temp>test
Error BASE/1002 Alias does not exist: TESTS
Called from MAIN(3)
d:\temp>
Saber se DBF já está aberto
Enviado: 08 Dez 2016 13:03
por Itamar M. Lins Jr.
Ola!
OXIIII, como não ? até tu Brutus
Código: Selecionar todos
IF !test->(used())
use test new
else
? test->name...
ENDIF
Se vai abrir tem que testar antes, ora !!! tira o "S"! ou coloca o "S" no test
Saudações,
Itamar M. Lins Jr.
Saber se DBF já está aberto
Enviado: 08 Dez 2016 13:31
por JoséQuintas
Teste o seu exemplo.
Código: Selecionar todos
PROCEDURE Main
IF !test->(used())
use test new
else
? test->name
ENDIF
RETURN
Código: Selecionar todos
d:\temp>test
Error BASE/1002 Alias does not exist: TEST
Called from MAIN(3)
d:\temp>
A questão é simples: como vai acessar um alias que não existe?
Saber se DBF já está aberto
Enviado: 08 Dez 2016 13:39
por Itamar M. Lins Jr.
Vixi!!
Isso mesmo, sou eu que estou me passando aqui. Escrevendo uma coisa pensando em outra.
Saudações,
Itamar M. Lins Jr.
Saber se DBF já está aberto
Enviado: 08 Dez 2016 18:49
por asimoes
Será que não é mais simples:
Saber se DBF já está aberto
Enviado: 08 Dez 2016 19:55
por JoséQuintas
Sim, isso já foi descrito acima.
A última parte foi referente a uma sugestão inválida.
Saber se DBF já está aberto
Enviado: 18 Jan 2017 23:19
por lugab
Obrigado, Jairo, Quintas, Itamar e Asimoes.
Ta resolvido.
Vc são super solidários