Foros del Web » Programación para mayores de 30 ;) » .NET »

carrito d compras asp.net

Estas en el tema de carrito d compras asp.net en el foro de .NET en Foros del Web. hola a todos estoy desarrollando un sitio web con asp.net y mysql, estoy tratando d hacer un carrito d compras con dos gridviews, eso ya ...
  #1 (permalink)  
Antiguo 04/07/2012, 12:39
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
carrito d compras asp.net

hola a todos

estoy desarrollando un sitio web con asp.net y mysql, estoy tratando d hacer un carrito d compras con dos gridviews, eso ya está, el problema es q cuando ya tengo todos los productos en el carrito, al presionar un botón para guardar en la bd, no hace nada solo recarga la página pero no guarda en la bd, lo hago con procedimientos almacendados, no se q estoy haciendo mal ya vi varios ejemplos en internet y no funciona, x favor alguien q me ayude, gracias
  #2 (permalink)  
Antiguo 04/07/2012, 13:58
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: carrito d compras asp.net

Hola thetemptation7, no podemos ver que estás haciendo mal mientras no publiques código... Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 05/07/2012, 17:08
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: carrito d compras asp.net

hola

aquí está el método con el q trato d insertar a la bd

Cita:
Protected Sub save()
Dim oCnn As New MySqlConnection
'Dim i As Integer = CInt(Membership.GetUser().ProviderUserKey)

oCnn.ConnectionString = System.Configuration.ConfigurationManager.Connecti onStrings("minegocioConnectionString").ConnectionS tring
oCnn.Open()

Try

Dim comando As MySqlCommand = New MySqlCommand
comando.CommandText = "select max(NotaId) from tbl_notas"
comando.Connection = oCnn

Dim inc As Integer
inc = comando.ExecuteScalar() + 1

Dim strSql As String = "insert into tbl_notas(NotaId,ClienteId,FechaHora) values ('" & inc & "', '" _
& DropDownList1.SelectedValue.ToString & "',now())"

Dim Comand As MySqlCommand = New MySqlCommand(strSql, oCnn)
Comand.ExecuteNonQuery()

Dim cor As Integer
Dim cmd2 As New MySqlCommand("select max(NotaId) from tbl_notas", oCnn)
cor = cmd2.ExecuteScalar()


Dim Consulta As String = "insert into tbl_detallenotas (NotaId,ProductoId,Producto,Precio,Cantidad,Total) values(" & _
" @NotaId, @ProductoId,@Producto,@Precio,@Cantidad,@Total)"

Dim Comando2 As MySqlCommand = New MySqlCommand(Consulta, oCnn)

For Each row As GridViewRow In GridView1.Rows

Comando2.Parameters.Clear()

Comando2.Parameters.AddWithValue("@NotaId", cor)
Comando2.Parameters.AddWithValue("@ProductoId", row.Cells(1).Text)
Comando2.Parameters.AddWithValue("@Producto", row.Cells(2).Text)
Comando2.Parameters.AddWithValue("@Precio", CDec(row.Cells(3).Text))
Comando2.Parameters.AddWithValue("@Cantidad", CInt(row.Cells(4).Text))
Comando2.Parameters.AddWithValue("@Total", CDec(row.Cells(5).Text))

Comando2.ExecuteNonQuery()
Next

MsgBox("Su venta ha sido aceptada con el número de pedido : " & cor, vbInformation, "Confirmación")
Catch ex As Exception
MsgBox(ex.Message)
Finally
oCnn.Close()
End Try
End Sub
con esto ahora me marca error, primero me decía q el valor d la cadena d entrada no es válida y después cuando trato d convertir a entero el campo Cantidad

gracias x responder
  #4 (permalink)  
Antiguo 05/07/2012, 17:34
 
Fecha de Ingreso: octubre-2011
Mensajes: 114
Antigüedad: 12 años, 5 meses
Puntos: 14
Respuesta: carrito d compras asp.net

Te falta un apostrofe para cerrar el valor de fecha( -now() ) en esta linea:

Dim strSql As String = "insert into tbl_notas(NotaId,ClienteId,FechaHora) values ('" & inc & "', '" _
& DropDownList1.SelectedValue.ToString & "',now())"

