Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2010, 04:51
Eloytxo
 
Fecha de Ingreso: noviembre-2009
Mensajes: 44
Antigüedad: 15 años
Puntos: 0
Problema con varias sentencias SQL

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 original
  1. Protected Sub BotonConfirmarPedido_Click(ByVal sender As Object, ByVal e As System.EventArgs) 'Handles BotonConfirmarPedido.Click
  2.  
  3.         Dim Id_Usuario As Integer
  4.  
  5.         Dim Precio As Decimal
  6.         Dim DireccionEnvio As String
  7.  
  8.         Dim cadenaconexion As String
  9.         Dim conexion As New MySqlConnection
  10.         ' Lista comandos(InsercionPedidos, Direccion, Id_Pedido, InsercionPed_Art)
  11.        Dim comandopedido As New MySqlCommand
  12.         Dim comandopedido2 As New MySqlCommand
  13.         Dim comandopedido3 As New MySqlCommand
  14.         Dim comandopedido4 As New MySqlCommand
  15.  
  16.         Dim OrdenSqlpedido As String
  17.         Dim OrdenSqlDirec As String
  18.         Dim OrdenSqlArtPed As String
  19.         Dim OrdenSqlIdPedido As String
  20.  
  21.  
  22.         Dim Cantidad As Integer
  23.         Dim Id_Articulo As Integer
  24.         Dim Id_Pedido As Integer
  25.  
  26.  
  27.  
  28.  
  29.  
  30.         Id_Usuario = Session("IdUsuario")
  31.         Precio = Session("TotalCarro")
  32.  
  33.         cadenaconexion = "sdasdasdasdasdasdasdasd"
  34.         conexion.ConnectionString = cadenaconexion
  35.         OrdenSqlpedido = "INSERT INTO pedidos(Fecha_Pedido,Estado_Pedido,Precio,Direccion_Envio,Usuario) VALUES (?Fecha,?Estado,?Precio,?Direc,?Usuario)"
  36.         OrdenSqlDirec = "SELECT Direccion FROM usuarios WHERE IdUsuario ='" & Id_Usuario & "'"
  37.         OrdenSqlIdPedido = "SELECT IdPedido FROM pedidos WHERE Usuario ='" & Id_Usuario & "'  and Precio ='" & Precio & "'"
  38.  
  39.  
  40.  
  41.         comandopedido.Connection = conexion
  42.         comandopedido.CommandType = CommandType.Text
  43.         comandopedido.CommandText = OrdenSqlpedido
  44.  
  45.         comandopedido2.Connection = conexion
  46.         comandopedido2.CommandType = CommandType.Text
  47.         comandopedido2.CommandText = OrdenSqlDirec
  48.  
  49.         comandopedido3.Connection = conexion
  50.         comandopedido3.CommandType = CommandType.Text
  51.         comandopedido3.CommandText = OrdenSqlIdPedido
  52.  
  53.  
  54.  
  55.  
  56.         Try
  57.  
  58.             ' Obtenemos la direccion del usuario
  59.            conexion.Open()
  60.             DireccionEnvio = comandopedido2.ExecuteScalar()
  61.             conexion.Close()
  62.  
  63.             ' Agregamos los parámetros
  64.            comandopedido.Parameters.Add(New MySqlParameter("?Fecha", MySqlDbType.Date, 10)).Value = System.DateTime.Today
  65.             comandopedido.Parameters.Add(New MySqlParameter("?Estado", MySqlDbType.VarChar, 10)).Value = "Recibido"
  66.             comandopedido.Parameters.Add(New MySqlParameter("?Precio", MySqlDbType.Decimal, 10)).Value = Precio
  67.             comandopedido.Parameters.Add(New MySqlParameter("?Direc", MySqlDbType.VarChar, 45)).Value = DireccionEnvio
  68.             comandopedido.Parameters.Add(New MySqlParameter("?Usuario", MySqlDbType.Int32, 10)).Value = Id_Usuario
  69.  
  70.             ' Insertamos el pedido en la tabla pedidos
  71.            conexion.Open()
  72.             comandopedido.ExecuteNonQuery()
  73.             conexion.Close()
  74.             conexion.Dispose()
  75.  
  76.  
  77.         Catch ex As Exception
  78.             Label1.Text = ex.Message
  79.         End Try
  80.  
  81.         Try
  82.  
  83.             'Procedemos a insertar los articulos del carro
  84.  
  85.             'Obtenemos el Id del Pedido
  86.            conexion.Open()
  87.             Id_Pedido = comandopedido3.ExecuteScalar()
  88.             conexion.Close()
  89.  
  90.             With GridViewValidar
  91.  
  92.                 For i As Integer = 0 To (GridViewValidar.Rows.Count - 1)
  93.  
  94.                     Cantidad = CInt(GridViewValidar.Rows(i).Cells(1).Text)
  95.                     GridViewValidar.Columns(0).Visible = True
  96.  
  97.                     Id_Articulo = CInt(GridViewValidar.Rows(i).Cells(0).Text)
  98.                     GridViewValidar.Columns(0).Visible = False
  99.                     ' Agregamos los parámetros
  100.  
  101.                     OrdenSqlArtPed = "INSERT INTO listaarticulos(RefPedido,RefArticulo,Cantidad) VALUES ('" & Id_Pedido & "','" & Id_Articulo & "' , '" & Cantidad & "'); Commit;"
  102.                    
  103.  
  104.                     ' Creamos el comando
  105.                    comandopedido4.Connection = conexion
  106.                     comandopedido4.CommandType = CommandType.Text
  107.                     comandopedido4.CommandText = OrdenSqlArtPed
  108.  
  109.                     'Ejecutamos la inserción de la tupla
  110.                    conexion.Open()
  111.                     comandopedido4.ExecuteNonQuery()
  112.                     conexion.Close()
  113.  
  114.  
  115.                 Next
  116.             End With
  117.             'Response.Redirect("CompraFinalizada.aspx")
  118.        Catch ex As Exception
  119.             Label1.Text = ex.Message
  120.         End Try
  121.         conexion.Close()
  122.         conexion.Dispose()
  123.  
  124.     End Sub

Gracias por la ayuda ^^

Última edición por Eloytxo; 11/03/2010 a las 05:04