Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Update con INNER JOIN en vb.net y mysql

Estas en el tema de Update con INNER JOIN en vb.net y mysql en el foro de Mysql en Foros del Web. Hola a todos en estos momentos estoy desarrollando un sistema en el cual se me esta presentando problemas a la hora de actualizar un registro ...
  #1 (permalink)  
Antiguo 29/01/2013, 11:14
 
Fecha de Ingreso: noviembre-2012
Ubicación: caracas
Mensajes: 53
Antigüedad: 12 años
Puntos: 0
Update con INNER JOIN en vb.net y mysql

Hola a todos en estos momentos estoy desarrollando un sistema en el cual se me esta presentando problemas a la hora de actualizar un registro en la base de datos a traves del formulario del vb ya que me tira el error : ¡Fatal error encountered durin command execution! y no se el porque ya que hago las pruebas directamente en el sql y si me actualiza.

A continuacion el codigo:

Código vb:
Ver original
  1. Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click
  2.         If btnActualizar.Visible = True Then
  3.             btnActualizar.Visible = False
  4.             ' Habilitar los textbox
  5.            fHabilitar_textbox(False)
  6.             ' Mostrar los botones
  7.            'fBotones(True)
  8.            ' Mostrar el boton Cancelar
  9.            btnCancelar.Visible = False
  10.  
  11.             Dim cn As New MySqlConnection(frmConexion.ConexionMySQL)
  12.             cn.Open()
  13.  
  14.             Try
  15.                 Dim sqlA As String = "UPDATE detalle " & _
  16.                                     "INNER JOIN ordenantes ON detalle.id_ordenante = ordenantes.id_ordenante" & _
  17.                                     "INNER JOIN productos ON detalle.id_producto = productos.id_producto" & _
  18.                                     "INNER JOIN proveedores ON detalle.id_proveedor = proveedores.id_proveedor" & _
  19.                                     "INNER JOIN tipo_inst ON detalle.id_tipo = tipo_inst.id_tipo" & _
  20.                                     "SET detalle.nro = @no, detalle.fecha = @fechao, detalle.boaimp = @boaimp," & _
  21.                                     "detalle.boaexp = @boaexp, detalle.nroinst = @noinstrumento, detalle.aad = @aad," & _
  22.                                     "detalle.unidadcuenta = @unidadcuenta, detalle.montosucre = @montoucre," & _
  23.                                     "detalle.montousd = @montousd, detalle.paisimp = @paisimp," & _
  24.                                     "detalle.paisexp = @paisexp, ordenantes.nombre_ordenante = @ordenante," & _
  25.                                     "productos.cod_arancelario = @codarancelario, proveedores.nombre_proveedor = @beneficiario," & _
  26.                                     "proveedores.nrocuenta = @nocuentacliente, tipo_inst.nombre_tipoinst = @tipoinstrumento" & _
  27.                                     "WHERE detalle.nroref = @noref "
  28.  
  29.                 'Se toman los 2 valores despues de la cuarta letra del boaimport
  30.                Dim iCadena As String = txtBOAI.Text
  31.                 Dim isSubCadena As String = iCadena.Substring(4, 2)
  32.                 'Se toman los 2 valores despues de la cuarta letra del boaexport
  33.                Dim eCadena As String = txtBOAE.Text
  34.                 Dim esSubCadena As String = eCadena.Substring(4, 2)
  35.                 'Se declara como decimal este campo
  36.                Dim valor As Decimal = txtUnidadcuenta.Text
  37.                 Dim valor2 As Decimal = txtMonto.Text
  38.                 Dim valor3 As Decimal = txtMontousd.Text
  39.  
  40.                 Dim cmd = New MySqlCommand(sqlA, cn)
  41.                 cmd.Parameters.AddWithValue("@noref", txtReferencia.Text)
  42.                 cmd.Parameters.AddWithValue("@no", txtNo.Text)
  43.                 cmd.Parameters.AddWithValue("@fechao", dtpicker1.Value.ToString("yyyy-MM-dd"))
  44.                 cmd.Parameters.AddWithValue("@codarancelario", txtCodArancelario.Text)
  45.                 cmd.Parameters.AddWithValue("@unidadcuenta", valor)
  46.                 cmd.Parameters.AddWithValue("@monto", valor2)
  47.                 cmd.Parameters.AddWithValue("@montousd", valor3)
  48.                 cmd.Parameters.AddWithValue("@boaimp", txtBOAI.Text)
  49.                 cmd.Parameters.AddWithValue("@boaexp", txtBOAE.Text)
  50.                 cmd.Parameters.AddWithValue("@paisimp", isSubCadena)
  51.                 cmd.Parameters.AddWithValue("@paisexp", esSubCadena)
  52.                 cmd.Parameters.AddWithValue("@beneficiario", txtBeneficiario.Text)
  53.                 cmd.Parameters.AddWithValue("@nocuentacliente", txtNocuenta.Text)
  54.                 cmd.Parameters.AddWithValue("@ordenante", txtOrdenante.Text)
  55.                 cmd.Parameters.AddWithValue("@noinstrumento", txtNoinst.Text)
  56.                 cmd.Parameters.AddWithValue("@tipoinstrumento", txtTipoinst.Text)
  57.                 cmd.Parameters.AddWithValue("@aad", txtAAD.Text)
  58.                 'Ejecutar instruccion sql Update
  59.                cmd.ExecuteNonQuery()
  60.  
  61.                 ' Se crean los comandos para el SQL
  62.                cmdActualizado = New MySqlCommand()
  63.                 cmdActualizado.Connection = cn
  64.                 cmdActualizado.CommandText = sSqlOperaciones
  65.                 cmdActualizado.CommandType = CommandType.Text
  66.                 ActualizaSQL = cmdActualizado.ExecuteReader()
  67.                 ActualizaSQL.Read()
  68.                
  69.  
  70.  
  71.                     MessageBox.Show("Registro actualizado en la tabla!!!")
  72.                     fLimpiar_textbox()
  73.  
  74.                 ActualizaSQL.Close()
  75.  
  76.             Catch ex As Exception
  77.                 MessageBox.Show("Error en la Actualización!!!  " & Environment.NewLine & ex.Message.ToString)
  78.                 Me.Visible = False
  79.                 frmMenu.Show()
  80.             End Try
  81.  
  82.         End If
  83.         fCancelar()
  84.     End Sub
  #2 (permalink)  
