Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicius Ianni

[Resolvido] Variaveis me tirando o sono :O

Recommended Posts

Boa Tarde a Todos !

 

estou tentando multiplicar os valores contidos em 2 variaveis e exibir seu resultado.

Simples.

Mas estão dando este erro:

 

Microsoft VBScript runtime error '800a000d'

Type mismatch

 

/admin/confped.asp, line 85

a linha 85 é esta:

 

tot = desc*qteda

 

 

o contexto:

desc = Cint(rs2("precovenda"))

Session("qtad"&rs2("id")) = request.form("qtd"&rs2("id"))

qteda = Session("qtad"&rs2("id"))
tot = desc*qteda

 

Já coloquei o qteda com cint, tirei o cint do desc, alternei o cint, coloquei os 2 com cint e sempre o mesmo erro.

Onde estou errando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um teste simples

 

response.write vartype(qteda) & "<br>"

response.write vartype(desc)

 

me informe qual as respostas apresentadas.

 

O Método vartype retorna o tipo de variavel que voce esta usando..veja abaixo as respostas possiveis:

 

0 -> Empty (uninitialized)

1 -> Null (no valid data)

2 -> Integer

3 -> Long integer

4 -> Single-precision floating-point number

5 -> Double-precision floating-point number

6 -> Currency

7 -> Date

8 -> String

9 -> Automation object

10 -> Error

11 -> Boolean

12 -> Variant (used only with arrays of Variants)

13 -> A data-access object

17 -> Byte

8192 -> Array

 

Voce tera problemas com valores nulos, objetos e vários outros tipos diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!

 

Brigadao pela dica

 

deu

qteda = string

desc = integer

 

mas colocando cint no qteda dá este erro:

 

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'Cint'

 

/admin/confped.asp, line 85

Compartilhar este post


Link para o post
Compartilhar em outros sites

é por isso mesmo esta tentando multiplicar uma string com um numero do tipo integer

 

 

tem a certeza que o valor da session é um numero? se sim entao

 

teste

 

qteda = Cint(Session("qtad"&rs2("id"))) ou

 

tot = desc*Cint(qteda)

 

 

diga se resolveu

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz um teste udando o CINT

e foi certtinho...

CINT (nome da variavel ou expressão)

 

verifique se o rs2("precovenda")

 

esta setando como string no db

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se no db o rs2("precovenda") no banco por exemplo for numeric, float ou money pode ser que ele vem com PONTO ao inves de vírgula entao gerará esse erro de type mysmatch. Se estiver retornando com ponto faça um CAST ou CONVERT no seu banco pra NÃO RETORNAR como string....sendo que por exemplo no query analyzer mesmo sendo um numeric e voce fazendo um cast/convert, no banco ainda continuará visualizando com PONTO....mas faça o CAST e na aplicação use CDbl.

 

Garanto que irá funcionar se você fizer um cast no banco pra não retornar o rs2("precovenda") como string e sim como por exemplo INT, FLOAT, NUMERIC ou MONEY e fizer um Cdbl.

 

Teste e post o resultado pra vermos se agora resolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê um response.write nas duas variáveis e poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia !

 

Bom, fiz os testes que me indicaram, tive dificuldade em usar o cast e o convert (nunca usei essa instrução antes e o que achei pesquisando no forum é com datas e dá erro)

 

O formato do precovenda é decimal no bd (que é mysql)

 

Usando response.write nas variaveis elas retornam o valor esperado.

 

O que dá erro é quando quero multiplicar o precovenda pela quantidade que vem da página anterior.

 

Obrigado a todos que tem me ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido !! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Depois de muito quebrar a cabeça testando varios tipos de conversão, a solução foi muito simples:

 

Como ficou o código:

 

if rs("percdesc") <> 0 then
preco = CInt(rs2("precovenda"))
ftdc = rs3("perc")
ftdc1 = ftdc+1
desc = (preco*ftdc)
desc = desc/ftdc1
desc = FormatNumber(desc,2)
else
desc = rs2("precovenda")
desc = FormatNumber(desc,2)
end if

Session("prodnam"&rs2("id")) = request.form("prodname"&rs2("id"))
Session("qtad"&rs2("id")) = request.form("qtd"&rs2("id"))
Session("chek"&rs2("id")) = request.form("check"&rs2("id"))

if Session("chek"&rs2("id")) = "on" then
qteda = Session("qtad"&rs2("id"))
tot = desc*qteda
tot = FormatNumber(tot,2)
response.write "<tr><td align='left'>" &rs2("nome") &"</td><td align='center'>" & Session("qtad" &rs2("id")&"") &"</td><td align='center'>" & desc &"</td><td align='center'>" &tot&"</td></tr>"
end if
rs2.movenext
loop

O pulo do gato foi mover o qteda = Session("qtad"&rs2("id")) e tot = desc*qteda

para depois do if Session("chek"&rs2("id"))...

 

 

Simples né?

 

Muito obrigado a todos pelas dicas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, k resolveu, só uma dica,

se for exibir tipo moeda , você pode usar

o FormatCurrency, tb

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.