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?
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!
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
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!
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.
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?
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!
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!
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!
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.