Mudar o valor da variavel dentro do VALID

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mudar o valor da variavel dentro do VALID

Mensagem por rubens »

Olá...

Alguem sabe se é possivel fazer isso ???

Normalmente faço assim:

@ 10,10 GET QTDE
@ 12,10 GET DESCRICAO
@ 14,10 GET VALOR VALID CALTOTAL( QTDE, VALOR, @TOTAL )
@ 16,10 GET TOTAL
READ

FUNCTION CALCTOTAL( QTDE, VALOR, TOTAL )
TOTAL := QTDE * VALOR
RETURN( .T. )

Não tem como eu calcular o total direto no VALID ???

Tipo:
@ 14,10 GET VALOR VALID ( TOTAL := QTDE * VALOR )
Quando compilo desse jeito dá erro na execução.. alguem sabe se tem como fazer ??/

Vlw
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID

Mensagem por Maligno »

Exemplo:

Código: Selecionar todos

@ 14,10 get VALOR valid Eval({||TOTAL := QTDE*VALOR, .T.})
[]'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
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID

Mensagem por rubens »

Ok.

Resolvido...


Só uma dúvida.. se eu tiver dois calculos como colocaria eles...??

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID

Mensagem por Maligno »

Um cálculo é uma expressão. Dentro de um bloco de código você pode ter tantas expressões quanto quiser. Mas como é um valid, a última expressão deve retornar um valor lógico, que será o retorno do valid. Só isso.
[]'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
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID

Mensagem por rubens »

Ok.. vou fazer os testes...

Obrigado..
"Eu e minha casa servimos ao Senhor e você ???"
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

Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID

Mensagem por Adalberto »

Mestre maligno, Deus o abençoe.
Só uma curiosidade:
O exemplo do Rubens mostra a necessidade de um cálculo.

Código: Selecionar todos

FUNCTION CALCTOTAL( QTDE, VALOR, TOTAL )
TOTAL := QTDE * VALOR
RETURN( .T. )
mas se for necessário validar mesmo, verificar se o valor não e negativo, zero, se foi pressionada certa tecla, etc. então a validação por médio de um code block precisa de uma função definida por o usuário.
Então qual e melhor: Com um code block o direto a uma função depois do VALID?
Muito obrigado.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID

Mensagem por Maligno »

Dependendo do que for avaliado, até poderia ser feito no bloco de código. Mas dependendo do código, só por função, que é como eu prefiro fazer.
[]'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

Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID

Mensagem por Adalberto »

Maligno, mais uma vez:
Muito obrigado.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Mudar o valor da variavel dentro do VALID

Mensagem por alxsts »

Caros, permitam que eu dê uma pequena contribuição, mesmo que com atraso:

Parece que o objetivo do colega Rubens era alimentar a variável TOTAL, visto que o usuário já havia digitado a QTDE e o VALOR. Sendo assim, não seria necessário digitar o campo TOTAL. Então eu escreveria o código assim:

Código: Selecionar todos

   LOCAL QTDE := .000, DESCRICAO := SPACE(50), VALOR := .00, TOTAL := .00
   LOCAL GetList := {}

   CLS

   @ 10,10 GET QTDE PICT "999.999" VALID QTDE > 0
   @ 12,10 GET DESCRICAO   PICT "@!"
   @ 14,10 GET VALOR PICT "999,999,999.99" VALID VALOR > 0
   @ 16,10 GET TOTAL WHEN { |oGet| CalcTotal( oGet, Qtde, Valor ) }

   READ
//------------------------------------------------------------------------------
FUNCTION CalcTotal( oGet, Qtde, Valor )

   // utiliza métodos do objeto GET
   oGet:varPut( Qtde * Valor )   // atualiza a variavel Get
   oGet:updateBuffer()             // atualiza o buffer do objeto Get (automaticamente executa oGet:display() para atualizar a tela)

   RETURN( .F. )                      // pula o Get
//------------------------------------------------------------------------------
Isso pode perfeitamente ser usado na cláusula VALID, de acordo com a necessidade.

Obs: é bom evitar usar palavras reservadas do Clipper para nomes de variáveis. Neste código foi declarada a variável TOTAL, que é o nome de um comando Clipper:

TOTAL ON <expKey> FIELDS <idField list>
TO <xcDatabase>
[<scope>] [WHILE <lCondition>] [FOR <lCondition>]


Espero ter contribuido.

AlxSts

[]s

-------------------------------
Nota de Moderação (Toledo): mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: faq.php?mode=bbcode#f21
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Mudar o valor da variavel dentro do VALID

Mensagem por Maligno »

TOTAL não é uma palavra reservada. É apenas um nome de comando. Fora do contexto desse comando ela não existe, já que o pré-processador não reconhece o comando em si. Por isso, não há qualquer conflito.
[]'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

Re: Mudar o valor da variavel dentro do VALID

Mensagem por alxsts »

Concordo. Mas eu usaria nTotal...

[]s
AlxSts
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mudar o valor da variavel dentro do VALID

Mensagem por Pablo César »

É faz sentido. Primeiro padronização e segundo é sempre aconselhável evitar palavras que possam vir a representar comando ou qualquer outra designação interna do Clipper. Apesar que não deva ser este o problema deste enunciado.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Re: Mudar o valor da variavel dentro do VALID

Mensagem por Ademir »

Bom dia amigos !

Acho que assim tambem funciona:

get valor pict "999999.99" valid ( total := qtde * valor , .t. )

Espero ter ajudado
Responder