pesquisando no dbedit letra a letra
Moderador: Moderadores
-
lapinhazzz
- Usuário Nível 3

- Mensagens: 130
- Registrado em: 20 Abr 2009 10:52
- Localização: LAGOA
pesquisando no dbedit letra a letra
Bom dia amigos do forum,
O meu problema é o seguinte:
tenho um dbf com vários campos e um deles chama-se vendas
eu faço inde on strzero(vendas,5,0) to venda1
o procedure main() tem dbedit assim
o array que faço antes do dbedit contem numa linha strzero(vendas,5,0)+' '+str(valor)
tenho uma function que se chama letraaletra que pesquisa o dbedit depois de ele mostrar os campos em linha ou seja em browse.
na funçao letraaletra()
pesquiso letra a letra se condiz com o valor da vendas.
mas há um problema
o browse do dbedit faz isto
vendas utente valor
00001 cliente1 10,0
00002 cliente1 10,0
00003 cliente1 10,0
00004 cliente2 10,0
00005 cliente2 10,0
00006 cliente3 10,0
00007 cliente4 10,0
00008 cliente5 10,0
00009 cliente5 10,0
00010 cliente6 10,0
só que a função letraaletra na pesquisa tenho que pesquisar 00007 por exemplo para parar o registo no 00007.
eu queria que aparecesse os zeros mas a pesquisa ser feita com o número apenas por exemplo 7 e o letra a letra ficar no 00007
se teclar 10 o ponteiro do dbedit pára no 00010 e não digitar 00010
os campos sao strzero(vendas,5,0) e uns alfanumericos e outros numéricos como é o caso do campo vendas
Gostaria que alguém me desse uma opinião sobre isto
Agradecido.
lapinhazzz
O meu problema é o seguinte:
tenho um dbf com vários campos e um deles chama-se vendas
eu faço inde on strzero(vendas,5,0) to venda1
o procedure main() tem dbedit assim
o array que faço antes do dbedit contem numa linha strzero(vendas,5,0)+' '+str(valor)
tenho uma function que se chama letraaletra que pesquisa o dbedit depois de ele mostrar os campos em linha ou seja em browse.
na funçao letraaletra()
pesquiso letra a letra se condiz com o valor da vendas.
mas há um problema
o browse do dbedit faz isto
vendas utente valor
00001 cliente1 10,0
00002 cliente1 10,0
00003 cliente1 10,0
00004 cliente2 10,0
00005 cliente2 10,0
00006 cliente3 10,0
00007 cliente4 10,0
00008 cliente5 10,0
00009 cliente5 10,0
00010 cliente6 10,0
só que a função letraaletra na pesquisa tenho que pesquisar 00007 por exemplo para parar o registo no 00007.
eu queria que aparecesse os zeros mas a pesquisa ser feita com o número apenas por exemplo 7 e o letra a letra ficar no 00007
se teclar 10 o ponteiro do dbedit pára no 00010 e não digitar 00010
os campos sao strzero(vendas,5,0) e uns alfanumericos e outros numéricos como é o caso do campo vendas
Gostaria que alguém me desse uma opinião sobre isto
Agradecido.
lapinhazzz
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Re: pesquisando no dbedit letra a letra
Ola!
Onde pega o '0' /zero para poupar que o usuário digite '00007'
Coloque:
ZeroEsquerda(7,5) //Retorna := '00007'
Função util para quem faz o sintegra.
Pode usar transform() com a picture '@B'
Saudações,
Itamar M. Lins Jr.
Onde pega o '0' /zero para poupar que o usuário digite '00007'
Coloque:
ZeroEsquerda(7,5) //Retorna := '00007'
Código: Selecionar todos
********************************************************
Function ZeroEsquerda(mvalor,tamanho,decimais)
********************************************************
*
*
Local texto
if valtype(decimais)='U'
decimais := 0
endif
if valtype(tamanho)='U'
tamanho := 13
endif
if valtype(mvalor)='C'
if val(mvalor)<>0
texto:=strzero(val(alltrim(mvalor)),tamanho,0)
else
texto:=mvalor
endif
elseif valtype(mvalor)='N'
if decimais<>0
mvalor := strzero(mvalor,tamanho+1,decimais)
texto := strtran(mvalor,'.')
else
texto := strzero(mvalor,tamanho,0)
endif
endif
return texto
Pode usar transform() com a picture '@B'
Código: Selecionar todos
nKey := transform(nKey,'@B 99999')
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
lapinhazzz
- Usuário Nível 3

