Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PRWEB

Valores Decimal

Recommended Posts

Olá pessoal tudo bem?

 

Preciso de uma ajuda urgente!!!

 

Tenho um formulário que tem campos DECIMAL e na pagina q eu gravo eu utilizo a função abaixo, só que quando eu retiro essa função da pagina que grava fica errado a gravação no banco de dados e se coloco essa função abaixo cada vez que atualizo a tela fica mudando os valores dos campos.

 

'Função para remover caracteres especiais dos números
Function RemoveReal(valor)
 if (valor <> "") then
  RemoveReal = Replace(valor, ".", ",")  'Troca vírgula por ponto
 end if
End Function

Só que tem um problema quando vou gravar no banco na tela ele mostra assim: 52918,48 e no banco de dados no campo fica assim: 5.291.848,00

 

Não sei mais o q faço.

 

Obrigado,

 

http://forum.imasters.com.br/public/style_emoticons/default/excl.gif http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesta função você está somente formatando o numero, trocando virgula por ponto.

Não está atribuindo valor.

A variável que você ta levando como parametro tem um valor. E se você atualizar a tela vai ficar somando esse valor. Eu suspeito disso.

Poste o código de onde você chama a funçao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha eu utilizo um java script na tela aonde contem os campos:

 

<script language='JavaScript' type="text/javascript">
function total1(campo1,campo2,campo3)
{
 var sub_total = 0;
 
 //Pré total
 var ptot = parseFloat(campo1.value.replace(',', '.')) * parseFloat(campo2.value.replace(',','.'));
 campo3.value = isTrunc(ptot, 2);
 
 //Cálculo do sub_total
 var qtdC = document.myForm.qtdeCampos.value - 1;
 var tot = 0;
 for (var i=1; i<=qtdC; i++){
	if ( document.getElementById('v_total_' + String(i)).value ){
		tot = parseFloat(document.getElementById('v_total_' + String(i)).value.replace(',', '.'));
		sub_total = sub_total + tot;
	}
 }
 document.myForm.sub_total.value = isTrunc(sub_total, 2);
 
 //Cálculo do total geral
 var sub  = parseFloat(document.myForm.sub_total.value.replace(',', '.'));
 var cust = parseFloat(document.myForm.custo_envio.value.replace(',', '.'));
 var out  = parseFloat(document.myForm.outros.value.replace(',', '.'));
 var tot  = sub + cust + out;
 document.myForm.total_geral.value = isTrunc(tot, 2);
}

function total_geral1()
{

//Cálculo do total geral
var sub  = parseFloat(document.myForm.sub_total.value.replace(',', '.'));
var cust = parseFloat(document.myForm.custo_envio.value.replace(',', '.'));
var out  = parseFloat(document.myForm.outros.value.replace(',', '.'));
var tot  = sub + cust + out;
document.myForm.total_geral.value = isTrunc(tot, 2);

}
</script>

 

e ai chamo a pagina ef_altera_of.asp:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%
if session ("v_o_f_alterar") = 0 then
Response.redirect "erro.asp"
end if

Session.LCID = 1046
session.timeout = 60

'Função para remover caracteres especiais dos números
Function RemoveReal(valor)
 if (valor <> "") then
  RemoveReal = Replace(valor, ",", ".")  'Troca vírgula por ponto
 end if
End Function

id_ch = request.QueryString("id_ch")
id_cliente = request.QueryString("id_cliente")
num_os = request.QueryString("no_os")
id = request.QueryString("id")
nome_empresa = request.QueryString("nome_empresa")
descricao = request.QueryString("descricao")
sistema = request.QueryString("sistema")
gerar_of_om = request.QueryString("gerar_of_om")

descricao = Request.Form("descricao")
departamento = Request.Form("departamento")
situacao_of_om = Request.Form("situacao_of_om")
sistema = Request.Form("sistema")
gerar_cob = Request.Form("gerar_cob")
solicitado_por = Request.Form("solicitado_por")
urgente = Request.Form("opt")
fechado_por = Request.Form("fechado_por")
v_unitario = RemoveReal(Request.Form("v_unitario"))
v_total = RemoveReal(Request.Form("v_total"))
valor_total = RemoveReal(Request.Form("valor_total"))
sub_total = RemoveReal(Request.form("sub_total"))
custo_envio = RemoveReal(Request.form("custo_envio"))
outros = RemoveReal(Request.form("outros"))
total_geral = RemoveReal(Request.form("total_geral"))
transporte = Request.form("transporte")
outras = Request.form("outras")
observacoes = Request.form("observacoes")

'Conexao tabela INTERBASE
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Firebird/Interbase(r) driver}; DBNAME=localhost:c:\Inetpub\wwwroot\sistema_interno_hcs_v.1.0\bd\BD_HCS.GDB; UID=SYSDBA;PWD=masterkey")

'Verificando quantidade de registros
Set os = server.createobject("adodb.recordset")
Set os = oConn.execute ("SELECT COUNT(*) AS temp FROM TB_GERAR_OF_OM_CAD_ITENS")
num_rows = os("temp")
os.Close()
 
for i = 1 to num_rows
 
id = Request.form("id_"&i)
sistema = Request.form("sistema_"&i)
quant = Request.form("quant_"&i)
obs_prod = Request.form("obs_prod_"&i)
v_unitario = RemoveReal(Request.form("v_unitario_"&i))
v_total = RemoveReal(Request.form("v_total_"&i))
valor_total = RemoveReal(Request.form("valor_total_"&i))

