• Sábado 21 de Diciembre de 2024, 11:07

Autor Tema:  Problema con carrito de compras  (Leído 5673 veces)

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Problema con carrito de compras
« en: Jueves 17 de Junio de 2010, 02:24 »
0
Buenos dias

estoy haciendo un carrito de compras con base de datos SQL Server 2005

nose como hacer para guardar los productos comprados en la pagina "productos.aspx" ,la misma contiene "lblnombre,lbldescripcion, y lblprecio"

me dijieron que lo mas recomendable es guardarla en una variable de session ,el tema es que nose como hacerla :S

y despues todas las compras se muestran en un gridview en la pagina "carrito.aspx" ,como puedo hacer para cargar esa variable y que me la muestre en el gridview? y despues mediante el boton guardar me guarde las ventas en una base de datos

 

Saludos

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Problema con carrito de compras
« Respuesta #1 en: Jueves 17 de Junio de 2010, 16:24 »
0
Primero que nada si tienes

"lblnombre,lbldescripcion, y lblprecio"

Lo mas recomendable antes de guardarlo en una variable de session seria guardarlo a la base de datos. Ya que es tu sistema seria mas seguro y rapido y ocuparia menos memoria en el servidor. Yo diria que lo gurdaras tambien por que asi lo extraes sin problemas en la pagina carrito.aspx y se vuelve mas facil la manipulacion de los datos.

Para guardarlo en la base de datos tienes que correr un insert

se puede hacer asi.

Código: vb.net
  1. variableSQL = "Insert into NombreDeLaTabla values (" & lblnombre.text & ", " & lbldescripcion.text & ", & precio & ")"
  2.  
  3.  
  4.  
Donde la variableSQL es un string.
Me imagiono que el nombre y la descripcion son strings y el precio es un int o real eso depende de tu sistema y las limitaciones que le quieras poner...
 Ahora bien puede ser una forma... la pregunta siguiente es ... que tipo de objeto vas a usar para ejecutar el string en la base de datos? un comando? o simplemente el objeto de conexion.

Ahora para guardar la variable como variable de session se hace asi..

Código: vb.net
  1. Session["nombre"]= lblnombre.text
  2.  
Esto basicamente pide espacio en la memoria del servidor y guarda el valor alli.


Avisame si ocupas mas ayuda aqui con gusto te ayudamos.

Carlos Co

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Problema con carrito de compras
« Respuesta #2 en: Jueves 17 de Junio de 2010, 17:54 »
0
hola :)

mira yo tengo una pagina de productos que mediante un dropdownlist recupero los datos que llenan las labels
lo que quiero hacer es guardar la compra mediante el boton btnguardar y luego en otra pagina llamada carrito.aspx me carge la variable ed session,me habian pasado este codigo que lo hice dentro de un global.asax

Código: vb.net
  1. Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
  2.         ' Código que se ejecuta cuando se inicia una nueva sesión
  3.         'Aquí se crea una tabla temporal para guardar los
  4.         'Datos del carrito
  5.         Dim dt As New DataTable
  6.         'Ahora se creará columnas para la tabla indicando nombre de la columna
  7.         'y tipo de dato
  8.         Dim dc0 As New DataColumn("Item", System.Type.GetType("System.Byte"))
  9.         Dim dc1 As New DataColumn("Codigo", System.Type.GetType("System.Int16"))
  10.         Dim dc2 As New DataColumn("Cantidad", System.Type.GetType("System.Int16"))
  11.         Dim dc3 As New DataColumn("Descripcion", System.Type.GetType("System.String"))
  12.         Dim dc4 As New DataColumn("Precio", System.Type.GetType("System.Decimal"))
  13.         Dim dc5 As New DataColumn("Valortotal", System.Type.GetType("System.Decimal"))
  14.         'Ahora se añadirá las colñumnas a la coleccion de columnas
  15.         'del datatable dt
  16.         dt.Columns.Add(dc0)
  17.         dt.Columns.Add(dc1)
  18.         dt.Columns.Add(dc2)
  19.         dt.Columns.Add(dc3)
  20.         dt.Columns.Add(dc4)
  21.         dt.Columns.Add(dc5)
  22.         dc2.DefaultValue = 1 'Asi se especifica un valor por defecto para
  23.         'esta columna
  24.         'Ahora se est{a almacenando en una variable session la tabla creada
  25.         'para acceder desde cualquier parte de la aplicación pero por cada usuario
  26.         'o sesión
  27.         dc5.Expression = "Cantidad * PrecioUnitario"
  28.         'Asi se especifica la expresión de una fórmula que opera campos de la
  29.         'tabla
  30.         'dc1.Unique = True 'Asi se indica que en la segunda columna no puede
  31.         'existir valores duplicados
  32.         Session("carrito") = dt
  33.  
  34.     End Sub
  35.  