- Mensagens: 130
- Registrado em: 20 Abr 2009 10:52
- Localização: LAGOA
Re: pesquisando no dbedit letra a letra
Boa noite amigos do forum
Boa noite Itamar
Não consigo saber como faço isso que voce postou.
Por favor me desculpe de eu não perceber mas tente modificar aquilo que tenho para poder utilizar.
Aqui vao as duas rotinas
e aqui está a letra a letra
Agradeço a todos
obrigado
lapinhazzz
Boa noite Itamar
Não consigo saber como faço isso que voce postou.
Por favor me desculpe de eu não perceber mas tente modificar aquilo que tenho para poder utilizar.
Aqui vao as duas rotinas
Código: Selecionar todos
/*
ÚÄ Program ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Aplica‡„o: ³
³ Descri‡„o: ³
³ Nome: MV.PRG ³
³ Autor: Carlos Lapa ³
³ Vers„o: ³
³ Data cria‡„o: 03-07-10 Actualizado em : þ16-10-10 ³
³ Hora cria‡„o: 23:15:54 Hora actualiza‡„o: þ22:43:24 ³
³ Fich. Make: ³
³ Fich. Exec.: Doc.s por: Carlos Lapa ³
³ Copyright: (c) by Carlos Lapa, Inc. ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
*/
function mv()
public vprecov
rot="MV"
priv l
sele 2
OrdSetFocus("vendaitem")
set filt to recno()>1
go top
sele 1
OrdSetFocus("vvenda1")
set filt to recno()>1
go top
do whil .t.
publ v1a[1],v2a[1],v3a[1],v4a
if indexord()=1
tit("Vendas (por VENDA)")
v1a[1]="strzero(VENDA)+' '+dtoc(datactual)+' '+utente+' '+proc+' '+hora+' '+letraesc+cursoabv+' '+origem+tran(total,'@E 999,999.99')"
v3a[1]="Venda DataACTUAL Utente Proc Hora Esc Curso Ori Total"
* 12345 10/10/2009 12345678901234567890 123456 13:15:15 A CEF1A1 12345.12
* 1 2 3 4 5 6 7 8
* 012345678901234567890123456789012345678901234567890123456789012345678901234567890
pfs("[ENTER]EditaVenda,F4NovaVenda,F5ExcluiVenda,F7ReordenaLista")
elseif indexord()=2
tit("Vendas (por utente)")
v1a[1]="utente+' '+strzero(venda,5,0)+' '+dtoc(datactual)+' '+proc+' '+hora+' '+letraesc+''+cursoabv+' '+origem+' '+tran(total,'@E 999,999.99')"
* 1 2 3 4 5 6 7 8
* 012345678901234567890123456789012345678901234567890123456789012345678901234567890
v3a[1]="Utente Venda DataACTUAL Proc Hora Esc Curso Ori Total"
* 12345678901234567890 12345 10/10/2009 123456 13:15:50 A CEF1A1 12345.12
pfs("[ENTER]EditaVenda,F4NovaVenda,F5ExcluiVenda,F7ReordenaLista")
endi
v2a[1]="@"
v4a=""
cor(2)
go top
IF l=-6
letraaa()
ENDIF
keyb chr(26)
dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
l=lastkey()
do case
case l=27
exit
case l=13
sele 1
IF origem="S"
@ 04,00 clea to 22,80
calenda()
elseif origem="F"
mv_e()
endi // edita venda
case l=-3
mv_n() // inclui nova venda
case l=-4
sele 1
IF origem="F"
mv_d()
elseif origem="S"
mv_d()
endi
case l=-6
mv_r() // reordena
endc
endd
rele v1a,v2a,v3a,v4a
rot="MAIN"
Código: Selecionar todos
/*
ÚÄ Program ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Aplica‡„o: ³
³ Descri‡„o: ³
³ Nome: LETRA2.PRG ³
³ Autor: Carlos Lapa ³
³ Vers„o: ³
³ Data cria‡„o: 24-10-10 Actualizado em : þ24-10-10 ³
³ Hora cria‡„o: 15:59:51 Hora actualiza‡„o: þ15:59:51 ³
³ Fich. Make: ³
³ Fich. Exec.: Doc.s por: Carlos Lapa ³
³ Copyright: (c) Carlos Lapa, Inc. ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
*/
FUNC LETRAaa()
LOCAL ar_dbf:=ALIAS(), nCol:=20, nKey, v_tel_p && cor_ant:=SETCOLOR()
rot="LETRAAA"
*v_tel_p:=SAVESCREEN(0,0,MAXROW(),79)
nVar="0000"
KEYBOARD CHR(27)
sele 1
dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
IF indexord()=1 .or. indexord()<=3
@ 02, 05 SAY "Digite o Venda:"
elseif indexord()=2 .OR. indexord()=4
@ 02, 05 SAY "Digite o Nome:"
ENDIF
read
cor(2)
@ 02, 20 SAY SPAC(30)
nCol=20
cNome=SPAC(00)
DO WHILE .T.
nKey=INKEY(0)
IF LASTKEY()=13
rvenda=venda
exit
elseif lastkey()=27
exit
endif
IF lastkey()=24 .OR. lastkey()=5 .AND. cNome=spac(00)
return
ENDIF
IF nKey=8 .or. nKey=19
nCol=nCol-1
IF nCol < 20
nCol=20
ENDIF
cNome=SUBS(cNome,1,LEN(cNome)-1)
cor(2)
@ 02, 20 SAY cNome+" "
ELSEIF (nKey>=32 .and. nKey<=165)
nCol=nCol+1
IF nCol>=50
nCol=50
cNome=SUBS(cNome,1,LEN(cNome)-1)
ENDIF
cNome=UPPER(cNome+CHR(nKey))
@ 02,20 SAY cNome
ENDIF
IF !PESQ_DBEDIT2(cNome)
nCol=nCol - 1
IF nCol <20
nCol=20
ENDIF
cNome=SUBS(cNome,1,LEN(cNome)-1)
cor(2)
@ 02,20 SAY cNome
ENDIF
cor(2)
@ 02,20 SAY cNome
ENDDO
* SETCOLOR(cor_ant)
* RESTSCREEN(0,0,MAXROW(),79,v_tel_p)
RETURN
FUNC PESQ_DBEDIT2(cNome)
IF DBSEEK(cNome,.T.)
nVar=venda
IF LASTKEY() <> 5 .AND. LASTKEY() <> 24
KEYBOARD CHR(27)
ENDIF
IF lastkey()=24 .OR. lastkey()=5
return
ENDIF
dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
ELSE
RETURN (.F.)
ENDIF
RETURN (.T.)
obrigado
lapinhazzz
-
lapinhazzz
- Usuário Nível 3