Antiguo 30/01/2013, 07:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Update con INNER JOIN en vb.net y mysql

Si estas lienes las imprimes como un string

Código vb:
Ver original
  1. "INNER JOIN ordenantes ON detalle.id_ordenante = ordenantes.id_ordenante" & _
  2.                                     "INNER JOIN productos ON detalle.id_producto = productos.id_producto" & _
  3.                                     "INNER JOIN proveedores ON detalle.id_proveedor = proveedores.id_proveedor" & _
  4.                                     "INNER JOIN tipo_inst ON detalle.id_tipo = tipo_inst.id_tipo" & _
  5.                                     "SET detalle.nro = @no, detalle.fecha = @fechao, detalle.boaimp = @boaimp," & _

el resultado será este

INNER JOIN ordenantes ON detalle.id_ordenante = ordenantes.id_ordenanteINNER JOIN productos ON detalle.id_producto = productos.id_productoINNER JOIN proveedores ON detalle.id_proveedor = proveedores.id_proveedorINNER JOIN tipo_inst ON detalle.id_tipo = tipo_inst.id_tipoSET detalle.nro = @no, detalle.fecha = @fechao, detalle.boaimp = @boaimp,

faltan blancos antes de las comillas ...

...ordenante" & _
"INNER
...


...ordenantes.id_ordenante " & _
"INNER JOIN ...

Por otro lado estas seguro que ese update hace lo que quieres.... actualizar por ejemplo el numero de cuenta del proveedor (proveedores.nrocuenta = @nocuentacliente) cada vez que actualizas un detalle....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 30/01/2013 a las 07:36

Etiquetas: join, sql, tabla, update
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 14:00.