Error BASE/1004 No exported method: EVAL. Como resolvo?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
miracle
Usuário Nível 3
Usuário Nível 3
Mensagens: 117
Registrado em: 14 Jun 2007 16:28
Localização: Sao Paulo SP

Error BASE/1004 No exported method: EVAL. Como resolvo?

Mensagem por miracle »

Amigos, o código é o seguinte:

Código: Selecionar todos

SELECT 31
IF .NOT. ABRE("PEDIDOS.DBF",5,"C")
    ALERT("ARQUIVO PEDIDOS.DBF INDISPONIVEL NO MOMENTO!",{"OK"},"15/16")
    CLOSE DATA
    RETURN
END IF
SET INDEX TO PEDID01.CDX,PEDID02
SET ORDER TO 1
nPEDIDO = 29
SEEK cEMPRESA + STR(nPEDIDO)
IF FOUND()
    IF BLOQUEIA(5)
        DELETE
        UNLOCK
        DBCOMMIT()
    ENDIF
ENDIF
E, ao executar dá o erro mostrado no cabeçalho deste tópico: Error BASE/1004 No exported method: EVAL. Uso esse código faz tempo e nunca tive problema. Agora preciso disso funcionando até o meio dia de HOJE e, talvez pelo desespero, não estou conseguindo resolver o problema.
:(Neg :?
Alguém pode me ajudar?
Clipper 5.2e + DBFCDX + Exospace 1.0g
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

Error base/1004

Mensagem por Adalberto »

Miracle,

O problema não é esse código, acredito que está na função de Bloqueio, que é o lugar onde um CodeBlock é usado. Confira isso.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Post as funções ABRE() e BLOQUEIA()
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Detalhe que percebi: a função Alert() possui apenas dois parâmetros, mas você está informando três.
Pergunta: em qual dessas linhas (ele dá o número?) aparece o erro?
[]'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!
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

Error base/1004

Mensagem por Adalberto »

Em Guía Norton e em outro literatura a função ALERTA() tem dois parâmetros mas recebe 3, é o terceiro e a cor.
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Pessoal!
Aproveitando que estamos falando de code block, como é que eu visualizo um code block?

É que eu coloquei campo tipo senha direto no getsys só que não tá funcionando o comando VALID, no getsys a expressão do valid tá dentro de um code block, o oget:postblock que tá dentro da função getpostvalidate(), nela o programador usou: lvalid := eval( oget:postblobk, oget ), para testar a validade do get.

Eu queria então ver qual o conteúdo de oget:postblock para poder fazer os tratamentos do valid para camo tipo senha.

Malígno vê se me dá uma força, e obrigado pelo o que você tem fei por mim.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Para visualizar um codeBlock só olhando o fonte. De outra forma não tem jeito. Isso por quê, depois de compilado, o codeBlock se transforma em opCodes.
[]'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!
Avatar do usuário
miracle
Usuário Nível 3
Usuário Nível 3
Mensagens: 117
Registrado em: 14 Jun 2007 16:28
Localização: Sao Paulo SP

Mensagem por miracle »

O prazo já era... :? Consegui enrolar até amanhã. :-o

Ai vão as funções ABRE e BLOQUEIA. Eu as utilizo há tempos e nunca tive problema com elas. :-o

Código: Selecionar todos

FUNCTION ABRE(cARQUIVO, nTEMPO, cMODO)
DO WHILE nTEMPO > 0
    IF cMODO = "C"
        USE &cARQUIVO SHARED
    ELSE
        USE &cARQUIVO EXCLUSIVE
    ENDIF
    IF NETERR()
        nTEMPO = nTEMPO - 0.5
        INKEY(0.5)
    ELSE
        RETURN(.T.)
    ENDIF
ENDDO
RETURN(.F.)

FUNCTION BLOQUEIA(nTEMPO)
DO WHILE nTEMPO > 0
    IF RLOCK()
        RETURN(.T.)
    ENDIF
    nTEMPO = nTEMPO - 0.5
    INKEY(0.5)
ENDDO
RETURN(.F.)
As Alert que usei no código, Maligno, não registram o código de erro. Ele ocorre na execução, na hora da deleção dos dados com o comando DELETE. E isso nunca tinha acontecido antes. :-o
Clipper 5.2e + DBFCDX + Exospace 1.0g
Avatar do usuário
miracle
Usuário Nível 3
Usuário Nível 3
Mensagens: 117
Registrado em: 14 Jun 2007 16:28
Localização: Sao Paulo SP

Mensagem por miracle »

Ha! E eu nem sei o que é Code Block. Desculpem a ignorância, mas é que eu aprendi Clipper autodidaticamente e o que eu não conseguia entender, procurava uma outra forma de fazer para que desse o mesmo resultado.
:{
São Code Blocks as rotinas de Loop e Escolha com If then else?
Clipper 5.2e + DBFCDX + Exospace 1.0g
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

miracle escreveu:São Code Blocks as rotinas de Loop e Escolha com If then else?
Codeblock é um bloco de código. :)

Explicitamente: um tipo especial de dado que possui código compilado. Normalmente ele contém uma ou mais expressões avaliadas com base numa lista de argumentos descritos no próprio codeblock.
[]'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!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

miracle escreveu:O prazo já era... :? Consegui enrolar até amanhã.
Programador que não sabe enrolar cliente não é programador. :)))
As Alert que usei no código, Maligno, não registram o código de erro. Ele ocorre na execução, na hora da deleção dos dados com o comando DELETE.
Não respondeu minha pergunta: em qual linha ele disse que o erro está? Pra qual código ele aponta?
[]'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!
Avatar do usuário
miracle
Usuário Nível 3
Usuário Nível 3
Mensagens: 117
Registrado em: 14 Jun 2007 16:28
Localização: Sao Paulo SP

Mensagem por miracle »

O erro aponta exatamente para a linha 1119, caindo diretamente no comando DELETE.
Clipper 5.2e + DBFCDX + Exospace 1.0g
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Pergunta: esse programa foi inteiramente compilado sem o switch /L? Se não, compile tudo sem esse switch e veja de novo onde o erro vai dar.
[]'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!
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Mensagem por ANDRIL »

Vc ja verificou se isso acontence com um determinado cliente ou acontece com todos justamente neste ponto do seu programa. Eu acho que isso pode ser problema de registro/banco de dados/indice danificado, pois o erro em EVAL pode ser ocasionado por algum comando interno do proprio clipper que necessita exportar o registro para o comando DELETE.


SET INDEX TO PEDID01.CDX,PEDID02


O porque do PEDID01.CDX e o PEDID02 nao ter o .CDX? Bom é só uma curiosidade.


Ate+,
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
miracle
Usuário Nível 3
Usuário Nível 3
Mensagens: 117
Registrado em: 14 Jun 2007 16:28
Localização: Sao Paulo SP

Mensagem por miracle »

O PEDID02 saiu sem o .CDX por um acidente na hora de copiar para a mensagem. No código original ele é acompanhado do .CDX, Andril.

Não verifiquei se isso acontece com este cliente apenas. vou dar uma verificada. Pode ser que o DBF esteja danificado, mesmo.

Mas, por via das dúvidas, vou passar o FileFix no DBF e apagar todos os índices. Já estou reescrevendo o módulo no qual esse código está... ´o)

Mais tarde eu posto o que eu conseguir. :*
Clipper 5.2e + DBFCDX + Exospace 1.0g
Responder