Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ADO
 Carro de la Compra con Neptuno.mdb
 Foro Bloqueado  Tema Bloqueado


Autor Temas
Vicente
Starting Member

España
25 Posts
Mensajes - 09 Apr 2002 :  03:54:57  Ver Perfil  Enviar Email
...Buenas, necesito que alguien me diga que tengo que modificar del siguiente codigo Shop.asp para que me funcione con la Base de DAtos NEPTUNO.mdb.

Lo unico que quiero que me salga es:
** el nombre del producto
** el nombre del proveedor
** el precio por unidad

Yo he probado y me da varios errores de objetos no encontrados.

Gracias por anticipado....

<%@LANGUAGE="VBSCRIPT"%>
<%Option Explicit%>
<%Response.Buffer=True%>
<%
Sub MostrarCatalogo
' Muestra el catálogo con enlaces para ir comprando

Dim oRs, oRs2, SQL ' Uso 2 recordset
Dim idmarca ' IdMarca en Productos

' Conexión sin DSN a la base de datos

set oRs=Server.CreateObject("ADODB.Recordset")
set oRs2=Server.CreateObject("ADODB.Recordset")

SQL="SELECT * FROM Productos;"

oRs.Open SQL, oConn

'Dibujo la tabla
%>
<TABLE BORDER=1 CELLSPACING="1" CELLPADDING="1">
<TR>
<TD><B>Marca</B></TD>
<TD><B>Producto</B></TD>
<TD><B>Precio</B></TD>
<TD></TD>

<%
do until oRs.EOF
idmarca=oRs.Fields("Marca")

' Tengo que sacar el nombre y la URL de la marca
SQL="SELECT * FROM Marcas WHERE IdMarca="&idmarca&";"
oRs2.Open SQL, oConn

' Cuidado con los dos recordset ahora:
' oRs2 tiene la marca
' oRs tiene el producto
%>
<TR>
<TD><A HREF="<%=oRs2.Fields("URL")%>"><%=oRs2.Fields("Nombre")%></A>&nbsp;</TD>
<TD><%=oRs.Fields("Nombre")%>&nbsp;</TD>
<TD><%=oRs.Fields("Precio")%>&nbsp;</TD>
<TD><A HREF="shop.asp?ac=meter&prod=<%=oRs.Fields("IdProducto")%>">Comprar</A></TD>
</TR>
<%
'Limpio oRs2
oRs2.Close
oRs.MoveNext
loop

'Termino la tabla
%>
</TABLE>
<%
oRs.Close
set oRs=nothing
set oRs2=nothing
' Pinto opciones
%>
<center><A HREF=shop.asp?ac=ver>Ver Carrito</A></center>

<%
End Sub
'----------------------------------------------------------

Sub MostrarCarrito
' Muestra el contenido del carrito de la compra
' En este ejemplo los gastos de envío los declaro aquí como constante.
' En un caso real deberían traerse de base de datos y llenar un combo por ejemplo

' carrito es la variable global que referencia al carrito

Dim oRs, oRs2, SQL

Dim clave

Dim gastos ' Gastos de envio
Dim total, subtotal

gastos=2500 ' Para todo el mundo! :)
total=0
subtotal=0

' Conexión sin DSN a la base de datos
' Debería haber sacado estas líneas a un sub y llamarlo, pero en fin :(

set oRs=Server.CreateObject("ADODB.Recordset")


'Pinto la tabla


%>
<TABLE BORDER="1" CELLPADDING="1" CELLSPACING="1">
<TR>
<TD>Artículo</TD>
<TD>Cantidad</TD>
<TD>Precio/unidad</TD>
<TD>Quitar del carrito</TD>
<TD>Total</TD>
</TR>
<%
For Each clave in carrito
subtotal=0 ' Total de cada artículo en el carrito
'Pinto la línea de este producto
SQL="SELECT * FROM Productos WHERE IdProducto="&clave&";"
set oRs=oConn.Execute(SQL)

%>
<TR>

<TD><%=oRs.Fields("Nombre")%>&nbsp;</TD>
<TD><%=carrito(clave)%>&nbsp;</TD>
<TD><%=oRs.Fields("Precio")%>&nbsp;</TD>
<TD><A HREF="shop.asp?ac=sacar&prod=<%=clave%>&cant=1">Quitar Uno</A>
<A HREF="shop.asp?ac=sacar&prod=<%=clave%>&cant=<%=carrito(clave)%>">Quitar Todos</A>
</TD>
<%
' Multiplico el precio por la cantidad. FormatNumber me asegura que es un nº válido
' y convierto todo a tipo Single con CSng.
subtotal=CSng(FormatNumber(carrito(clave))*oRs.Fields("Precio"))
total=total+subtotal
%>
<TD><%= subtotal %>&nbsp;</TD>
</TR>
<%
Next

