Página 1 de 2

Digitacao no get.....

Enviado: 27 Out 2004 12:42
por clebermano
Ola, amigos clippeiros, boa tarde a todos.
Tenho a seguinte situacao.
tenho 1 get onde cliente digita o codigo do produto, eu precisaria que este get identificasse instataneamente, quando eu digitasse uma letra.
Por exemplo, supomos que o cliente esteja passando produtos atraves do codigo de barras ean 13- neste get, e quando ele quissese cancelar um item ele apenas digitaria por exemplo 10, que eh o numero de ordem do produto, e a letra C, para cancelar, o item referente a ordem. Ficaria assim.

12C
? ITEM 12 CANCELADO
entao o get continuaria, por exemplo se fosse um ean, como abaixo apareceia o produto.
78910010000103 - Leite condensado moca 395g
Certo?
Se puderem me ajudar agradeco desde ja.
clebermanorp@yahoo.com.br

Enviado: 27 Out 2004 13:44
por Alessandro
Veja bem se entendi o que quer fazer:

Você quer que no get seja feita uma validação.
Exemplo:

@ lin,col get CODIGO valid VER_COD(@ODIGO)


function VER_COD(CODIGO)

If // aqui vc testa se o EAN13 é válido
se for
return .T.
else
verifique o que foi digitado, como se tiver a letra "C" na string
pegue o que vem antes dela e exclua o item correspondente.
retunr .F. // para permanecer no get
endif

Espero que tenha ajudado.
OK

Enviado: 27 Out 2004 14:52
por Clipper
Complementando o código proposto pelo colega

Código: Selecionar todos


function VER_COD(CODIGO) 
If // aqui vc testa se o EAN13 é válido 
   se for 
   return(.T.) 
else 
   TEM_ALFA=AT("C",CODIGO)
   IF TEM_ALFA<>0
       NUM_ITEM=SUBSTR(CODIGO,1,TEM_ALFA-1)  // Talvez precise converter para numérico aí vai depender do seu programa
       // Continua a rotina com a exclusão do item
   ELSE
       // NÃO TEM O CARACTERE "C" NO CÓDIGO DIGITADO
   ENDIF
endif 
Até logo.

Marcelo

Enviado: 27 Out 2004 16:54
por Cleiton Fidelis
Amigo, talvez seria mais facil voce criar uma funcao para cancelar/alterar sei la.

Tipo pressionada F5 vc altera... , pode ser que o usuario, um novato por exemplo coloque acidentalmente a letra C e de um <<enter>>, ou ate mesmo o usuario mais avancado.... , o teclado pode agarrar.. sei la..

Creio que uma funcao seria de maior valia.

Abracos.

Cleiton Fidelis
Divinopolis MG

digitacao no get...

Enviado: 27 Out 2004 18:47
por clebermano
amigo cleiton o cliente, nao quer um f5 pq ele acha que fica mto demorado o processo, tipo f5 codigo do produto + enter, ele quer tipo a ordem + a letra e pronto ta cancelado.
A proposito a funcao acima funcionou mas eu preciso dar enter, eu preciso que assim que eu tecle a letra C, ele ja identifique automatico e ja cancele o item...
tem jeito????

Enviado: 27 Out 2004 23:37
por Clipper
Prezado colega

Faça o seguinte :

No inicio da rotina coloque um SET KEY.

Exemplo :

SET KEY 67 TO TECLAC()
SET KEY 99 TO TECLAC()

FUNCTION TECLAC()
KEYBOARD CHR(67)+CHR(13)
RETURN(.T.)

Não esqueça de colocar no final da rotina

SET KEY 67 TO
SET KEY 99 TO

Até logo.

Marcelo

Enviado: 28 Out 2004 17:46
por clebermano
muito obrigado funcionou direitinho....
valews...

Enviado: 30 Out 2004 10:32
por kenew
Voce tambem poderia mudar a Class GET, e quando vc digitar C no get mesmo sendo um GET numerico ele executaria uma função determinada.

Enviado: 30 Out 2004 10:47
por Jorge Adourian
Estou torcendo para que alguem digite este C por engano e percam muitos produtos. Assim seu Cliente deixa de ser IDIOTA.

