Foros del Web » Programando para Internet » ASP Clásico »

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

Estas en el tema de Error de Microsoft VBScript en tiempo de ejecución error '800a000d' en el foro de ASP Clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/09/2007, 10:45
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 3 meses
Puntos: 0
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>

Última edición por Cameron_2006; 05/09/2007 a las 03:32
  #2 (permalink)  
Antiguo 05/09/2007, 01:50
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 3 meses
Puntos: 0
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>

Última edición por Cameron_2006; 05/09/2007 a las 03:30
  #3 (permalink)  
Antiguo 05/09/2007, 04:35
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
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
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #4 (permalink)  
Antiguo 08/03/2010, 17:58
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Antigüedad: 16 años
Puntos: 0
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.
  #5 (permalink)  
Antiguo 08/03/2010, 19:26
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 3 meses
Puntos: 98
Respuesta: Error de Microsoft VBScript en tiempo de ejecución error '800a000d'

Seguramente 3 años después lo habrá resuelto
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




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