por ahora es lo que vi
  #5 (permalink)  
Antiguo 06/07/2012, 10:01
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: carrito d compras asp.net

lo siento no dije q en la tabla maestra (tbl_notas) si guarda datos en la q no guarda es en la detalle (tbl_detallenotas) me marca error, dice q es algo del formato, ya intenté d varias formas y sigue marcando error, seguiré investigando, gracias
  #6 (permalink)  
Antiguo 06/07/2012, 10:12
 
Fecha de Ingreso: octubre-2011
Mensajes: 114
Antigüedad: 12 años, 5 meses
Puntos: 14
Respuesta: carrito d compras asp.net

No manejo mucho ese tipo de código... yo creo que te beneficiaría más concatenar los valores en la variable consulta, que insertando los parámetros en la variable Comando2...

Intenta esto, probablemente solo te faltan los apóstrofes en el campo producto, a no ser que alguno de los otros no sea Int

Dim Consulta As String = "insert into tbl_detallenotas (NotaId,ProductoId,Producto,Precio,Cantidad,Total) values(" & _
" @NotaId, @ProductoId,'@Producto',@Precio,@Cantidad,@Total)" --Nota que @Producto está entre apóstrofes
  #7 (permalink)  
Antiguo 09/07/2012, 10:29
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: carrito d compras asp.net

ok lo intentaré d esa forma a ver q pasa gracias x responder
  #8 (permalink)  
Antiguo 09/07/2012, 11:28
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: carrito d compras asp.net

hola otra vez

ya lo intenté con los apóstrofes pero sigue con el mismo error

Incorrect decimal vlue: '$4.40' for column 'Precio' at row 1

no se q pueda ser, ya intenté convertirlo a decimal, double hasta string, pero no funciona, espero pronto dar con la solución, gracias x su tiempo
  #9 (permalink)  
Antiguo 09/07/2012, 11:37
 
Fecha de Ingreso: octubre-2011
Mensajes: 114
Antigüedad: 12 años, 5 meses
Puntos: 14
Respuesta: carrito d compras asp.net

Ya intentaste esto?

Código vb:
Ver original
  1. For Each row As GridViewRow In GridView1.Rows
  2.  
  3. Dim Consulta As String = "insert into tbl_detallenotas (NotaId,ProductoId,Producto,Precio,Cantidad,Total) values(" & cor & ", " & row.Cells(1).Text & ", " &  row.Cells(2).Text & ", " & CDec(row.Cells(3).Text) & ", " & CInt(row.Cells(4).Text) & ", " & CDec(row.Cells(5).Text) & ")"
  4.  
  5. Dim Comando2 As MySqlCommand = New MySqlCommand(Consulta, oCnn)
  6.  
  7. Comando2.ExecuteNonQuery()
  8. Next


que tipo de campo es 'Precio' en la base de datos?
  #10 (permalink)  
Antiguo 10/07/2012, 12:42
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
De acuerdo Respuesta: carrito d compras asp.net

hola AndyDroid

el campo precio es d tipo decimal

ya lo intenté así y ahora me muestra el siguiente error

La conversión de la cadena "" en el tipo 'Integer' no es válida

lo q veo es q no está tomando el valor del campo cantidad, te explico ...

tengo una página aspx llamada ListaArticulos donde muestro los productos en un gridview con las columnas ProductoId, Producto, Existencias, Precio de Venta, Cantidad, la columna cantidad es un templatefield con textbox donde el usuario puede indicar la cantidad d productos q va a comprar una vez indicados todos los productos hay un link para ver el carrito el cual redirecciona a otra página llamada CarritoCompra donde se muestran los productos elegidos x el usuario; es otro gridview con las columnas NotaId,ProductoId,Producto,Precio,Cantidad,Total, también un label donde muestro el total general d la venta y un botón guardar q es el q debería guardar en la bd, el carrito lo manejo con sesión