lo guarde en el global.asax ,pero nose como usarla ,como es? cuando apreto el boton guardar de la pagina de productos ,guarda los datos en la variable de session? que codigo puedo usar? ,despues como cargo la variable para visualizarla en un gridview en la pagina "carrito.aspx"?
 en esta pagina se hace la venta final y guarda los datos en la base de datos

Muchas gracias por responderme :) te mande un mensaje privado pero nose si te habra llegado porque me dice q tengo los mensajes bloqueados :S
era para pedirte tu msn :)

Saludos desde Uruguay

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Problema con carrito de compras
« Respuesta #3 en: Jueves 17 de Junio de 2010, 20:05 »
0
Bueno debemos algo claro primero que nada..

Las variables de Aplicacion son las que se guardan en el global.asax no las sessiones.
Las Variables de session hay tres formas de trabajar o de abilitarlas.

La mas facil es dejar que el server se encarge de ellas (aun cuando hay tres formas de trabajar con ellas.)


Las sessiones guardan un espacion en la memoria del servidor y pertenecen al Name Space System.Web especificamente al objeto HttpContectxt.

bueno habiendo dicho eso... la forma de usar la session en tu caso seria que guardes la tabla en la variable de session.

y cuando la vas a usar... tienes que crear en la pagina carrito.aspx  una dataTable y pasar los datos de session a la tabla..

Asi:

Código: vb.net
  1. variableDataTable = (DataTable)Session["dt"]
  2.  



En otras palabras hay que hacer el cast de la variable de session creo que en VB se usa la funcion Ctype

Bueno... con respecto a mi MSN si me llego tu mensaje y te conteste.. espero que te llegue.
De todas formas no paso mucho tiempo en MSN...

Saludos y si necesitas mas ayuda me avisa...

Carlos Co.

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Problema con carrito de compras
« Respuesta #4 en: Jueves 17 de Junio de 2010, 20:46 »
0
fa la verdad que soy muy novato ,como tengo que hacer :S

gracias por todo :)
me llego el mail

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Problema con carrito de compras
« Respuesta #5 en: Jueves 17 de Junio de 2010, 22:22 »
0
Hice este pequeño codigo solo a modo de ejemplo.. espero te ayude..

 
Código: vb.net
  1.   Dim tabla As New DataTable
  2.  
  3.         tabla.Columns.Add("col1").Caption = "col1 esperemos"
  4.         tabla.Columns.Add("col2").Caption = "col2 y"
  5.         tabla.Columns.Add("col3").Caption = "col3 veamos"
  6.         tabla.Columns.Add("col4").Caption = "col4 funciona"
  7.         tabla.Columns.Add("col5").Caption = "col5 bien"
  8.  
  9.  
  10.         Dim col1 As New DataColumn("Columna1", System.Type.GetType("System.Decimal"))
  11.         tabla.Columns.Add(col1)
  12.  
  13.         Session("tablita") = tabla
  14.  
  15.  





Luego en el .aspx que va a manejar el dataGrid creas el objeto tabla otra vez y le asignas la session a la tabla


     
Código: vb.net
  1.   Dim tabla2 As New DataTable
  2.         tabla2 = Session("tablita")
  3.  
  4.         Dim col2 As New DataColumn("Columna1", System.Type.GetType("System.Decimal"))
  5.  
  6.           Response.Write(tabla2.Columns("col4").Caption)
  7.        
  8.  

Ya el resto es cosa de manupulacion de la tabla como tal.

Espero que te ayude.

