Ir para conteúdo

POWERED BY:

Arquivado

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

Slaa

2+1 = 21

Recommended Posts

Senhores,Eis o problema... epgo duas variaveis do BD que saum 1 e 2 e quero soma-las, mas eis o resultado = 21!Ou seja, ele esta juntando ao inves de soma-las.Eis o codigo que estou usando:<%=((objrs("addtransferencia")) + (objrs("addespaco")))%>No DB esta tudo em texto. Quando mudo pra numero, dah erro de tipos, ou algo assim.Ajudem plz...Slaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passe como número: use CInt para inteiros ou CDouble para números com casas decimais!

 

B)

GENIAL! Era isso que eu tava procurando!

 

Mas o CDouble naum tah funcionando... ele tah falando em mismatch.. isso eh problema no DB?

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que não é CDouble e sim CDbl. Se for usar numeros grandes nessas somas aconselho a usar o Cdbl mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que não é CDouble e sim CDbl.

Uia... é mesmo! :natalbiggrin:
AHUAHUA Ixiii.. continuaType mismatchOlha lah como tah:<%=( ( CDbl(objrs("addtransferencia")*CDbl(objrs("precotransferenciaadd")) ) + ( CDbl(objrs("addespaco")*CDbl(objrs("precoespacoadd")))) ) + (CDbl(objRS("preco")))) %>vlw! ac

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algum dos campos deve estar vazio ou nulo, por isso o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai que tah...naumeh problema com os dados do DB que naum 2, 5, 1 e 3E continua dando o erro de tupe mismatch....No DB eu coloquei os valores como numeros, e decimais....Isso pode ter influenciado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce tem 5 valores ali em cima todos os 5 estão vindo corretamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce tem 5 valores ali em cima todos os 5 estão vindo corretamente

Acredito que sim, pq quando utilizei a tag pra inteiros (CINT) funcionou perfeitamente...Soh que com o para decimais naum esta funcionando.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta estranho isso...estes valores não estão todos como numericos senão funcionava...mande escrever os 5 valores denovo pois ali em cima voce colocou apenas 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta estranho isso...estes valores não estão todos como numericos senão funcionava...mande escrever os 5 valores denovo pois ali em cima voce colocou apenas 4

