Saber se alias esta em uso
Moderador: Moderadores
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Saber se alias esta em uso
Preciso saber se um arquivo esta em uso
use personal alias pers
use cupom alias cup new
use cliente alias cli new
sele pers // se nao existir pers dá erro que o alias nao existe
user personal alias pers // se o arquivo estiver aberto da erro
Como eu posso verificar se o alias pers está em uso ?
Obrigado
Rubens
use personal alias pers
use cupom alias cup new
use cliente alias cli new
sele pers // se nao existir pers dá erro que o alias nao existe
user personal alias pers // se o arquivo estiver aberto da erro
Como eu posso verificar se o alias pers está em uso ?
Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você
"
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Saber se alias esta em uso
Olá!
Código: Selecionar todos
IF Select( "Cliente" ) == 0
Use Cliente Shared New Index Cliente1
Endif[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Saber se alias esta em uso
Olá uma pequena correção:
Veja:
Se usar a clausula ALIAS o nome do ALIAS deve ser usado na função SELECT() caso contrário use o próprio nome do DBF
Veja:
Se usar a clausula ALIAS o nome do ALIAS deve ser usado na função SELECT() caso contrário use o próprio nome do DBF
Código: Selecionar todos
*Com ALIAS
IF Select( "Cust" ) == 0
USE Customer ALIAS Cust NEW
ENDIF
*Com nome do DBF
IF Select( "Customer" ) == 0
USE Customer NEW
ENDIF
IF Select( "pers" ) == 0
use personal alias pers
ENDIF
IF Select( "cup" ) == 0
use cupom alias cup new
ENDIF
IF Select( "cli" ) == 0
use cliente alias cli new
ENDIF
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Saber se alias esta em uso
Amiguinhos,
Como ALIAS é um apelido momentaneo e se voce abrir um mesmo .DBF com vários ALIASes prefira usar o apelido para a critica.
Caso não queira digitar tantas linhas como acima use este comando estendido no inicio .PRG principal:
Ai seu primeiro codigo ficará assim:
O comando extendio faz a critica para voce e abre ou seleciona a tabela. A função mensagem pode ser trocada pela mesma que voce usa no sistema ou pelo alert() padrão.
No caso de tentar saber, em uma rotina de indexação ou travamento, se o arquivo possa estar aberto em outra estação use:
Uso:
Como ALIAS é um apelido momentaneo e se voce abrir um mesmo .DBF com vários ALIASes prefira usar o apelido para a critica.
Código: Selecionar todos
USE clientes ALIAS clientes1
USE clientes ALIAS clientes2
USE clientes ALIAS clientes3
IF Select( "clientes2" ) == 0
USE clientes NEW ALIAS clientes2
ELSE
Select( "clientes2" )
ENDIF
Código: Selecionar todos
#command OPEN <(db)> ;
[VIA <rdd>] ;
[ALIAS <a>] ;
[<new: NEW>] ;
[<ex: EXCLUSIVE>] ;
[<sh: SHARED>] ;
[<ro: READONLY>] ;
[INDEX <(index1)> [, <(indexn)>]] ;
=> iif( Select( <(db)> )==0, iif( !File( <(db)>+".CDX" ), ( Mensagem( "Arquivo "+<(db)>+" esta sem indices. Abrindo sem indices. Reorganiza primeiro" ), dbNetUseArea( <.new.>, <rdd>, <(db)>, <(a)>, if(<.sh.> .or. <.ex.>, !<.ex.>, NIL), <.ro.>, 0 ) ), ( dbNetUseArea( <.new.>, <rdd>, <(db)>, <(a)>, if(<.sh.> .or. <.ex.>, !<.ex.>, NIL), <.ro.>, 0 ), dbSetIndex( <(db)> ) ) ), ( dbSelectArea( <(db)> ) ) )
Código: Selecionar todos
OPEN clientes NEW ALIAS clientes1
OPEN clientes NEW ALIAS clientes2
OPEN clientes NEW ALIAS clientes3
//IF Select( "clientes2" ) == 0
// USE clientes NEW ALIAS clientes2
//ELSE
// Select( "clientes2" )
//ENDIF
No caso de tentar saber, em uma rotina de indexação ou travamento, se o arquivo possa estar aberto em outra estação use:
Código: Selecionar todos
Function dblocked( dbf )
ldbf := FOPEN( dbf, 1 )
IF FERROR() <> 0
RETURN .t.
ENDIF
FCLOSE(ldbf)
RETURN .f.
Código: Selecionar todos
...
if dblocked( "clientes.dbf" )
? "Arquivo ainda aberto em outra estação."
endif
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Saber se alias esta em uso
Muito Bom Rochinha!
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Saber se alias esta em uso
Olá!
Excelentes respostas!
Para ser rápido, respondi da forma mais simples, para o Rubens sair logo do enrôsco...
Excelentes respostas!
Para ser rápido, respondi da forma mais simples, para o Rubens sair logo do enrôsco...
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Saber se alias esta em uso
Amiguinhos,
alxsts a forma como voce respondeu foi direta ao ponto mesmo, e inclusive é provavelmente uma solução unica, ou seja, praticamente padrão.
Como faltava um perfuminho, hehehe, coloquei.
alxsts a forma como voce respondeu foi direta ao ponto mesmo, e inclusive é provavelmente uma solução unica, ou seja, praticamente padrão.
Como faltava um perfuminho, hehehe, coloquei.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Saber se alias esta em uso
Eu uso a seguinte forma para abrir arquivos e seus índices;
Nas rotinas quando precisar do arquivo de notas (NFE_NOTA), coloco:
ABRENFNO(0) onde:
ABRENFNO = rotina de abertura do arquivo NFE_NOTA cujo alias é NFNO
0 = parametro para indicar ao sistema para deixar o arquivo aberto
1 = parametro para fechar o arquivo = usado para testar somente se o arquivo existe
2 = parametro para gerar o índice incondicionalmente, mesmo que ele exista
Ela é bem simples de ser implementada e funciona.
Espero ter ajudado no propósito principal deste tópico.
Nas rotinas quando precisar do arquivo de notas (NFE_NOTA), coloco:
ABRENFNO(0) onde:
ABRENFNO = rotina de abertura do arquivo NFE_NOTA cujo alias é NFNO
0 = parametro para indicar ao sistema para deixar o arquivo aberto
1 = parametro para fechar o arquivo = usado para testar somente se o arquivo existe
2 = parametro para gerar o índice incondicionalmente, mesmo que ele exista
Ela é bem simples de ser implementada e funciona.
Espero ter ajudado no propósito principal deste tópico.
Código: Selecionar todos
PROCEDURE abrenfno(fecha)
if (select("nfno") <> 0)
select nfno
close nfno
endif
select 0
abre_compart(m->pathesp + "nfe_nota","nfno")
// abre_compar = função para abrir arquivos em modo compartilhado
// m->pathesp = variável que guarda o caminho da rede
// nfe_nota = arquivo .DBF
// nfno = alias do arquivo nas rotinas
if (fecha == 2) .or. ! file (m->pathesp + "nfno1.ntx")
set index to
abre_exclus() // função para abrir o arquivo em modo exclusivo
pack
index on nfe_serie + nfe_numero + nfe_fornec to (m->pathesp + "nfno1")
dbunlock()
abre_compar() // volta a colocar em modo compartilhado
endif
set index to (m->pathesp+"nfno1")
if type("fecha") <> nil
if fecha == 1
close
endif
endif
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