usuario_altera = session("usuario")
ip_altera = Request.ServerVariables("REMOTE_ADDR")

 'Atualiza informaçoes no INTERBASE 'TB_GERAR_OF_CAD_ITENS'
 oConn.execute ("update TB_GERAR_OF_OM_CAD_ITENS Set descricao = '"&descricao&"', solicitado_por = '"&solicitado_por&"', situacao_of_om = '"&situacao_of_om&"', departamento = '"&departamento&"', urgente = '"&urgente&"',sistema = '"&sistema&"', quant = '"&quant&"', obs_prod = '"&obs_prod&"', v_unitario = '"&v_unitario&"', v_total = '"&v_total&"', sub_total = '"&sub_total&"', custo_envio = '"&custo_envio&"', outros = '"&outros&"', total_geral = '"&total_geral&"', transporte = '"&transporte&"', outras = '"&outras&"', fechado_por = '"&fechado_por&"', observacoes = '"&observacoes&"' WHERE id = " & cdbl(id))

 'Atualiza informaçoes no INTERBASE 'TB_GERAR_OF_CAD'
 oConn.execute ("update TB_GERAR_OF_OM_CAD Set solicitado_por = '"&solicitado_por&"',  descricao = '"&descricao&"', situacao_of_om = '"&situacao_of_om&"', departamento = '"&departamento&"', urgente = '"&urgente&"', fechado_por = '"&fechado_por&"', total_geral = '"&total_geral&"' WHERE no_os = "&Request.QueryString("no_os"))
 next

ato = request.Form("opt2")
dd30 = request.Form("opt3")
dd60 = request.Form("opt4")
dd90 = request.Form("opt5")
dd120 = request.Form("opt6")
forma_pagto = request.Form("forma_pagto")
data_venc_pagto = Request.Form("data_venc_pagto")
valor_pagto = RemoveReal(Request.Form("valor_pagto"))
anotacao1 = Request.Form("anotacao1")

'Verificando quantidade de registros
Set campos = server.createobject("adodb.recordset")
Set campos = oConn.execute ("SELECT COUNT(*) AS temp FROM TB_INFO_PAGTO")
num_rows = campos("temp")
campos.Close()
 
for i = 1 to num_rows
 
id_ch = Request.form("id_ch_"&i)
data_venc_pagto = Request.form("data_venc_pagto_"&i)
forma_pagto = Request.form("forma_pagto_"&i)
anotacao1 = Request.form("anotacao1_"&i)
valor_pagto = RemoveReal(Request.form("valor_pagto_"&i))

 'Atualiza informaçoes no INTERBASE 'TB_CAD_CHEQUES_OF'
 oConn.execute ("update TB_INFO_PAGTO Set ato = '"&ato&"', dd30 = '"&dd30&"', dd60 = '"&dd60&"', dd90 = '"&dd90&"', dd120 = '"&dd120&"', forma_pagto = '"&forma_pagto&"', data_venc_pagto = '"&data_venc_pagto&"', valor_pagto = '"&valor_pagto&"', valor_pago = '0', anotacao1 = '"&anotacao1&"' WHERE id_ch = " & cdbl(id_ch))
next

oConn.Close()

Response.redirect "gerar_os.asp?id_cliente="&id_cliente&"&no_os="&num_os&"&status_os=em_andamento"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui você esta trocando o . por ,

tente apenas assim

<%
 long_Value = 12345.6789
 long_RoundedValue = Round(long_Value,2)
 Response.Write(long_RoundedValue)
 
 'o 2 é o numero de casa decimais depois da virgula
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função round permite colocar um número para um número fixo de casas decimais. Isso é ótimo, Por exemplo, se você tem um número e deseja que ele tem apenas 2 pontos decimais

 

Response.write "total é: R$" & Round (CartAmt, 2)

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz apenas assim

v_unitario = Request.Form("v_unitario")
Round(v_unitario,2)
qual o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então xanburzum, eu fiz o seguinte:

 

Na pagina que grava ef_altera_of eu coloquei: v_unitario = Request.Form("v_unitario")

 

E na página do formulário aonde mostra o valor do campo v_unitario eu coloquei:

<input name="v_unitario_<%=i%>" type="text" class="form2" id="v_unitario_<%=i%>" onBlur="javascript:total1(quant_<%=i%>,v_unitario_<%=i%>,v_total_<%=i%>)" value="<%=gerar_os_itens(Round(v_unitario,2))%>" size="10" alt="decimal" />

 

So que quando eu coloco isso value="<%=gerar_os_itens(Round(v_unitario,2))%>" o campo v_unitario fica assim: 0,19 ele já coloca um valor.

 

E no campo no banco de dados fica assim 3150000 se dou 2 cliques no campo fica assim 3.150,000 sendo que é 31.500,00

 

O que pode ser?

 

Muito Obrigado http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho naum entendi muito bem...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente mudar o valor das casa decimais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um

A função FormatNumber retorna uma expressão formatada como um número.

FormatNumber(20000.578,2)

Compartilhar este post


Link para o post
Compartilhar em outros sites

na função original estava errado

 

RemoveReal = Replace(valor, ".", ",")  'Troca vírgula por ponto

Estava fazendo justamente o contrario trocando ponto por virgula e basta trocar mesmo a virgula por ponto mas antes precisaria também eliminar os pontos ficando algo como

 

RemoveReal = Replace(valor, ".", "")  'Elimina pontos
RemoveReal = Replace(valor, ",", ".")  'Troca vírgula por ponto

Teste

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.