Digitacao no get.....

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Digitacao no get.....

Mensagem 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
Alessandro
Usuário Nível 3
Usuário Nível 3
Mensagens: 141
Registrado em: 07 Jul 2004 09:39
Localização: Santo Antonio da Platina-PR

Mensagem 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
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
Cleiton Fidelis
Usuário Nível 2
Usuário Nível 2
Mensagens: 81
Registrado em: 06 Jul 2004 09:44
Localização: Divinopolis MG

Mensagem 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
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

digitacao no get...

Mensagem 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????
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Mensagem por clebermano »

muito obrigado funcionou direitinho....
valews...
kenew
Usuário Nível 2
Usuário Nível 2
Mensagens: 97
Registrado em: 08 Set 2004 15:08
Contato:

Mensagem 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.
Jorge Adourian
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 05 Jul 2004 23:38
Localização: São Paulo-SP-Brasil
Contato:

Mensagem 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 !!!
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
kenew
Usuário Nível 2
Usuário Nível 2
Mensagens: 97
Registrado em: 08 Set 2004 15:08
Contato:

Mensagem 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.
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Mensagem 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...
kenew
Usuário Nível 2
Usuário Nível 2
Mensagens: 97
Registrado em: 08 Set 2004 15:08
Contato:

Mensagem 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.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
evolver
Membro Master
Membro Master
Mensagens: 189
Registrado em: 28 Ago 2004 01:02
Localização: Cruz Alta - RS
Contato:

Mensagem 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.
Sergio "Evolver" Fagundes

CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
Responder