Me desculpem o desabafo, mas não deu para aguentar !!!

Enviado: 30 Out 2004 10:54
por kenew
Bom eu não uso assim, mas no caso de quem fez a pergunta é só o cara digitar C e abrir um campo para digitar a linha do produto, acho isso muito fora de padrão.

No meu caso eu utilizo as setas para navegar entre os produtos e deletar o produto que estiver posicionado e uma pergunta, para confirmar a exclusão não faz mau a ninguem ... hehehe

E outra a pressa é inimiga da perfeição se ele quer ganhar tempo, vai perder dinheiro no minimo pode deletar um produto errado e bom, por ai vai.... isso na minha opnião é claro.

Enviado: 30 Out 2004 14:56
por clebermano
eu considero todas as respostas validas... mas eh pq ceis ainda nao conhecem o seu Zé Luiz, ai tem q te paciencia com ele eheheh, a mulher dele nao casou com ele, esta pagando promessa ehueahuauhauhauhuahua
asta la vista companeiros...

Enviado: 31 Out 2004 12:37
por kenew
Isso eu tenho q concordar cada cliente é uma caso a parte, eu escuto cada sujestão para o meu sistema umas até boas, mas 70% são absurdos, mas tá valendo.

Enviado: 01 Nov 2004 09:04
por Clipper
No meu caso...

Eu utilizo um DBedit() e vou navegando entre os produtos aí escolho a ação que desejar, também não gosto muito da forma que está sendo usada, mas o colega pediu uma sugestão de como fazer, pois bem, aí está ela... Apesar de não achar correta não me cabe julgar, como o colega mesmo disse nós não conhecemos o cliente dele, se ele já orientou e mesmo assim o cara insitiu em usar desta forma, paciência, quem tá pagando tem o direito de escolher, além do mais não é nada tão absurdo assim, é meio estranho mas não é absurdo.

Até logo.

Marcelo

Enviado: 01 Nov 2004 09:05
por Clipper
No meu caso...

Eu utilizo um DBedit() e vou navegando entre os produtos aí escolho a ação que desejar, também não gosto muito da forma que está sendo usada, mas o colega pediu uma sugestão de como fazer, pois bem, aí está ela... Apesar de não achar correta não me cabe julgar, como o colega mesmo disse nós não conhecemos o cliente dele, se ele já orientou e mesmo assim o cara insitiu em usar desta forma, paciência, quem tá pagando tem o direito de escolher, além do mais não é nada tão absurdo assim, é meio estranho mas não é absurdo.

Até logo.

Marcelo

Enviado: 02 Nov 2004 04:36
por evolver
Tentou usar a clausula WHEN para isso?
Fica meio complexo mas você pode criar uma função que coleta os dados antes mesmo de haver qualquer digitação no get e pode processar os dados evitando assim que saia errado no get ou mesmo que se venha a cancelar algo que não deveria ser cancelado.

Tou com meu clipper meio enferrujado mas acho que ainda funfa...

tipo

#include "inkey.ch"
x_var=0
@ 00,00 say "Valor?" get x_var pict "99999" when funcao1() valid funcao2()
read
quit

function funcao1()
local ret_var
/*
cria aqui uma funcao que pega letra por letra e usa um case pra dar destino a ela ex:
*/
while .t.
c_press=inkey(0)
do case
case upper(chr(c_press)) = C
//executa funcao de verificacao
if cancelamesmo
//deleta ou marca o que tiver que cancelar
// copia o codigo ean do produto para ret_var ret_var = valor_ean
keyboard ret_var
exit
endif
loop
case isdigit(chr(c_press))
ret_var = ret_var+chr(c_press)
case c_press = K_BACKSPACE
ret_var = left(ret_var,len(ret_var)-1)
case c_press = K_ENTER .or. len(ret_var)=14
keyboard ret_var
exit
endcase
enddo
return .t.

A coisa ficou complexa mas se tu conseguir pegar a idéia pode tornar ela uma bela ferramenta de verificação do dado pra se ter certeza do que vai sair. Pode até mesmo verificar se existe um produto antes de preencher o get com o comando keyboard.