if carrito.Count > 0 then
oRs.Close
set oRs=nothing
end if

'Pinto el final de la tabla

%>
<TR>
<TD COLSPAN=4>Gastos de envío</TD>
<TD>
<%
if total=0 then
Response.Write("0") ' Sin compra no hay gastos de envío
else
Response.Write(gastos)
end if
%> &nbsp;</TD>
<TR>
<TD COLSPAN=4><B>Total:</B></TD>
<TD>
<%if total=0 then
Response.Write("0")
else
Response.Write(total+gastos)
end if
%> &nbsp;</TD>
</TABLE>
<%
' Pinto los enlaces
' si no he llamado desde PasarPorCaja
if accion<>"fin" then
%>
<center>
<A HREF=shop.asp>Seguir mirando</A> / <A HREF=shop.asp?ac=fin>Pasar por caja</A>
</center>
<%
end if
End Sub
'----------------------------------------------------------

Sub MeterArticulo (id)
' Añade el producto id al carrito de la compra
' En un caso real se deberían poder añadir más de una unidad
' bien desde el catálogo, bien editando en el carrito

' Si ya tengo el artículo en el carrito sumo 1 a la cantidad
if carrito.Exists(id) then
carrito(id)=carrito(id)+1
else
' Si no lo añado
carrito.Add id, 1
end if
Response.Write("Se ha añadido el artículo al carrito<br>")
End Sub

Sub SacarArticulo (id, cantidad)
' Saca un numero "cantidad" de articulos "id" del carrito
if not carrito.Exists(id) then
Response.Write("¡No tienes eso en tu carrito!")
else
if cantidad>1 then
'Quito todos así que quito ese articulo del carrito
carrito.Remove(id)
else
'Quito uno
carrito(id)=carrito(id)-1
if carrito(id)<1 then
carrito.Remove(id)
end if
end if
end if

End Sub

Sub PasarPorCaja
'-----------------------------------------------
' En este punto del script es donde debería ir
' todo lo relacionado con el pago, etc.
' Se podría por ejemplo escribir el pedido en un fichero
' de texto y añadirlo a una tabla de pedidos en la base de datos
' o bien enviar los detalles por email a una dirección.
' ¡Es tu decisión!
' Para el ejemplo, simplemente se lista el carrito una vez más
' y se muestra un mensaje de agradecimiento
%>
<H2>¡Gracias por comprar!</H2>
<%
MostrarCarrito
%>
En breve te llegarán a tu casa los productos. Gracias por
comprar en ASPFácil.
<br>
(En un caso real aquí pediríamos los datos, etc.)
<%
' Para el ejemplo, aquí libero la variable de sesión
set Session("carrito")=nothing
End Sub


'---------------------------------
' Programa "principal"
'---------------------------------
Dim carrito
Dim accion
Dim producto
Dim cant
Dim oConn


set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\midideda\tienda.mdb")

' Si no existe el carrito lo creo
' si existe lo referencio

if isobject(Session("carrito")) then
set carrito=Session("carrito")
else
set carrito=Server.CreateObject("Scripting.Dictionary")
end if

accion=CStr(Request.QueryString("ac")) 'Paso el parámetro a cadena
producto=CInt(Request.QueryString("prod")) 'Paso el parámetro cant a número entero
cant=CInt(Request.QueryString("cant")) 'Paso el parámetro cant a número entero

Select Case accion

Case "ver"
'Muestro el carrito
MostrarCarrito

Case "meter"
'Añado articulo al carrito
MeterArticulo producto
MostrarCarrito

Case "sacar"
' Quito el numero 'cant' de articulos 'producto' del carrito
call SacarArticulo (producto, cant)
MostrarCarrito

Case "fin"
' Muestro las compras y termino
PasarPorCaja

Case else
'Muestro el catálogo
MostrarCatalogo

End Select

set Session("carrito")=carrito
oConn.Close
set oConn=nothing

%>

Vicente

nubeazul
Moderator


814 Posts
Posted - 15 Apr 2002 :  11:00:29  Ver perfil  Enviar e-mail  Visit nubeazul's Homepage
Tu problema es que nunca haces la conexio a la base de datos.
Mira aqui como lo puedes hacer:
http://www.asptutor.com/asp/vart.asp?id=51

Inicio Pagina

   
 Foro Bloqueado  Tema Bloqueado
Ir a:
Los Foros de ASPTutor.com Los Foros de ASPTutor.com
Ir al principio de la Página

 Imprimir Tema
 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar