Página 1 de 1
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 18 Jul 2011 15:59
por raquelreis
Boa Tarde à todos,
Estou iniciando em Clipper e já vi meu primeiro problema.
Ao executar certa função o sistema executa normalmente, mas em um determinado momento ele para e dá o seguinte erro:
ERROR BASE/1002 ALIAS does not exist: histbal
Pesquisei em alguns sites e até mesmo aqui no forúm e não consegui encontrar uma solução.
OBS.: O arquivo histbal.dbf está na pasta, e consigo visualizá-lo normalmente.
código do erro:
Código: Selecionar todos
SELE HISTBAL
if FRede("AB")
REPLACE DATA WITH CTOD(dthoje),;
BALANCO WITH ARQDBF,;
CODEMP WITH pCODEMP
DBCOMMIT() ; DBUNLOCK()
endif
Obrigada!
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 18 Jul 2011 16:16
por Maligno
Havendo um erro de ALIAS não encontrado, de duas uma: ou esse nome não foi utilizado na abertura do arquivo ou, no meio do caminho, o arquivo foi fechado, o que gera exatamente esse erro. É preciso verificar o código entre essas duas pontas.
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 18 Jul 2011 16:25
por alxsts
Olá!
Seja bem-vinda ao fórum Raquel!
O erro ocorre após o
Endif?
O trecho de código é pequeno mas, talvez seja o seguinte:
Código: Selecionar todos
SELE HISTBAL // área selecionada ---> HISTBAL
if FRede("AB")
// Se conseguiu abrir outro arquivo, a área atualmente selecionada será a do arquivo que foi aberto...
/// executa operações no alias "AB"
REPLACE DATA WITH CTOD(dthoje),;
BALANCO WITH ARQDBF,;
CODEMP WITH pCODEMP
DBCOMMIT() ; DBUNLOCK()
endif
// aqui, se você quer executar operações no alias HISTBAL, deverá selecioná-lo
// ou usar expressões com alias, por exemplo: (HISTBAL->( DbAppend() )
Sugestão: mude o SELECT HISTBAL para depois do Endif, desde que não impacte o código anterior.
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 18 Jul 2011 16:44
por raquelreis
Boa Tarde alxsts,
Os campos DATA, BALANCO e CODEMP são do arquvi HISTBAL. Logo, acredito que deveria abrir primeiro o HISTBAL e depois executar o IF?
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 18 Jul 2011 16:45
por Maligno
Boa intervenção. Me fez rever o que disse e constatei um erro de expressão. Onde eu disse:
"ou, no meio do caminho, o arquivo foi fechado" deveria ter escrito:
"ou, no meio do caminho, a área foi trocada".
Havendo uma troca de área, o uso do arquivo da área fechada deve ser feito com o comando de direcionamento: AREA->arquivo_dbf. Sem isso, o erro gerado é esse mesmo.
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 18 Jul 2011 17:24
por raquelreis
Boa Tarde Maligno(novamente)
no caso o código ficaria:
Código: Selecionar todos
AREA -> HISTBAL
// REGISTRA O ULTIMO BALANCO EFETUADO
if FRede( "AB" )
REPLACE DATA WITH CTOD(dthoje),;
BALANCO WITH ARQDBF,;
CODEMP WITH pCODEMP
DBCOMMIT() ; DBUNLOCK()
endif
[/b]
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 18 Jul 2011 17:35
por alxsts
Olá!
O Clipper, como todos os dialetos xBase, trabalha com o conceito de área selecionada. Assim, se você abrir
n arquivos (com DbUseArea() ou USE ... NEW), a última área onde foi aberto o enésimo arquivo passará a set a área ativa (
currently selected database) Neste caso, para acessar uma área diferente da selecionada, tem que seguir a orientação do Maligno:
Maligno escreveu:Havendo uma troca de área, o uso do arquivo da área fechada deve ser feito com o comando de direcionamento: AREA->arquivo_dbf
Neste caso, ficaria assim:
Código: Selecionar todos
SELE HISTBAL // área selecionada ---> HISTBAL
if FRede("AB")
// Se conseguiu abrir outro arquivo, a área atualmente selecionada será a do arquivo que foi aberto...
// executa operações no alias "HISTBAL" ---> HISTBAL->node_da_coluna
REPLACE HISTBAL->DATA WITH CTOD(dthoje),;
HISTBAL->BALANCO WITH ARQDBF,;
HISTBAL->CODEMP WITH pCODEMP
DBCOMMIT() ; DBUNLOCK()
endif
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 19 Jul 2011 07:38
por Jairo Maia
Caros Colegas,
O erro ocorre pq ela está tentando selecionar um aliás, que não está aberto.
raquelreis escreveu:Os campos DATA, BALANCO e CODEMP são do arquvi HISTBAL. Logo, acredito que deveria abrir primeiro o HISTBAL e depois executar o IF?
Sim. Primeiro vc precisa abrir o arquivo. Como vc não está usando SEEK, entendo que vc está apenas gravando um novo registro. Assim, altere seu código desta forma:
Código: Selecionar todos
IF SELECT( "HISTBAL" ) = 0 // Se não está aberto, vamos abrir
SELE 0 // Seleciona a próxima área livre
USE HISTBAL SHARED // Abre no modo compartilhado
ELSE // Se não,
SELE HISTBAL // Apenas seleciona a área
ENDI
APPEND BLANK // Cria um registro em branco e trava
REPLACE DATA WITH CTOD(dthoje)
REPLACE BALANCO WITH ARQDBF
REPLACE CODEMP WITH pCODEMP
DBCOMMIT() // Salva os dados
DBUNLOCK() // libera o registro
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 19 Jul 2011 11:49
por raquelreis
Bom dia Jairo,
Foi de grande ajuda a sua dica.
Realmente resolveu meu problema.
Peço muito obrigado à todos os demais pelo esclarecimento.
Problema Resolvido !!!
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 19 Jul 2011 15:39
por alxsts
Olá!
Interpretei que a tabela HISTBAL já tivesse sido aberta antes do trecho de código expôsto e que alguns dados a gravar viriam da tabela aberta no IF FRede("AB"), que foi retirado do código final.
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 19 Jul 2011 17:20
por Jairo Maia
Olá Alexandre,
alxsts escreveu:Interpretei que a tabela HISTBAL já tivesse sido aberta
Mas pela Natureza do erro, em nenhum momento interpretei assim.
alxsts escreveu:e que alguns dados a gravar viriam da tabela aberta no IF FRede("AB")
Pois é... Considerando o código que ela postou, e também pelo nome da função, interpretei que fosse uma função com mensagem temporizadora para bloquear o arquivo, por isso a removi, uma vez que como iria usar o APPEND BLANK, ele bloqueia automaticamente o registro. Mas se necessitou ajustes ela os fez. Legal.
Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)
Enviado: 20 Jul 2011 14:11
por raquelreis
Boa Tarde,
Por esclarecimento, Jairo eu não retirei a função FRede("AB") como estou com esse sistema apenas 3 dias ainda nao a identifiquei. Tbm não usei o APPEND BLANK. Mas usei sua lógica. Se o <arquivo> não foi aberto, abra e use. Se não, use o <arquivo>. O restante do código deixei igual.
Abraço à todos,
Muito obrigada pela ajuda!