Hola, no se si esta pregunta va a quí o en el apartado de BBDD. La pongo aquí ya que es donde creo que encaja mejor.
Tengo una aplicación de carrito de compras. AL ir a insrtar el pedido, lo que hago es instertar primero el pedido en la tabla pedidos(IdPedido,Fecha, Estado, Direccion,Precio y Usuario). Una vez insertado, obtengo el IdPedido para insertar los artícuos en la tabla ArticulosPedido( IdPedido, IdArticulo,Cantdiad).
EL problema es que al trabajar en local, apuntando a la BBDD Mysql del hosting, eso sí, funciona todo perfecto, pero al subir el proyecto al hosting, falla la inserción de los artículos. Es como si no hubiese insertado el pedido antes de intentar obtener el id del pedido para insertar los artículos.
El caso es que no se como hacer para que pimero, inserte el pedido, y una vez que, seguro al 100% se haya insertado, proceder a insertar los artículos.
Os dejo el código:
Código vb:
Ver originalProtected Sub BotonConfirmarPedido_Click(ByVal sender As Object, ByVal e As System.EventArgs) 'Handles BotonConfirmarPedido.Click
Dim Id_Usuario As Integer
Dim Precio As Decimal
Dim DireccionEnvio As String
Dim cadenaconexion As String
Dim conexion As New MySqlConnection
' Lista comandos(InsercionPedidos, Direccion, Id_Pedido, InsercionPed_Art)
Dim comandopedido As New MySqlCommand
Dim comandopedido2 As New MySqlCommand
Dim comandopedido3 As New MySqlCommand
Dim comandopedido4 As New MySqlCommand
Dim OrdenSqlpedido As String
Dim OrdenSqlDirec As String
Dim OrdenSqlArtPed As String
Dim OrdenSqlIdPedido As String
Dim Cantidad As Integer
Dim Id_Articulo As Integer
Dim Id_Pedido As Integer
Id_Usuario = Session("IdUsuario")
Precio = Session("TotalCarro")
cadenaconexion = "sdasdasdasdasdasdasdasd"
conexion.ConnectionString = cadenaconexion
OrdenSqlpedido = "INSERT INTO pedidos(Fecha_Pedido,Estado_Pedido,Precio,Direccion_Envio,Usuario) VALUES (?Fecha,?Estado,?Precio,?Direc,?Usuario)"
OrdenSqlDirec = "SELECT Direccion FROM usuarios WHERE IdUsuario ='" & Id_Usuario & "'"
OrdenSqlIdPedido = "SELECT IdPedido FROM pedidos WHERE Usuario ='" & Id_Usuario & "' and Precio ='" & Precio & "'"
comandopedido.Connection = conexion
comandopedido.CommandType = CommandType.Text
comandopedido.CommandText = OrdenSqlpedido
comandopedido2.Connection = conexion
comandopedido2.CommandType = CommandType.Text
comandopedido2.CommandText = OrdenSqlDirec
comandopedido3.Connection = conexion
comandopedido3.CommandType = CommandType.Text
comandopedido3.CommandText = OrdenSqlIdPedido
Try
' Obtenemos la direccion del usuario
conexion.Open()
DireccionEnvio = comandopedido2.ExecuteScalar()
conexion.Close()
' Agregamos los parámetros
comandopedido.Parameters.Add(New MySqlParameter("?Fecha", MySqlDbType.Date, 10)).Value = System.DateTime.Today
comandopedido.Parameters.Add(New MySqlParameter("?Estado", MySqlDbType.VarChar, 10)).Value = "Recibido"
comandopedido.Parameters.Add(New MySqlParameter("?Precio", MySqlDbType.Decimal, 10)).Value = Precio
comandopedido.Parameters.Add(New MySqlParameter("?Direc", MySqlDbType.VarChar, 45)).Value = DireccionEnvio
comandopedido.Parameters.Add(New MySqlParameter("?Usuario", MySqlDbType.Int32, 10)).Value = Id_Usuario
' Insertamos el pedido en la tabla pedidos
conexion.Open()
comandopedido.ExecuteNonQuery()
conexion.Close()
conexion.Dispose()
Catch ex As Exception
Label1.Text = ex.Message
End Try
Try
'Procedemos a insertar los articulos del carro
'Obtenemos el Id del Pedido
conexion.Open()
Id_Pedido = comandopedido3.ExecuteScalar()
conexion.Close()
With GridViewValidar
For i As Integer = 0 To (GridViewValidar.Rows.Count - 1)
Cantidad = CInt(GridViewValidar.Rows(i).Cells(1).Text)
GridViewValidar.Columns(0).Visible = True
Id_Articulo = CInt(GridViewValidar.Rows(i).Cells(0).Text)
GridViewValidar.Columns(0).Visible = False
' Agregamos los parámetros
OrdenSqlArtPed = "INSERT INTO listaarticulos(RefPedido,RefArticulo,Cantidad) VALUES ('" & Id_Pedido & "','" & Id_Articulo & "' , '" & Cantidad & "'); Commit;"
' Creamos el comando
comandopedido4.Connection = conexion
comandopedido4.CommandType = CommandType.Text
comandopedido4.CommandText = OrdenSqlArtPed
'Ejecutamos la inserción de la tupla
conexion.Open()
comandopedido4.ExecuteNonQuery()
conexion.Close()
Next
End With
'Response.Redirect("CompraFinalizada.aspx")
Catch ex As Exception
Label1.Text = ex.Message
End Try
conexion.Close()
conexion.Dispose()
End Sub
Gracias por la ayuda ^^