Página 1 de 1
formatacao campo numerico
Enviado: 05 Abr 2007 17:18
por filizola
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.
Enviado: 05 Abr 2007 17:26
por sygecom
o programa nao interpreta que a variavel unidp foi preenchida com "KG" enquando eu nao executar o READ
coloque um:
SET CONFIRM OFF
Acho que resolve....
Abraços
Enviado: 05 Abr 2007 19:23
por Pablo César
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
Enviado: 05 Abr 2007 19:30
por Pablo César
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
Enviado: 06 Abr 2007 09:29
por spereira
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.
Enviado: 07 Abr 2007 08:59
por Toledo
Filizola, dê uma olhada neste tópico também:
https://pctoledo.org/forum/viewto ... ght=#21090
Abraços,
Enviado: 07 Abr 2007 11:05
por Poka
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
Enviado: 08 Abr 2007 10:05
por Dr_Spock
- 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
Enviado: 09 Abr 2007 20:23
por spereira
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.
Vou tentar melhorar:
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.)