Saludos.

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Problema con carrito de compras
« Respuesta #6 en: Viernes 18 de Junio de 2010, 02:58 »
0
Muchas gracias ,el primer codigo donde tengo q ponerlo?
y el segundo qe es en la pagina donde este el grid view ,pero el codigo va dentro del grid view? osea haciendole doble click?


mira yo lo estoy haciedno con un manual de carrito ,pero esta incompleto :S
y me dice que haga esto ,pero nose como seguir :S

Citar
Agregar un fichero de tipo Aplicación global
Dentro del fichero de aplicación global
   Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Código que se ejecuta cuando se inicia una nueva sesión
        'Aquí se crea una tabla temporal para guardar los
        'Datos del carrito
        Dim dt As New DataTable
        'Ahora se creará columnas para la tabla indicando nombre de la columna
        'y tipo de dato
        Dim dc0 As New DataColumn("Item", System.Type.GetType("System.Byte"))
        Dim dc1 As New DataColumn("Codigo", System.Type.GetType("System.Int16"))
        Dim dc2 As New DataColumn("Cantidad", System.Type.GetType("System.Int16"))
        Dim dc3 As New DataColumn("Descripcion", _
                    System.Type.GetType("System.String"))
        Dim dc4 As New DataColumn("PrecioUnitario", _
                    System.Type.GetType("System.Decimal"))
        Dim dc5 As New DataColumn("ValorBruto", _
                    System.Type.GetType("System.Decimal"))
        Dim dc6 As New DataColumn("PorcentajeDescuento", _
                    System.Type.GetType("System.Decimal"))
       
        Dim dc7 As New DataColumn("MontoDescuento", _
                    System.Type.GetType("System.Decimal"))
        Dim dc8 As New DataColumn("ValorNeto", _
                    System.Type.GetType("System.Decimal"))
       
        'Ahora se añadirá las colñumnas a la coleccion de columnas
        'del datatable dt
        dt.Columns.Add(dc0)
        dt.Columns.Add(dc1)
        dt.Columns.Add(dc2)
        dt.Columns.Add(dc3)
        dt.Columns.Add(dc4)
        dt.Columns.Add(dc5)
        dt.Columns.Add(dc6)
        dt.Columns.Add(dc7)
        dt.Columns.Add(dc8)
        dc2.DefaultValue = 1 'Asi se especifica un valor por defecto para
        'esta columna
        'Ahora se est{a almacenando en una variable session la tabla creada
        'para acceder desde cualquier parte de la aplicación pero por cada usuario
        'o sesión
        dc6.DefaultValue = 10
        dc5.Expression = "Cantidad * PrecioUnitario"
        dc7.Expression = "ValorBruto * PorcentajeDescuento/100"
        dc8.Expression = "ValorBruto - MontoDescuento"
        'Asi se especifica la expresión de una fórmula que opera campos de la
        'tabla
        'dc1.Unique = True 'Asi se indica que en la segunda columna no puede
        'existir valores duplicados
        Session("carrito") = dt
             

    End Sub

Formulario productos.- permite  visualizar y seleccionar desde una lista de productos para luego ser acumulado en un carrito de compras.
Formulario Carrito.- permite acumular toda la información recepcionada desde la página producto para luego  finalizar la compra del carrito



Saludos

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Problema con carrito de compras
« Respuesta #7 en: Lunes 21 de Junio de 2010, 15:25 »
0
Matias,

Espero que todavia tengas tiempo para el proyecto... Lamentablemente desde el viernes estube fuera y no tuve accesso a computadora...

en fin El primer ejemplo que te envie correspondo a la pagina donde optienes los valores antes de incluirlos en la tabla, creo que la pagina se llama productos.aspx.

El segundo ejemplo seria para la pagina "carrito.aspx". Para ese entonces ya tienes los valores en asignados en la variable de session y lo que tienes que hacer es extraerlos de esa variable y montarlos en el datagrid. Pero antes de pasarlos al dataGrid tienes que pasarlos de la variable de session a la Tabla y una vez en la tabla la misma se tiene que recorrer para pasar todos los valores al data grid.

Dime si todavia ocupas ayuda.

Saludos.

