Página 1 de 1
Mudar o valor da variavel dentro do VALID
Enviado: 03 Nov 2008 15:38
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
Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID
Enviado: 03 Nov 2008 15:52
por Maligno
Exemplo:
Código: Selecionar todos
@ 14,10 get VALOR valid Eval({||TOTAL := QTDE*VALOR, .T.})
Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID
Enviado: 03 Nov 2008 16:05
por rubens
Ok.
Resolvido...
Só uma dúvida.. se eu tiver dois calculos como colocaria eles...??
Rubens
Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID
Enviado: 03 Nov 2008 16:08
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.
Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID
Enviado: 03 Nov 2008 16:49
por rubens
Ok.. vou fazer os testes...
Obrigado..
Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID
Enviado: 04 Nov 2008 13:43
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.
Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID
Enviado: 04 Nov 2008 14:48
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.
Re: MUDAR O VALOR DA VARIAVEL DENTRO DO VALID
Enviado: 04 Nov 2008 15:01
por Adalberto
Maligno, mais uma vez:
Muito obrigado.
Re: Mudar o valor da variavel dentro do VALID
Enviado: 12 Nov 2008 12:24
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
Re: Mudar o valor da variavel dentro do VALID
Enviado: 12 Nov 2008 13:00
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.
Re: Mudar o valor da variavel dentro do VALID
Enviado: 12 Nov 2008 21:07
por alxsts
Concordo. Mas eu usaria nTotal...
[]s
AlxSts
Mudar o valor da variavel dentro do VALID
Enviado: 12 Nov 2008 21:37
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.
Re: Mudar o valor da variavel dentro do VALID
Enviado: 13 Nov 2008 10:12
por Ademir
Bom dia amigos !
Acho que assim tambem funciona:
get valor pict "999999.99" valid ( total := qtde * valor , .t. )
Espero ter ajudado