- Mensagens: 130
- Registrado em: 20 Abr 2009 10:52
- Localização: LAGOA
Re: pesquisando no dbedit letra a letra
Já percebi o que deveria ser feito.
Mas não funciona se
Mas, quando eu vou para a rotina mv_mv e se tiver da venda 00002 até á venda 00010
Venda Cliente Valor
00002 -- --
00003 -- --
00005 -- --
00006 -- --
00007 -- --
00008 -- --
00009 -- --
00010 -- --
se digitar 10 no index vvenda3 for deleted()
o programa de pesquisa não deixa por o 10
Se existir a venda 00001 então já deixa por o 10 se existir a venda 100 também não funciona.
Tem que ter um número anterior por exemplo para 00010 tem que ter o 00001 para procurar o 00100 tem que ter a venda 10
Amigos do forum
Ajudem-me!
E obrigado Itamar e obrigado a este forum que é espectacular na resolução de problemas
Um abraço a todos
Fico aguardando com expectativa a resposta.
Mais uma vez obrigado
lapinhazzz
Mas não funciona se
Código: Selecionar todos
procedure main() //aqui cria os indices. Verificar que o vvenda3 é for deleted()
sele 1
use vendas alia a1
index on strzero(venda,5,0) tag vvenda1 to ivendas
index on utente+strzero(venda,5,0) tag vvenda2 to ivendas
index on strzero(venda,5,0) tag vvenda3 to ivendas for deleted()
index on utente+strzero(venda,5,0) tag vvenda4 to ivendas for deleted()
index on datactual tag vvenda5 to ivendas
index on strzero(venda,5,0) tag vvenda6 to ivendas
function mv_mv() //aqui mostra em browse
rot="MVMV"
priv l,rr
rr=0
sele 2
OrdSetFocus("vendaitem")
set filt to recno()>1
go top
sele 1
OrdSetFocus("vvenda3")
dbsetorder(3)
set deleted off
set filt to recno()>1
go top
do whil .t.
publ v1a[1],v2a[1],v3a[1],v4a
if indexord()=3
tit("Vendas (Recupera‡Æo por venda)")
v1a[1]="strzero(VENDA,5,0)+' '+dtoc(datactual)+' '+utente+' '+proc+' '+hora+' '+letraesc+cursoabv+' '+origem+tran(total,'@E 999,999.99')+iif(ff=' ',' ',iif(ff='1','þ',' '))"
v3a[1]="Venda DataACTUAL Utente Proc Hora Esc Curso Orig Total"
* 12345 10/10/2009 12345678901234567890 123456 13:15:15 A CEF1A1 12345.12
* 1 2 3 4 5 6 7 8
* 012345678901234567890123456789012345678901234567890123456789012345678901234567890
pfs("[SPACE]Marca/Desmarca,[ENTER]Grava,F7ReordenaLista")
elseif indexord()=4
tit("Vendas (Recupera‡Æo por utente)")
v1a[1]="utente+' '+strzero(venda,5,0)+' '+dtoc(datactual)+' '+proc+' '+hora+' '+letraesc+cursoabv+' '+origem+tran(total,'@E 999,999.99')+iif(ff=' ',' ',iif(ff='1','þ',' '))"
* 1 2 3 4 5 6 7 8
* 012345678901234567890123456789012345678901234567890123456789012345678901234567890
v3a[1]="Utente Venda DataACTUAL Proc Hora Esc Curso Orig Total"
* 12345678901234567890 12345 10/10/2009 123456 13:15:50 A CEF1A1 12345.12
pfs("[SPACE]Marca/Desmarca,[ENTER]Grava,F7ReordenaLista")
endi
v2a[1]="@"
v4a=""
cor(2)
IF l=-6
letraaa()
ENDIF
keyb chr(26)
dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
l=lastkey()
do case
case l=27
replace all ff with " "
exit
case l=13
mv_gr(1)
IF vali=.t.
mvreca()
endi
rr=1
exit
case l=-6
mv_ord() // reordena
if lastkey()=27
exit
endif
endc
endd
IF rr=1
rr=0
mv_mv()
ENDIF
rele v1a,v2a,v3a,v4a
rot="MAIN"
return
FUNC PESQ_DBEDIT2(cNome) //esta é a parte de pesquisa com zeroesquerda
IF DBSEEK([b]zeroesquerda(cNome,5[/b]),.T.)
nVar=venda
IF LASTKEY() <> 5 .AND. LASTKEY() <> 24
KEYBOARD CHR(27)
ENDIF
IF lastkey()=24 .OR. lastkey()=5
return
ENDIF
dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
ELSE
RETURN (.F.)
ENDIF
RETURN (.T.)
Venda Cliente Valor
00002 -- --
00003 -- --
00005 -- --
00006 -- --
00007 -- --
00008 -- --
00009 -- --
00010 -- --
se digitar 10 no index vvenda3 for deleted()
o programa de pesquisa não deixa por o 10
Se existir a venda 00001 então já deixa por o 10 se existir a venda 100 também não funciona.
Tem que ter um número anterior por exemplo para 00010 tem que ter o 00001 para procurar o 00100 tem que ter a venda 10
Amigos do forum
Ajudem-me!
E obrigado Itamar e obrigado a este forum que é espectacular na resolução de problemas
Um abraço a todos
Fico aguardando com expectativa a resposta.
Mais uma vez obrigado
lapinhazzz
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: pesquisando no dbedit letra a letra
Olá!
Desculpa-me a curiosidade: por qual motivo crias índice for deleted()? E o Set Filter to Recno() > 1?
Sugiro trocares por
P.S.
mais uma curiosidade: o que é um utente?
Desculpa-me a curiosidade: por qual motivo crias índice for deleted()? E o Set Filter to Recno() > 1?
Sugiro trocares
Código: Selecionar todos
IF DBSEEK(zeroesquerda(cNome,5),.T.)Código: Selecionar todos
IF DBSEEK(StrZero(Val(cNome,5)),.T.)mais uma curiosidade: o que é um utente?
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
lapinhazzz
- Usuário Nível 3