NOSSSA!!! Minhas humildes desculpas.... To ate com vergonha agora...Realmente faltou um dos valores serem passados a numericos...Mil desculpas... era algo taum bobo :( Obrigadão ae,

Compartilhar este post


Link para o post
Compartilhar em outros sites

altere o campo dos valores no banco para Inteiro (ou Número, no Access).se eles ficarem como String (texto no Access) ele não soma... :natallaugh:

ta estranho isso...estes valores não estão todos como numericos senão funcionava...mande escrever os 5 valores denovo pois ali em cima voce colocou apenas 4

Boa! escrevi sem ler tua resposta![]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

altere o campo dos valores no banco para Inteiro (ou Número, no Access).se eles ficarem como String (texto no Access) ele não soma... :natallaugh:

ta estranho isso...estes valores não estão todos como numericos senão funcionava...mande escrever os 5 valores denovo pois ali em cima voce colocou apenas 4

Boa! escrevi sem ler tua resposta![]'s
C eu mudar pa Numero, mas Padrão? Para mostrar duas casas depois da virgula... dah certo? aqui tah dando o erro de Type mismatch.... de novo :( C eh inteiro dentro do DB funciona... ams eu preciso que sejaum com pelo menos 2 casas depois da virgula...

Compartilhar este post


Link para o post
Compartilhar em outros sites

com CDBL funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

como está seu codigo e os valore que vopce passa e os valores que voltam depois de converterpoe tudo ai para vermos o que está ocorrendo

Compartilhar este post


Link para o post
Compartilhar em outros sites

como está seu codigo e os valore que vopce passa e os valores que voltam depois de converterpoe tudo ai para vermos o que está ocorrendo

No DB:Os valores estaum todos formatados da seguinte forma:

NumeroDecimalPadrão1802

Ai vai o código:
<%Dim strSQL				Dim objConn				Dim objRs				Dim lngMemberID			' Open DatabaseSet objConn = Server.CreateObject("ADODB.Connection")Set objRs = Server.CreateObject("ADODB.Recordset")objConn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("001.mdb") %><%strloginname = session("loginname") strSQL = "SELECT * FROM Members WHERE LoginName = '" & strLoginName & "'"' Open the DatabaseobjRS.Open strSQL, objConnif objRS.EOF = true thenresponse.redirect ("http://www.hv.com/")else%> <%' Segurançaresponse.expires = "0"if session("logado") <> "logou" thenresponse.redirect ("http://www.hv.com/clientes/home.asp")session("erro") = ("Erro")end if%>' Inicio do HTML (cabeçalho etc..)<tr>				<td><span style="font-weight: bold">Total:</span></td>				<td bgcolor="#EFEFEF"><font color="#0066CC">R$ <%=(CDbl(objrs("addtransferencia")) * CDbl(objrs("precotransferenciaadd")))+(CDbl(objrs("addespaco")) * CDbl(objrs("precoespacoadd")))+(CDbl(objrs("preco")))%></font></td>			  </tr>			  <tr>				<td><span style="font-weight: bold">Espaço:</span></td>				<td><%=objRS("addespaco")%> pacotes (R$<%=(CDbl(objRS("precoespacoadd")) * CDbl(objRS("addespaco")))%>)</td>				<td><span style="font-weight: bold">Valor:</span></td>				<td bgcolor="#EFEFEF">				R$ <%=(CDbl(objrs("addtransferencia")) * CDbl(objrs("precotransferenciaadd")))+(CDbl(objrs("addespaco")) * CDbl(objrs("precoespacoadd")))%></td>			  </tr>			  <tr>				<td><span style="font-weight: bold">Transferência:</span></td>				<td><%=objRS("addtransferencia")%> pacotes 				(R$<%=(CDbl(objRS("precotransferenciaadd")) * CDbl(objRS("addtransferencia")))%>)</td>			  </tr>'Resto do HTML

Compartilhar este post


Link para o post
Compartilhar em outros sites

para limpar um pouco seu codigopegue todos os valores que voce pega do DB e grave em variaveis antestipo assimaddtransferencia = objrs("addtransferencia")) e para cada ocorrencia voce troca pela variavelai voce da um response.write em todas as variaveis para vermos os valores que voce esta usando nos calculos para podermos localizar o erro...precisamos saber o que relamente o codigo ta manipulando pois só com o codigo não dá para fazer muita coisa nestes casos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois bem... eis o que fiz:

 

<%Dim strSQL				Dim objConn				Dim objRs				Dim lngMemberID			Dim addtransferencia, addespaco, precoespacoadd, preco, precotransferenciaadd' ACABO DE ACICIONAR' Open DatabaseSet objConn = Server.CreateObject("ADODB.Connection")Set objRs = Server.CreateObject("ADODB.Recordset")objConn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("001.mdb") strloginname = session("loginname") ' SELECTstrSQL = "SELECT * FROM Members WHERE LoginName = '" & strLoginName & "'"' Open the DatabaseobjRS.Open strSQL, objConnif objRS.EOF = true thenresponse.redirect ("http://www.hostwebdev.com/")else'Declaraçãoaddtransferencia = objrs("addtransferencia") addespaco = objrs("addespaco") precoespacoadd = objrs("precoespacoadd") precotransferenciaadd = objrs("precotransferenciaadd") addtransferencia = objrs("addtransferencia") preco = objrs("preco") ' Segurançaresponse.expires = "0"if session("logado") <> "logou" thenresponse.redirect ("http://www.hostwebdev.com/clientes/home.asp")session("erro") = ("Erro")end ifresponse.Write(preco)%><br><%=addtransferencia%><BR><%=addespaco%><BR><%=precoespacoadd%><BR><%=precotransferenciaadd%><BR><%=addtransferencia%><BR><%=CDBL(preco)*CDBL(addespaco)%><BR>

O que ele esta reornando eh respectivamente:

1, 0, 0, 0, 0, 0, 0

 

Sendo que os valores respectivamente no DB são:

1,00 , 0,00 , 0,00 , 0,00 , 0,00 , 0,00

 

E tem algo interessante:

 

ACho que o problema esta realmente no DB, pq quando tento mudar para um valor quebrado, (0,90) ele naum aceita. Ele coloca como sendo 0,00. QQ tah acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tiozinho então o problema é outro...

 

viu como com os valores fica mais facil de ver as coisas...

 

1 e 1,00 é a mesmo coisa então o server devolve a forma mais simples que é 1

 

se voce quer que sempre venha com duas casas mesmo não tendo os centavos voce deve forçar isso com formatnumber

 

experimente assim agora

 

<%=FormatNumber(addtransferencia,2)%><BR><%=FormatNumber(addespaco,2)%><BR><%=FormatNumber(precoespacoadd,2)%><BR><%=FormatNumber(precotransferenciaadd,2)%><BR><%=FormatNumber(addtransferencia,2)%><BR><%=FormatNumber(CDBL(preco)*CDBL(addespaco),2)%><BR>

acho que agora vai

Compartilhar este post


Link para o post
Compartilhar em outros sites

RAPAZ! GRANDE MARIOUFPA!Muito Obrigado.Funcionou perfeitamente! Obrigado!E tenho que dizer! Vcs saum d+... os melhores.. Aliás este eh o melhor forum! Parabéns! E mais uma vez obrigado! Principalmente pela paciência.

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.