Ir para conteúdo

POWERED BY:

Arquivado

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

hadnet

basica asp, erro

Recommended Posts

galera, estou com uma divida basica nao consigo resolver, é um calculo basico, vejam abaixo o calculo e depois o erro:

 

<%															valoraparelho = rsLogin("valoraparelho")					valorprotese =  rsLogin("valorprotese")										valorprot = valoraparelho - valorprotese										valorTotalfinal = rsLogin("valorFinalcontrato")					honorarioIntermediadora = rsLogin("valorIntermediadora")									  					 margem = formatnumber((honorarioIntermediadora / (valorTotalfinal - valorprot))*100,2)											%>					  <%=margem%>

erro:

 

Erro de tempo de execução do Microsoft VBScript (0x800A000D)

Tipos incompatíveis: '[string: ""]'

/controlefinanceiro/relatoriointermediadora.asp, line 209

 

o que será hein????

 

me ajudem, please...........

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente isso colega

margem = ""&formatnumber((honorarioIntermediadora / (valorTotalfinal - valorprot))*100,2)&""
nao funcionou, continuou igual, agora o codigo esta assim:
<%															valoraparelho = rsLogin("valoraparelho")					valorprotese =  rsLogin("valorprotese")										valorprot = valoraparelho + valorprotese										valorTotalfinal = rsLogin("valorFinalcontrato")					honorarioIntermediadora = rsLogin("valorIntermediadora")									  					 margem = ""&formatnumber((honorarioIntermediadora / (valorTotalfinal - valorprot))*100,2)&""											%>					  <%=margem%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

todos estes valores sao numericos mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

todos estes valores sao numericos mesmo?

Sim, em outra tela ele faz calculos usando esses mesmos dados do banco de dados, é muito estranho, nessa tela da isso, estranho.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem algum valor que vem vazio no seu cálculo?

 

fiz uns testes aki olha o que deu:

 

Primeiro usei números sem as aspas

<%
valoraparelho = 10
valorprotese = 20

valorprot = valoraparelho + valorprotese

valorTotalfinal = 30
honorarioIntermediadora = 40

margem = ""&formatnumber((honorarioIntermediadora / (valorTotalfinal - valorprot))*100,2)&""
%>
<%=margem%>

Resultado:

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A000B)

Divisão por zero

/teste.asp, line 30

é melhor você tratar esse erro, agora eu fiz outro teste e coloquei as aspas nos números

 

Resultado

<%
valoraparelho = "10"
valorprotese = "20"

valorprot = valoraparelho + valorprotese

valorTotalfinal = "30"
honorarioIntermediadora = "40"
margem = ""&formatnumber((honorarioIntermediadora / (valorTotalfinal - valorprot))*100,2)&""
%>
<%=margem%>

Resultado que gerou : -4,04

 

 

Verifique se na sua aplicação os numeros estão indo para os RecodSet e veja se estão indo abaixo do valor matemático!

 

 

Outro teste:

Retirei o ultimo valor que é da variável: honorarioIntermediadora

olha o que deu:

<%
valoraparelho = 10
valorprotese = 20

valorprot = valoraparelho + valorprotese

valorTotalfinal = 30
honorarioIntermediadora = ""
margem = ""&formatnumber((honorarioIntermediadora / (valorTotalfinal - valorprot))*100,2)&""
%>
<%=margem%>

Error:

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A000D)

Tipos incompatíveis: '[string: ""]'

/teste.asp, line 29

 

ou a variável honorarioIntermediadora, ou a valorTotalfinal ou a valorprot estão vindo vazias

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo sendo numeros o valor pode ser string tiozinhoconverta tudo para o tipo adequado de numerose for inteiro use CINT(numero) e de for decimal use o CDBL(numero)isso deve eliminar este erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá hadnet!

 

Sou desenvolvedor web e quero poder ajudar. Esse é meu primeiro post aqui.

 

Concordo com as colocações do nosso amigo Ted k'. Provavelmente está sendo retornado um valor vazio e causando esse erro. Quero dar como exemplo alguns casos onde tive problemas parecidos.

 

Por diversas vezes eu tive problemas com valores nulos retornados pelo banco de dados. Então eu usei uma função que existe no VB, mas não no ASP: a Nz(). Essa função pega qualquer valor e verifica se é nulo, e caso seja, retorna um outro valor informado por você. Ela me ajudou muito na hora de programar, e deu mais segurança contra erros nos meus scripts. Veja como é:

 

Function Nz(valor,retorno)   If (IsNull(valor)) Then Nz = retornoEnd FunctionResponse.Write Nz(RS("quantidade"),0)
É claro que essa função pode ser mais implementada, e no seu caso pode servir também pra substituir não só valores nulos, mas também os valores vazios. Como no exemplo que usei, eu recupero o valor do campo "quantidade", e se este não estiver preenchido no BD (ou seja, nulo), a função Nz retorna um valor zero.

 

Você poderia até tentar usar a função Replace, mas ela não funcionaria satisfatoriamente:

 

vazio = ""teste = Replace(vazio,"","Qualquer Coisa")Response.Write(teste)' Simula a tentativa de substituir um valor vazio "" por um texto. Isso não dá erro, mas também não retorna nada.
OU

 

nulo = Nullteste = Replace(nulo,Null,"Qualquer Coisa")response.write teste' Simula a tentativa de substituir um valor Nulo por um texto. Causa erro, pois Replace não pode receber valores nulos.
Veja que isto é somente um exemplo. Se pensar nas possibilidades de uso de tal recurso, verá que pode se aplicar em muitos casos. Mas isso fica por conta da sua imaginação...

 

Abraços!

 

Heber

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.