Alta de productos en GESTOCK2: uso SQLDataAdapter
Hoy nos dedicamos a “dar de alta productos”. Problema: está del lado N de 3 tablas è hay 3 claves foráneas que necesita conocer la persona que da de alta a los artículos.
Creamos 3 ComboBox para esas claves foráneas.
à Flecha – “usar elementos enlazados a datos”.
à buscamos la tabla de la que procede (“Categoria”, por ej.) --- aparece su BindingSource.
à en “mostrar miembro”, ponemos “Descripción”, por ejemplo.
à en “miembro valor”, ponemos MargenID, que es el dato que se necesita guardar.
Para los textbox de los datos de entrada de los productos, se mete el SQLDataAdapter. Con el botón de “Alta”, se pondría lo siguiente (con pocas variantes a los que hemos hecho estos días: con los ComboBox, básicamente):
If Me.tbCodigo.Text.Trim.Length <> 6 Then
MsgBox("Error nº de código")
tbCodigo.Focus()
Exit Sub
End If
Try
Dim Datos As New DataSet
'Llenamos el DataSet con los dtos.
Adaptador.Fill(Datos, "PRODUCTOS")
'Creamos una fila a partir de la tabla.
Dim Fila As DataRow = Datos.Tables("PRODUCTOS").NewRow
Fila("CODIGO") = (tbCodigo.Text)
Fila("NOMBRE_PRODUCTO") = tbNombre.Text
Fila("DESCRIPCION_PRODUCTO") = tbDescripcion.Text
Fila("PRESENTACION") = tbPresentacion.Text
Fila("PESO") = CDbl(tbPeso.Text)
Fila("COSTE") = CType(tbCoste.Text, System.Decimal)
Fila("MARGENID") = CInt(Me.cbMargen.SelectedValue)
Fila("CATEGORIAID") = CInt(Me.cbCategoria.SelectedValue)
Fila("STOCKMINIMOID") = CInt(Me.cbStockMinimo.SelectedValue)
Fila.EndEdit()
' Insertamos la nueva fila
Datos.Tables("PRODUCTOS").Rows.Add(Fila)
' Actualizamos el DataSet a través del Adaptador
Adaptador.Update(Datos, "PRODUCTOS")
' Forzamos al DataSet a aceptar los cambios
Datos.AcceptChanges()
'Mensaje de todo OK.
MsgBox("Alta procesada correctamente", MsgBoxStyle.Information, "Alta Producto")
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al insertar")
End Try
End Sub
End Class