Carlos Cor.
Web Hosting, Design, Development & SEO at Crystaltech

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Problema con carrito de compras
« Respuesta #8 en: Martes 22 de Junio de 2010, 19:50 »
0
Cita de: "Carlos_Cor_CT"
Matias,

Espero que todavia tengas tiempo para el proyecto... Lamentablemente desde el viernes estube fuera y no tuve accesso a computadora...

en fin El primer ejemplo que te envie correspondo a la pagina donde optienes los valores antes de incluirlos en la tabla, creo que la pagina se llama productos.aspx.

El segundo ejemplo seria para la pagina "carrito.aspx". Para ese entonces ya tienes los valores en asignados en la variable de session y lo que tienes que hacer es extraerlos de esa variable y montarlos en el datagrid. Pero antes de pasarlos al dataGrid tienes que pasarlos de la variable de session a la Tabla y una vez en la tabla la misma se tiene que recorrer para pasar todos los valores al data grid.

Dime si todavia ocupas ayuda.

Saludos.

Carlos Cor.
Web Hosting, Design, Development & SEO at Crystaltech

Hola :) sisi ,el profe me dio 2 semanas mas :D
el primer ejemplo va en el evento load? o en el boton para agregar el producto al carrito?

en el segundo la misma pregunta :S donde tengo q ponerlo si en load o el boton

Citar
lo que tienes que hacer es extraerlos de esa variable y montarlos en el datagrid. Pero antes de pasarlos al dataGrid tienes que pasarlos de la variable de session a la Tabla y una vez en la tabla la misma se tiene que recorrer para pasar todos los valores al data grid.

como hago eso?

perdon mi ignorancia ,recien estoy empezando con asp.net :S
Saludos ,muchas gracias

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Problema con carrito de compras
« Respuesta #9 en: Miércoles 23 de Junio de 2010, 16:54 »
0
Matias,

Voy a tratar de sacar un rato ahora mas tarde para ayudarte... he estado un poco ocupado en el trabajo pero si puedo hoy... con mucho gusto...

Por el momento ve estudiando como se utiliza un DataTable "System.Data.DataTable"

y obviamente el dataGrid.

Saludos.

Carlos

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Problema con carrito de compras
« Respuesta #10 en: Jueves 24 de Junio de 2010, 16:06 »
0
Estaba viendo el codigo de
# Sub  Session_Start(ByVal sender As Object, ByVal e As EventArgs)


Y parece bien... obviamente hay que correrlo para ver si hace todo lo que tiene que hacer.

Ahora con lo que te habia enviado anteriormente.


   
Código: vb.net
  1.    Dim tabla2 As New  DataTable
  2.             tabla2 = Session("tablita")
  3.      
  4.             Dim col2 As New DataColumn("Columna1", System.Type.GetType("System.Decimal"))
  5.      
  6.               Response.Write(tabla2.Columns("col4").Caption)
  7.  

Eso tendrias que ponerlo en el load de la segunda pagina.

Y cuentame como te ha ido pasanlo lo que esta en la variable de session a la tabla? Y analizando la tabla, para verificar que los valores no esten repetidos.

Bueno Nos estamos hablando.

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Problema con carrito de compras
« Respuesta #11 en: Viernes 25 de Junio de 2010, 20:14 »
0
Gracias en cuanto tenga un ratolibre lo pruebo :D

una duda


Código: vb.net
  1.   Dim  tabla As New DataTable
  2.  
  3.  [b]       tabla.Columns.Add("col1").Caption = "col1 esperemos"
  4.         tabla.Columns.Add("col2").Caption = "col2 y"
  5.         tabla.Columns.Add("col3").Caption = "col3 veamos"
  6.         tabla.Columns.Add("col4").Caption = "col4 funciona"
  7.         tabla.Columns.Add("col5").Caption = "col5 bien"[/b]
  8.  
  9.  
  10.         Dim col1 As New DataColumn("Columna1", System.Type.GetType("System.Decimal"))
  11.         tabla.Columns.Add(col1)
  12.  
  13.         Session("tablita") = tabla
  14.  
  15.  
en ese codigo donde dice  .caption = "col1 esperemos"
que tengo que poner donde dice eso?

Saludos ,muchas gracias :D

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Problema con carrito de compras
« Respuesta #12 en: Lunes 28 de Junio de 2010, 19:33 »
0
hola ,mira no entendi mucho :S

