Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   Error de Microsoft VBScript en tiempo de ejecución error '800a000d' (http://www.forosdelweb.com/f15/error-microsoft-vbscript-tiempo-ejecucion-error-800a000d-516739/)

Cameron_2006 04/09/2007 10:45

Error de Microsoft VBScript en tiempo de ejecución error '800a000d'
 
Buenas tardes,

me salió el siguiente error, al solicitar el detalle de los productos (código de tienda virtual).

Error de Microsoft VBScript en tiempo de ejecución error '800a000d'

No coinciden los tipos: 'URLEncode'

/carrito/Productos/detalle_producto.asp, línea 49



La línea 49, en mi código dice así:

Ruta="secciones.asp?cod_categoria="&Server.URLEnco de(tabla("COD_CATEGORIA"))

Agradezco de antemano la ayuda a este problema.:-) igual a continuación paso el códgo completo para que lo entiendan mejor:


Dim Base 'Objeto de conección a la base de datos
Dim tabla 'Objeto recordset para realizar consultas
Dim SQL 'String para crear la consulta SQL
Dim cod_producto 'Codigo del producto que estamos mostrando
Dim cont 'Nombre de la categoria en la que estamos
Dim Ruta 'Auxiliar para almacenar la Ruta

cod_producto = Request.QueryString ("COD_PRODUCTO")
%>
<html xmlns="http://www.w3.org/1999/xhtml">

<%
'########## COMENZAMOS A LLENAR CABECERA
%>

<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>DETALLE PRODUCTOS</title>
</head>

<%'########## COMENZAMOS A LLENAR EL CUERPO
%>
<body>

<div>
<p align="center"><a href="../index.asp" target="_self">Home </a></p>
<p align="right"> <a href="../compra/cesta.asp" target="_self">Ver Cesta</a> </p>
</div>


<%
'####### ABRO LA CONEXION A LAS BASES DE DATOS

Set Base = Server.CreateObject("ADODB.Connection")
Set tabla =Server.CreateObject("ADODB.RecordSet")
Base.Open = "servidor.tienda"
SQL ="Select PRODUCTO, productos.DESCRIPCION, PRECIO, SECCION, "&"secciones.COD_SECCION, CATEGORIA, "&" categorias.COD_CATEGORIA FROM (productos INNER JOIN "&" secciones ON productos.COD_SECCION = "&" secciones.COD_SECCION) INNER JOIN categorias ON "&" secciones.COD_CATEGORIA=categorias.COD_CATEGORIA "&" WHERE COD_PRODUCTO='"&cod_producto &"'"
Tabla.Open SQL, Base, 3, 3

Ruta="secciones.asp?cod_categoria="&Server.URLEnco de(tabla("COD_CATEGORIA"))
%>

<H2>
<A HREF="<%=Ruta%>">
<%=tabla("CATEGORIA")%></A>
-
<A HREF="productos.asp?cod_seccion=<%=tabla("COD_SECC ION")%>" >
<%=tabla("SECCION")%></A>
</H2>

<%
'### SI EL USUARIO LO DESEA DESPUES DE VISTO O COMPRADO EL ARTICULO, PUEDE VOLVER A BUSCAR O VOLVER AL LISTADO ###########
'%>


<BLOCKQUOTE>
<H4>
<A HREF="javascript:history.back()">
<%
if InStr(LCase(Request.ServerVariables ("HTTP_REFERER")), "busqueda.asp") > 0 THEN %>
Volver a la busqueda
<%else%>
Volver al listado
<%end if%>
</A>
</H4>
</BLOCKQUOTE>


<%
'### MOSTRAMOS EL PRODUCTO SELECCIONADO POR EL USUARIO PUEDE COMPRAR Y COLOCAR LA UNIDADES QUE QUIERE ################################
%>


<center>
<h1><%=tabla("PRODUCTO")%></h1>
<h2><%=formatNumber(tabla("PRECIO"),0)%>&nbsp;&eur o;</h2>
<h3><%=tabla("DESCRIPCION")%></h3>
<br />

<%
tabla.close
Base.Close
Set tabla =Nothing
Set Base = Nothing

Ruta="'../compra/comprar.asp?cod_producto="& Server.URLEncode (cod_producto)& "&Unidades=' + Unidades.value"%>
<%
'######### SE CREA EL BOTON PARA QUE EL CLIENTE EFECTUE LA COMPRA ############################
'########## PUEDE COMPRAR Y COLOCAR LA UNIDADES QUE QUIERE
%>

<INPUT TYPE="Button" VALUE="Comprar"
onClick="window.open(<%=Ruta%>,'',
'width=350, height=300, toolbar=0, srollbars=0')" />
<select id="Unidades">
<% for Cont = 1 to 5 %>
<option value="<%=Cont%>"><%=Cont%></option>
<%next%>
</select>
Unidades
</center>

</body>
</html>

Cameron_2006 05/09/2007 01:50

Re: Error de Microsoft VBScript en tiempo de ejecución error '800a000d'
 
Sigo con el problema....-S.

Siento las molestias, pero igual sigo en el proceso y me ha dado el mismo error '800a000d' en otra página, cuando llega el momento de comprar el artículo, en la que selecciono la cantidad de productos y hago click en comprar.

Me da el mismo error, en la línea 78:

