Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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!
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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?
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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]
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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 !!!
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
raquelreis
Usuário Nível 2
Usuário Nível 2
Mensagens: 87
Registrado em: 18 Jul 2011 15:29
Localização: à procura

Código de Erro (BASE/1002 ALIAS does not exist: <arquvio>)

Mensagem 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!
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Responder