formatacao campo numerico
Moderador: Moderadores
- filizola
- Usuário Nível 3

- Mensagens: 421
- Registrado em: 19 Ago 2003 20:10
- Localização: Belo Horizonte/MG
formatacao campo numerico
galera, seguinte:
descp:=unidp:=" "
prodp:=space(04)
valorp=0.00
@ 10,10 get prodp pict "´9999" valid(tem_prod(prodp,@descp,@unidp)
@ 11,10 get valorp pict if(unidp="KG","@e 99.999","@e 99")
@ 12,10 say descp
@ 13,10 get qtdep pict "99"
read
function tem_prod(prodf,descf,unidf)
sele produtos
dbseek(prodf,.f.)
unidf="KG"
return(.t.)
o programa nao interpreta que a variavel unidp foi preenchida com "KG" enquando eu nao executar o READ
alguem tem uma solução.
desde já agradeço.
descp:=unidp:=" "
prodp:=space(04)
valorp=0.00
@ 10,10 get prodp pict "´9999" valid(tem_prod(prodp,@descp,@unidp)
@ 11,10 get valorp pict if(unidp="KG","@e 99.999","@e 99")
@ 12,10 say descp
@ 13,10 get qtdep pict "99"
read
function tem_prod(prodf,descf,unidf)
sele produtos
dbseek(prodf,.f.)
unidf="KG"
return(.t.)
o programa nao interpreta que a variavel unidp foi preenchida com "KG" enquando eu nao executar o READ
alguem tem uma solução.
desde já agradeço.
"Um passo a frente, e já não estará mais no mesmo lugar..."
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Marcio,
Você ja viu os tópicos referentes ao GETSYS. Eu acho que você poderá resolver isso tratando lá no GETSYS.PRG. Existe um exemplo do DANIEL muito bom e completo e outro que eu postei, que talvez ajude a entender a sua questão específica.
Dê uma olhada em:
https://pctoledo.org/forum/viewto ... ght=getsys (exemplo do Daniel)
https://pctoledo.org/forum/viewto ... 5&start=15 (meu exemplo)
Um clip-abraço :)Pos
Você ja viu os tópicos referentes ao GETSYS. Eu acho que você poderá resolver isso tratando lá no GETSYS.PRG. Existe um exemplo do DANIEL muito bom e completo e outro que eu postei, que talvez ajude a entender a sua questão específica.
Dê uma olhada em:
https://pctoledo.org/forum/viewto ... ght=getsys (exemplo do Daniel)
https://pctoledo.org/forum/viewto ... 5&start=15 (meu exemplo)
Um clip-abraço :)Pos
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Espera aí Marcio, antes de começar com o GETSYS. A variável unidp é editar em outro GET anteriormente ?. Ou recebe esse valor como parâmetro na entra da função ?.
Seja como for, eu acostumo colocar dois GETs mas condicinada antes pelo WHEN.
Por exemplo:
@ 11,10 get valorp pict "@E 99.999" WHEN unidp="KG"
@ 11,10 get valorp pict "99" WHEN !(unidp="KG")
READ
Será que resolve ?.
Um clip-abraço :)Pos
Seja como for, eu acostumo colocar dois GETs mas condicinada antes pelo WHEN.
Por exemplo:
@ 11,10 get valorp pict "@E 99.999" WHEN unidp="KG"
@ 11,10 get valorp pict "99" WHEN !(unidp="KG")
READ
Será que resolve ?.
Um clip-abraço :)Pos
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Filizola, dê uma olhada neste tópico também:
https://pctoledo.org/forum/viewto ... ght=#21090
Abraços,
https://pctoledo.org/forum/viewto ... ght=#21090
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Prezado colega,
Acredito que esse não seja só prblema seu não, acho que de todos nós
, não sei como os outros fazem, aqui vai somente + uma ideia.
é bom lembrar tambem tambem que alem de pecas e kilos tem tambem metros, que sao duas casas decimais
no meu cadastro entre outros campos tenho tambem os sequintes campos.
produto.dbf
- codigo
- nome
- unidade
o campo unidade de produtos tem que constar no cadastro de unidade
unidade.dbf
- codigo , c , 2
exemplos de codigo
pc/kg/mt/jg,milheiro, etc
-nome , c , 15
pecas, metros, jogos ,milheiro
- masqtd , c, 15
@e 999,999,999 p/ pecas
@e 999,999.999 p/ kilos
@e 999,999.99 p/ metros
- qtdec // quant de decimais usada na mascara desse item
0 p/ pecas
2 p/ metros
3 p/ kilos
etc
Obs : meu cadastro de unidade é fixo, eu nao deixo o usuario alterar.
//////////////////////////////////////////////////////////
use produto new
produto->(dbsetorder(1)) // ordem de codigo
use unidade new
unidade->(dbsetorder(1)) // ordem de codigo
do while .t.
cls
vcodigo:=spac(len(produto->codigo))
// o codigo de arquivos eu só uso tipo "C"
vqtd:=spac(10)
@ 10,10 say "produto :" get vcodigo pict"@k9" valid fun_prod()
@ 12,10 say "Quantidade:" get vqtd valid fun_un(@vqtd,row(),col()-11)
read
if lastkey()=27
exit
endif
enddo
retu nil
/////////////
func fun_prod
if ! tempo->(dbseek(vcodigo))
alert("Produto nao encontrado;tecle enter")
retu .f.
endif
retu .t.
//////////////
funct fun_un(vqtd,linha,coluna)
produto->(dbseek(vcodigo))
unidade->(dbseek(produto->un))
if unidade->qtdec=0
vqtd:=val(vqtd)
elseif unidade->qtdec=2
vqtd:= val(vqtd)/100
elseif unidade->qtdec=3
vqtd:= val(vqtd)/1000
endif
vmasqtd:=unidade->masqtd
@ linha,coluna say transf( vqtd,vmasqtd)
retu .t.
// o problema nesse exemplo é que voce deve digitar o numero inteiro, inclusive as decimais
um abraço
Poka
Acredito que esse não seja só prblema seu não, acho que de todos nós
, não sei como os outros fazem, aqui vai somente + uma ideia.
é bom lembrar tambem tambem que alem de pecas e kilos tem tambem metros, que sao duas casas decimais
no meu cadastro entre outros campos tenho tambem os sequintes campos.
produto.dbf
- codigo
- nome
- unidade
o campo unidade de produtos tem que constar no cadastro de unidade
unidade.dbf
- codigo , c , 2
exemplos de codigo
pc/kg/mt/jg,milheiro, etc
-nome , c , 15
pecas, metros, jogos ,milheiro
- masqtd , c, 15
@e 999,999,999 p/ pecas
@e 999,999.999 p/ kilos
@e 999,999.99 p/ metros
- qtdec // quant de decimais usada na mascara desse item
0 p/ pecas
2 p/ metros
3 p/ kilos
etc
Obs : meu cadastro de unidade é fixo, eu nao deixo o usuario alterar.
//////////////////////////////////////////////////////////
use produto new
produto->(dbsetorder(1)) // ordem de codigo
use unidade new
unidade->(dbsetorder(1)) // ordem de codigo
do while .t.
cls
vcodigo:=spac(len(produto->codigo))
// o codigo de arquivos eu só uso tipo "C"
vqtd:=spac(10)
@ 10,10 say "produto :" get vcodigo pict"@k9" valid fun_prod()
@ 12,10 say "Quantidade:" get vqtd valid fun_un(@vqtd,row(),col()-11)
read
if lastkey()=27
exit
endif
enddo
retu nil
/////////////
func fun_prod
if ! tempo->(dbseek(vcodigo))
alert("Produto nao encontrado;tecle enter")
retu .f.
endif
retu .t.
//////////////
funct fun_un(vqtd,linha,coluna)
produto->(dbseek(vcodigo))
unidade->(dbseek(produto->un))
if unidade->qtdec=0
vqtd:=val(vqtd)
elseif unidade->qtdec=2
vqtd:= val(vqtd)/100
elseif unidade->qtdec=3
vqtd:= val(vqtd)/1000
endif
vmasqtd:=unidade->masqtd
@ linha,coluna say transf( vqtd,vmasqtd)
retu .t.
// o problema nesse exemplo é que voce deve digitar o numero inteiro, inclusive as decimais
um abraço
Poka
- Filizola
- Para voce ter o retorno desta variavel ela deve ser inicializada antes ou declarada como publica.
- Basta voce inicializar ela antes de chamar a rotina, como abaixo :
unidp=" " && <<<<<<
descp:=unidp:=" "
prodp:=space(04)
valorp=0.00
@ 10,10 get prodp pict "´9999" valid(tem_prod(prodp,@descp,@unidp)
@ 11,10 get valorp pict if(unidp="KG" ......
Um abracao
:)Pos
- Para voce ter o retorno desta variavel ela deve ser inicializada antes ou declarada como publica.
- Basta voce inicializar ela antes de chamar a rotina, como abaixo :
unidp=" " && <<<<<<
descp:=unidp:=" "
prodp:=space(04)
valorp=0.00
@ 10,10 get prodp pict "´9999" valid(tem_prod(prodp,@descp,@unidp)
@ 11,10 get valorp pict if(unidp="KG" ......
Um abracao
:)Pos
-
spereira
- Usuário Nível 2

- Mensagens: 85
- Registrado em: 19 Jul 2004 11:42
- Localização: Porto - Portugal
Vou tentar melhorar:spereira escreveu:filizola
na função tem_prod() você seta a variável unidf="KG" e não a variável unidp.
Bastaria setar a variável unidp com o conteúdo da variável unidf.
Espero ter ajudado de alguma forma.
public unidp := " "
descp:=unidp:=" "
prodp:=space(04)
valorp=0.00
@ 10,10 get prodp pict "9999" valid(tem_prod(prodp))
@ 11,10 get valorp pict if(unidp="KG","@e 99.999","@e 99")
@ 12,10 say descp
@ 13,10 get qtdep pict "99"
read
function tem_prod(prodf)
sele produtos
dbseek(prodf,.f.)
unidp="KG"
return(.t.)
Sérgio Pereira

