Página 1 de 1

Ajuda com ACHOICE

Enviado: 29 Set 2016 15:30
por rbonotto
Boas pessoal,

Fiz uma rotina simples para observar/reabrir as vendas que estão sendo feitas naquele momento.
Chamei de vendas em atendimento e vendas em andamento.

O arquivo venda_m.dbf possui todos os registros das vendas que estã nesta situação, as
vendas possuem um código único para cada operação, por exemplo:

venda 000256 com cinco produtos incluidos nela, gerando cinco registros no venda_m.dbf
venda 000257 com vinte produtos incluidos nela, gerando vinte registros no venda_m.dbf
venda 000258 com tres produtos incluidos nela, gerando tres registros no venda_m.dbf
etc...

fiz esta rotina com o achoice:

Código: Selecionar todos

*****************************************
FUNCTION andamento()
*****************************************
LOCAL tElaChoice := SAVESCREEN()
LOCAL fUnctionchoice, nRetVal
LOCAL nKey, nPos

zeratela()
SELE 0
IF dbfrede('venda_m','venda_m',.f.,3)
   abrearq('venda_m'); sset(1)
   DBGOTOP()
   IF EOF()
      avs('NŽO EXISTEM VENDAS EM ANDAMENTO...')
      CLOSE DATABASE
      RESTSCREEN(,,,,tElaChoice)
      RETURN
   END
ELSE
   volta()
   RETURN
END

DBGOTOP()
nUmItenx := 1
oLd_rEc  := venda_m->num_venda
WHILE !EOF()
   SKIP
   nUmItenx ++
   WHILE num_venda == oLd_rEc
      SKIP
   END
   oLd_rEc  := venda_m->num_venda
END
PRIVATE vendasAberto[nUmItenx]

DBGOTOP()
nItenx  := 1
oLd_rEc := venda_m->num_venda
WHILE !EOF()
   mYAdd := num_venda + ' ' + cliente + ' - ' + rmk
   acMenuItems[nItenx] := mYAdd
   nItenx ++
   WHILE num_venda == oLd_rEc
      SKIP
   END
   oLd_rEc  := venda_m->num_venda
END
DBGOTOP()
nPos := ACHOICE(02,02,23,75, vendasAberto,;
        .T., "fUnctionchoice" )
 
RESTSCREEN(,,,,tElaChoice)
CLOSE DATABASE
RETURN

*************************************
FUNCTION fUnctionchoice( nMode, nCurReg, nRowPos )
*************************************
LOCAL nRetVal := AC_CONT
LOCAL nKey    := LASTKEY()


IF nMode == AC_EXCEPT
    IF nKey == K_ENTER
       nRetVal := AC_SELECT

    ELSEIF nKey == K_ESC
       nRetVal := AC_ABORT

    END
END
RETURN nRetVal
Não consegui resolver duas coisas:

1) Quando o usuário escolher a venda para reabrir preciso pegar o código da venda que ele escolheu, mas
o nCurReg retorna o número do registro e eu precisaria o conteudo do registro:

ex
000256 Raul de Oliveira Santos
000257 Lilian Aparecida
000258 Marli de Souza

Se o usuário selecionar a venda 00257 o nCurReg retorna 2, como que eu conseguiria capturar "000257 Lilian Aparecida" ?

2) Existe como fazer uma pesquisa dentro do ACHOICE ?

Se alguém tiver alguma idéia agradeço demais !

Ajuda com ACHOICE

Enviado: 30 Set 2016 07:23
por Toledo
Amigo, tente o seguinte:

Código: Selecionar todos

nPos := ACHOICE(02,02,23,75, vendasAberto,;
	        .T., "fUnctionchoice" )
IF nPos>0
  cOpcao:=vendasAberto[nPos]
  ? cOpcao
ENDIF
Na variável cOpcao vai ter o que você quer.

Abraços,

Ajuda com ACHOICE

Enviado: 30 Set 2016 10:53
por rbonotto
Perfeito Toledo.

Muito obrigado !