- Mensagens: 130
- Registrado em: 20 Abr 2009 10:52
- Localização: LAGOA
Re: pesquisando no dbedit letra a letra
Bom dia a todos do forum
Bom dia alxsts
eu crio indice for deleted() para me mostrar a base de dados só aqueles registos que estão apagados.
Quando faço o set filter é porque quando a base de dados está vazia o dbedit mostrar o browse com nada la dentro.
Utente - é o utilizador, a pessoa que beneficia de um serviço.
Fico à espera de uma resposta vossa para o meu problema
Cumprimentos a todos
lapinhazzz
Bom dia alxsts
eu crio indice for deleted() para me mostrar a base de dados só aqueles registos que estão apagados.
Quando faço o set filter é porque quando a base de dados está vazia o dbedit mostrar o browse com nada la dentro.
Utente - é o utilizador, a pessoa que beneficia de um serviço.
Fico à espera de uma resposta vossa para o meu problema
Cumprimentos a todos
lapinhazzz
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Re: pesquisando no dbedit letra a letra
Ola!
Veja que é preciso guardar a última tecla pressionada, para juntar com a anterior.
Saudações,
Itamar M. Lins Jr.
Veja que é preciso guardar a última tecla pressionada, para juntar com a anterior.
Código: Selecionar todos
vPesq += chr(key) //Atenção aqui!
KeyAnt := key
Atenção que se for utilizar a sugestão do "alxsts" deverá verificar se o usuário teclou outra coisa que não seja números.
Usando a função zeroesq() o usuário pode pressionar qualquer tecla.
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Re: pesquisando no dbedit letra a letra
Ola!
Use o indice dessa forma
Saudações,
Itamar M. Lins Jr.
Use o indice dessa forma
Código: Selecionar todos
index on str(venda,14,4)
........
vPesq += chr(key)
KeyAnt := key
//Pode checar se preciso, If chr(key) $ '0123456789.,'
if a1->(DbOrderInfo(DBOI_NUMBER)) = 3
nPesq := StrTran(vPesq,',','.')
nPesq := str(val(nPesq),14,4)
a1->(DbSeek(nPesq))
EndIf
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
lapinhazzz
- Usuário Nível 3