Cita:
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Código que se ejecuta cuando se inicia una nueva sesión
Dim dt As New DataTable
Dim dc0 As New DataColumn("NotaId", System.Type.GetType("System.Int32"))
Dim dc1 As New DataColumn("ProductoId", System.Type.GetType("System.Int32"))
Dim dc2 As New DataColumn("Producto", System.Type.GetType("System.String"))
Dim dc3 As New DataColumn("Precio", System.Type.GetType("System.Decimal"))
Dim dc4 As New DataColumn("Cantidad", System.Type.GetType("System.Int32"))
Dim dc5 As New DataColumn("Total", 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)

dc4.DefaultValue = 1
dc5.Expression = "Precio * Cantidad"
dc1.Unique = True
Session("Carrito") = dt
End Sub
este código está en el Global.asax

y como te decía creo q no está tomando el valor del campo 'Cantidad' o es lo q entiendo en el error q muestra, el problema es q no se como solucionarlo, bueno cualquier ayuda o sugerencia es bienvenida y gracias x responder
  #11 (permalink)  
Antiguo 10/07/2012, 12:49
 
Fecha de Ingreso: octubre-2011
Mensajes: 114
Antigüedad: 12 años, 5 meses
Puntos: 14
Respuesta: carrito d compras asp.net

Un consejo, comenta estas dos lineas
Código vb:
Ver original
  1. Dim Comando2 As MySqlCommand = New MySqlCommand(Consulta, oCnn)
  2.  
  3. Comando2.ExecuteNonQuery()
y ponte el valor de 'Consulta' en un nuevo label para que veas que es y como lo tratas de insertar... ese código que te dió llevalo a management de sql y verifica qué esta mal para corregirlo y se pueda ejecutar en tu página
  #12 (permalink)  
Antiguo 10/07/2012, 12:53
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
De acuerdo Respuesta: carrito d compras asp.net

ok lo haré y muchas gracias x tu tiempo
  #13 (permalink)  
Antiguo 10/07/2012, 14:08
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
De acuerdo Respuesta: carrito d compras asp.net

hola otra vez

les cuento q ya quedó

y les dejo el código x si alguien tiene el mismo problema

Cita:
Try

Dim comando As MySqlCommand = New MySqlCommand
comando.CommandText = "select max(NotaId) from tbl_notas"
comando.Connection = oCnn

Dim inc As Integer
inc = comando.ExecuteScalar() + 1

If DropDownList1.SelectedIndex = -1 Then
MsgBox("Debe seleccionar un cliente", vbInformation, "Aviso")
End If

Dim strSql As String = "insert into tbl_notas(NotaId,ClienteId,FechaHora) values ('" & inc & "', '" _
& DropDownList1.SelectedValue.ToString & "',now())"

Dim Comand As MySqlCommand = New MySqlCommand(strSql, oCnn)
Comand.ExecuteNonQuery()

Dim cor As Integer
Dim cmd2 As New MySqlCommand("select max(NotaId) from tbl_notas", oCnn)
cor = cmd2.ExecuteScalar()

For Each row As GridViewRow In GridView1.Rows

Dim Consulta As String = "insert into tbl_detallenotas (NotaId,ProductoId,Producto,Precio,Cantidad,Total) values('" & cor & "','" & row.Cells(1).Text & "','" & row.Cells(2).Text & "','" & CDec(row.Cells(3).Text) & "','" & CInt(row.Cells(4).Text) & "','" & CDec(row.Cells(5).Text) & "')"

Dim Comando2 As MySqlCommand = New MySqlCommand(Consulta, oCnn)

Comando2.ExecuteNonQuery()
Next


MsgBox("Su venta ha sido aceptada Generándose el número de nota : " & cor, vbInformation, "Confirmación")
Catch ex As Exception
MsgBox(ex.Message)
Finally
oCnn.Close()
End Try
en el insert se debe concatenar entre apóstrofes y comillas si no marcarcará error y oCnn es donde tengo la cadena d conexión obviamente tendrán q colocar la suya según sea el caso, y lo d q no tomaba el valor del campo cantidad era xq en el grid d la página CarritoCompra.aspx lo tenía como templatefield con el textbox, solo lo cambié x boundfield y listo con eso ya tomó el valor

nuevamente gracias x tomarse el tiempo para responder

Etiquetas: carrito, compras, net, sql
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.
Respuesta




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