Error de Microsoft VBScript en tiempo de ejecución error '800a000d'

No coinciden los tipos

/carrito/compra/comprar.asp, línea 78


Linea 78:

<%=FormatNumber(Precio * Unidades, 0) %>
en la base de datos, estos campos son numéricos.


El código completo es como sigue:

<%
Dim cod_producto 'Codigo del producto que estamos mostrando
Dim unidades 'unidades que se comprará del producto


<body>
<%
if request.form="" then

Dim Base 'Objeto de conección a la base de datos
Dim tabla 'Objeto recordset para realizar consultas
Dim SQL 'String para crear la consulta SQL
Dim precio 'precio del producto
Dim producto 'nombre del producto

cod_producto = Request.QueryString ("cod_producto")
unidades = CInt(Request.QueryString ("Unidades"))


Set Base = Server.CreateObject("ADODB.Connection")
Set tabla =Server.CreateObject("ADODB.RecordSet")
Base.Open = "servidor.tienda"
SQL ="Select PRECIO, PRODUCTO FROM productos where COD_PRODUCTO='"&cod_producto&"'"
Tabla.Open SQL, Base, 3, 3

precio = tabla ("precio")
producto = tabla ("producto")

tabla.close
Base.Close
Set tabla =Nothing
Set Base = Nothing


%>
<center>
¿Está seguro de que desea añadir el siguiente producto a su cesta de la compra?<br /><br />
<table align="center" cellpadding="2" cellspacing="1" border="1">
<tr>
<th scope="col">Unidades</th>
<th scope="col"><div align="right"><%=unidades%></div></th>
</tr>
<tr>
<th scope="row">Producto</th>
<td><div align="right"><%=producto%></div></td>
</tr>
<tr>
<th scope="row">Precio</th>
<td><div align="right"><%=precio%></div></td>
</tr>
<tr>
<th scope="row">Total</th>
<td><div align="right"><%=FormatNumber(Precio * Unidades, 0) %> &euro;</div></td>
</tr>
</table>

<p>&nbsp;</p>
<form method="post" action="comprar.asp">
<input type="hidden" name="cod_producto" value="<%=cod_producto%>" >
<input type="hidden" name="Unidades" value="<%=Unidades%>" >
<input type="submit" value="Comprar" >
<input type="Button" value="Cancelar" onClick="window.close()" />
</form>
</center>
<%
else

cod_producto = Request.form ("cod_producto")
unidades = CInt(Request.form ("Unidades"))

if Request.Cookies("Compra") (cod_producto) = "" then
response.Cookies ("Compra") (cod_producto) = Unidades

else

response.Cookies ("Compra") (cod_producto) = request.Cookies ("Compra") (cod_producto) + Unidades

end if
%>

<script language="javascript">
<!--
alert ('El producto ha sido añadido a su cesta de la compra')
window.close()
//-->
</script>

<%
end if
%>

</body>
</html>

tammander 05/09/2007 04:35

Re: Error de Microsoft VBScript en tiempo de ejecución error '800a000d'
 
El error que te da es que no coinciden los tipos. Es decir, que o bien la variable Precio es nulo o esta vacio, o bien la variable Unidades le pasa lo mismo; o ambas :-)

Para solucionar eso puedes hacerlo de tres formas:

- Modificando la estructura de la base de datos y asignando a los campos implicados valores por defecto a cero.
- Modificando la sentencia SQL para que o bien te devuelva los datos o te devuelva cero en caso de que sean nulos.
- interponer una funcion que haga lo mismo.

Yo uso esta funcion para comprobar si los datos vienen vacios o nulos

Código:

' Chequea si la variable esta vacia (sea del tipo que sea)
Public Function IsBlank(byref TempVar)
    dim tmpType
    IsBlank = False
    select case VarType(TempVar)
        case 0, 1 '--- Empty & Null
            IsBlank = True
        case 8 '--- String
            if Len(TempVar) = 0 then
                IsBlank = True
            end if
        case 9 '--- Object
            tmpType = TypeName(TempVar)
            If (tmpType = "Nothing") Or (tmpType = "Empty") Then
                IsBlank = True
            End If
        case 8192, 8204, 8209 '--- Array
            if UBound(TempVar) = -1 then
                IsBlank = True
            end if
    end select
End Function

con lo que esto:

<%=FormatNumber(Precio * Unidades, 0) %>

quedaria asi:

<%
if isBlank(Precio) then Precio = 0
if isBlank(Unidades) then Unidades = 0

FormatNumber(Precio * Unidades, 0)
%>

Para las otras opciones, hay respuestas en el foro :-)




Un saludo

Libardo 08/03/2010 16:58

Respuesta: Re: Error de Microsoft VBScript en tiempo de ejecución error '800a000d'
 
Cordial Saludo.
Yo tenía el mismo problema pero solo cuando navegaba con el Google Crome, navegué con el Internet Explorer y se solucionó el problema.
Espero haberle ayudado.

u_goldman 08/03/2010 18:26

Respuesta: Error de Microsoft VBScript en tiempo de ejecución error '800a000d'
 
Seguramente 3 años después lo habrá resuelto :-D


La zona horaria es GMT -6. Ahora son las 11:32.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2014, Jelsoft Enterprises Ltd.

SEO by vBSEO 3.3.2