estoy siguiendo el manual que tengo ,pero esta incompleto ,tengo este codigo

Citar
          Dim dt As New DataTable

        Dim dc0 As New DataColumn("Item", System.Type.GetType("System.Byte"))
        Dim dc1 As New DataColumn("Codigo", System.Type.GetType("System.Int16"))
        Dim dc2 As New DataColumn("Cantidad", System.Type.GetType("System.Int16"))
        Dim dc3 As New DataColumn("Descripcion", System.Type.GetType("System.String"))
        Dim dc4 As New DataColumn("PrecioUnitario", System.Type.GetType("System.Decimal"))
        Dim dc5 As New DataColumn("ValorBruto", System.Type.GetType("System.Decimal"))
        dt.Columns.Add(dc0)
        dt.Columns.Add(dc1)
        dt.Columns.Add(dc2)
        dt.Columns.Add(dc3)
        dt.Columns.Add(dc4)
        dt.Columns.Add(dc5)
        dc2.DefaultValue = 1

        dc0.Expression = "lblnombre"
        dc1.Expression = "lblcodigo"
        dc3.Expression = "lbldescripcion"
        dc4.Expression = "lblprecio"
        dc5.Expression = "lbltotal"

        dc1.Unique = True
        Session("carrito") = dt

   

que supuestamente va en la pagina productos.aspx ,nose que codigo usar para cargar los datos en la pagina carrito.aspx en un gridview :S es lo unico q me falta :/

Saludos

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Problema con carrito de compras
« Respuesta #13 en: Sábado 3 de Julio de 2010, 08:29 »
0
Tengo un problema enel boton de la pagina que guarda los datos del producto a esa variable del mensaje de arriba
nose que codigo usar para guardar los datos de unas labels a la variable ,saludos

Newtek

  • Miembro activo
  • **
  • Mensajes: 81
  • Nacionalidad: cr
    • Ver Perfil
    • http://www.newtekwebhosting.com.com?id=000231
Re: Problema con carrito de compras
« Respuesta #14 en: Miércoles 7 de Julio de 2010, 16:26 »
0
Hola...

Lamento contestar hasta ahora... pero aqui en USA fue un Fin de semana largo y estaba pasando tiempo con mi familia... bueno ya estoy de vuelta... cuentame pudistes resolver el problema del DataTable?

Dentro de los ejemplos que te mande estaba la forma de crear una columna y darle el nombre.

Bueno... veamos a ver si te puedo resolver todas las dudas de una sola vez.

Creas la tabla.

Citar
Dim tabla As New DataTable

Lluego creas las columnas de la tabla de esta forma

Citar
tabla.Columns.Add("Nombre de la Columna") -- esta linea puede repetirce la cantidad de veces que quieras de acuerdo a la cantidad de columnas que quieras meter dentro de la tabla. Este valor es solo como va a mostrar los valores en el nivel superior de la tabla eso es todo y tienen que estar en el mimo order en que van a ser introducidos los valores de las filas.

Ahora bien. Creas un objeto "Row" (Fila en Español)
Citar
Dim Fila As DataRow

Ahora tienes que llenar/Crear las Filas

Citar
Fila("Nombre de la fila")= "el valor que vas a meter en ese campo" /este puede ser lo que este almacenado en texto o en la devolucion de un query... o lo que sea

ahora... como relacionas las filas con la tabla. este seria un ejemplo de como hacerlo

Citar
tabla.rows.add(fila)

y eso es todo ya tienes las dos cosas ligadas. Recuerda las columnas y el nombre de las columnas es solo para la parte superior de la tabla y los rows / Filas tienen que ser creados en el mismo order que las columnas.

Avisame si tienes mas preguntas.

Con gusto te ayudo. solo teneme paciencia.. ;0)
 

Carlos Cor.
Web Hosting, Design, Development & SEO at Crystaltech

matias_pinar

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Problema con carrito de compras
« Respuesta #15 en: Miércoles 14 de Julio de 2010, 23:21 »
0
Perdon x la demora :S

Muchas gracias por todo!
ya entrege el proyecto y aprove! :D

Muchas gracias
Un abrazo