Página 1 de 1

assumir valor do GET anterior simultaneamente ...

Enviado: 28 Nov 2021 14:02
por deividdjs
Boa tarde, Amigos ..

como faço em uma alteração de cadastro que um get receba um valor e o proximo get tbm receba o mesmo valor e já mostre para o usuario simultaneamente antes do READ...

Código: Selecionar todos

  
   n_quantant = n_quant
   @16,13 say "Cantidad...:" get n_quant picture MASK_QUANT() valid (n_quant # 0)     
   @17,13 say "Entregue...:" get n_entreg picture MASK_QUANT() valid (n_entreg <= n_quant)
   @19,13 say "Precio.....:" get vn_preco picture MASK8() valid (vn_preco <> 0)

   read

neste caso o GET do campo n_entreg recebe o valor do GET n_quant com a possibilidade de alteração do usuario para um valor menor que o n_quant

Att,

Deivid Souza

assumir valor do GET anterior simultaneamente ...

Enviado: 28 Nov 2021 14:14
por JoséQuintas

Código: Selecionar todos

GET n_Quant VALID n_Entreg := n_Quant, n_Quant != 0
Se não me engano, por ser codeblock, aceita assim, e o último conjunto é o retorno do valid

Apenas caso não aceite, aqui vai o plano B

Código: Selecionar todos

GET n_Quant VALID ReturnTrue( n_Entreg :=  n_Quant ) .AND. n_Quant != 0
...
FUNCTION ReturnTrue( ... )
   RETURN .T.

assumir valor do GET anterior simultaneamente ...

Enviado: 28 Nov 2021 21:15
por Jairo Maia
Tente com a cláusula When:

Código: Selecionar todos

   n_quantant = n_quant
   @16,13 say "Cantidad...:" get n_quant picture MASK_QUANT() valid (n_quant # 0)

   /*
     Tente usando a cláusula When dessa forma:
   */
   @17,13 say "Entregue...:" get n_entreg picture MASK_QUANT() When Quant( n_quant ) valid (n_entreg <= n_quant)

   @19,13 say "Precio.....:" get vn_preco picture MASK8() valid (vn_preco <> 0)
   
   Read
   
   Function Quant( n_qtd )
    M->n_entreg := n_qtd  // atribui valor de n_quant em n_entreg
   Return .t.

assumir valor do GET anterior simultaneamente ...

Enviado: 29 Nov 2021 08:20
por deividdjs
Obrigado senhores ... show!! funcionou perfeitamente !! com a função usando a função when ... TOP TOP!!!

Forte abraço!!

assumir valor do GET anterior simultaneamente ...

Enviado: 29 Nov 2021 12:24
por alxsts
Olá!

Já resolveu mas, segue exemplo usando outra técnica, que dispensa o uso de uma função adicional:

Código: Selecionar todos

PROCEDURE Teste

   LOCAL n_quantant := 10, n_quant := 0, n_entreg := .000, vn_preco := .00, GetList := {}
   
   CLS
   
   n_quantant = n_quant
   
   @16,13 SAY "Cantidad...:" get n_quant picture MASK_QUANT() valid (n_quant # 0)
   
   /*
     Tente usando a cláusula When dessa forma:
   */
   @17,13 SAY "Entregue...:" ;
          GET n_entreg ;
          PICT MASK_QUANT() ;
          WHEN { |oGet| oGet:varPut( n_quant ), .T. }
   
   @19,13 SAY "Precio.....:" get vn_preco picture MASK8() valid (vn_preco <> 0)
   
   READ
   
   RETURN

   //-----------------------------
   FUNCTION MASK8()
   RETURN "@E 9,999.99"
   //-----------------------------
   FUNCTION MASK_QUANT()
   RETURN "@E 9,999.999"
   //-----------------------------

assumir valor do GET anterior simultaneamente ...

Enviado: 01 Dez 2021 09:27
por ssflavio
bom dia!
eu faço uma coisa bem simples, criei uma função que copia um valor para uma determinada variavel e retorna .t. para que passe no VALID

Código: Selecionar todos

@ 05,00 say "Data Inicial ...:" get DTAINI valid copyvlr(DTAINI, @DTAFIN)
@ 06,00 say "Data Final .....:" get DTAFIN 
read

************************************************************************************************
Function COPYVLR( PORI, PDES )

PDES := PORI

Return(.t.)

assumir valor do GET anterior simultaneamente ...

Enviado: 01 Dez 2021 11:01
por JoséQuintas
Mais simples, e não causa dependência:
Uma vez que a função só precisa retornar verdadeiro...

Código: Selecionar todos

FUNCTION ReturnTrue( ... )
   RETURN .T.
Depois, pode usar quantos cálculos quiser, separados por vírgula, a função apenas retorna verdadeiro.

Código: Selecionar todos

@ 1, 2 GET nPedido VALID ReturnTrue( nSolicitado := nPedido )
//
@ 2, 2 GET nSolicitado WHEN ReturnTrue( nSolicitado := nPedido )
Assim não depende de variável nenhuma existir na função.

assumir valor do GET anterior simultaneamente ...

Enviado: 01 Dez 2021 11:09
por JoséQuintas
Mas no Harbour users indicaram a outra opção.
Como é transformado em codeblock, pode ter uma lista, desde que a última seja .T.
Tudo é executado, mas o retorno vai ser somente o último.

Código: Selecionar todos

@ 1, 2 GET nPedido VALID a := 10, b := 20, c := 30, nSolicitado := nPedido, .T.
A função que mostrei é dispensável, mas faz a mesma coisa.

Código: Selecionar todos

@ 1, 2 GET nPedido VALID ReturnTrue( a := 10, b := 20, c := 30, nSolicitado := nPedido )

assumir valor do GET anterior simultaneamente ...

Enviado: 01 Dez 2021 16:20
por dbsh
preserva valor de n_entreg, caso nao seja 0

Código: Selecionar todos


 n_quantant = n_quant
@16,13 say "Cantidad...:" get n_quant picture MASK_QUANT() valid (n_quant # 0)     
@17,13 say "Entregue...:" get n_entreg picture MASK_QUANT()  when !Empty(n_entreg) .or. True(n_entreg := n_quant) valid (n_entreg <= n_quant)
@19,13 say "Precio.....:" get vn_preco picture MASK8() valid (vn_preco <> 0)
read

FUNCTION True()
RETURN .T.

FUNCTION False()
RETURN .F.