- Mensagens: 130
- Registrado em: 20 Abr 2009 10:52
- Localização: LAGOA
Re: pesquisando no dbedit letra a letra
Amigos do Forum muito boa noite.
quando faço o index on strzero(venda,5,0) tag vvenda3 for deleted()
Este index tem que existir porque quando faço o browse só quero que me aparecem os registos deletados.
Aqui vai a rotina que faz a pesquisa.
É como eu tinha dito atrás.
Verifiquem esta procura por favor.
E agora tenho duas opções de acordo com duas opções:
Passo a citar:
Caros amigos o que tenho que fazer para o valor apresentado no browse ser 00010 e eu introduzir só 10 e ele pesquisar o valor 10 o que não está a fazer.
Se depois escolher o Nome então pesquisa o nome que é caracter por exemplo cliente exemplo 1
Obrigado
Aguardo breves notícias de vocês
lapinhazzz
quando faço o index on strzero(venda,5,0) tag vvenda3 for deleted()
Este index tem que existir porque quando faço o browse só quero que me aparecem os registos deletados.
Aqui vai a rotina que faz a pesquisa.
É como eu tinha dito atrás.
Verifiquem esta procura por favor.
Código: Selecionar todos
/*
ÚÄ Program ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Aplica‡„o: ³
³ Descri‡„o: ³
³ Nome: LETRA2.PRG ³
³ Autor: Carlos Lapa ³
³ Vers„o: ³
³ Data cria‡„o: 24-10-10 Actualizado em : þ24-10-10 ³
³ Hora cria‡„o: 15:59:51 Hora actualiza‡„o: þ15:59:51 ³
³ Fich. Make: ³
³ Fich. Exec.: Doc.s por: Carlos Lapa ³
³ Copyright: (c) Carlos Lapa, Inc. ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
*/
FUNC LETRAaa()
LOCAL ar_dbf:=ALIAS(), nCol:=20, nKey, v_tel_p && cor_ant:=SETCOLOR()
rot="LETRAAA"
*v_tel_p:=SAVESCREEN(0,0,MAXROW(),79)
nVar="00000"
KEYBOARD CHR(27)
sele 1
dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
IF indexord()=1 .or. indexord()=3
@ 02, 05 SAY "Digite o Venda:"
elseif indexord()=2 .OR. indexord()=4
@ 02, 05 SAY "Digite o Nome:"
ENDIF
read
cor(2)
@ 02, 20 SAY SPAC(30)
nCol=20
cNome=SPAC(00)
DO WHILE .T.
nKey=INKEY(0)
IF LASTKEY()=13
rvenda=venda
exit
elseif lastkey()=27
exit
endif
IF lastkey()=24 .OR. lastkey()=5 .AND. cNome=spac(00)
return
ENDIF
IF nKey=8 .or. nKey=19
nCol=nCol-1
IF nCol < 20
nCol=20
ENDIF
cNome=SUBS(cNome,1,LEN(cNome)-1)
cor(2)
@ 02, 20 SAY cNome+" "
ELSEIF (nKey>=32 .and. nKey<=165)
nCol=nCol+1
IF nCol>=50
nCol=50
cNome=SUBS(cNome,1,LEN(cNome)-1)
ENDIF
cNome=UPPER(cNome+CHR(nKey))
@ 02,20 SAY cNome
ENDIF
IF !PESQ_DBEDIT2(cNome)
nCol=nCol - 1
IF nCol <20
nCol=20
ENDIF
cNome=SUBS(cNome,1,LEN(cNome)-1)
cor(2)
@ 02,20 SAY cNome
ENDIF
cor(2)
@ 02,20 SAY cNome
ENDDO
* SETCOLOR(cor_ant)
* RESTSCREEN(0,0,MAXROW(),79,v_tel_p)
RETURN
FUNC PESQ_DBEDIT2(cNome)
IF DBSEEK(zeroesquerda(cNome,5),.T.)
nVar=venda
IF LASTKEY() <> 5 .AND. LASTKEY() <> 24
KEYBOARD CHR(27)
ENDIF
IF lastkey()=24 .OR. lastkey()=5
return
ENDIF
dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
ELSE
RETURN (.F.)
ENDIF
RETURN (.T.)
Passo a citar:
Código: Selecionar todos
IF indexord()=1 .or. indexord()=3
@ 02, 05 SAY "Digite o Venda:" //numérico com tamanho 5
elseif indexord()=2 .OR. indexord()=4
@ 02, 05 SAY "Digite o Nome:" //Alfanumérico com tamanho 20
ENDIF
Se depois escolher o Nome então pesquisa o nome que é caracter por exemplo cliente exemplo 1
Obrigado
Aguardo breves notícias de vocês
lapinhazzz