‘ A tren de una consulta de como duplicar filas de un DGV a otro
‘ a petición de Raul os dejo esta idea (muy básica) de como
‘ componer un «albarán» a partir de un DGV con los datos del articulo.
‘
‘ Al realizar un doble clic sobre una fila de artículos
‘ se abrirá un cuadro de dialogo pidiendo la cantidad
‘ una vez introducida, crearemos una nueva línea en un
‘ DataGridView personalizado para contener la entradas
‘ de un albarán… evidentemente ficticio.
‘Ejemplo utilizando VB2008
Imports System.Data.OleDb
Public Class Form1
‘
‘Definir objectos de conexion a base de datos
Private MiConexion As New OleDbConnection(«Provider=Microsoft.Jet.OLEDB.4.0; Data Source=MiBd.mdb;»)
Private MiAdaptador As New OleDbDataAdapter(«SELECT * FROM Articulos», MiConexion)
Private MiDataSet As New DataSet()
Private MiEnlazador As New BindingSource
‘
‘tareas en tiempo de carga de la aplicación
Private Sub Form1_Load() Handles MyBase.Load
‘Abrir conexion y llenar el dataset
MiConexion.Open()
MiAdaptador.Fill(MiDataSet)
Dim commandbuilder As New OleDb.OleDbCommandBuilder(Me.MiAdaptador)
‘Asignamos el origen de datos para del DataGridView
Me.DataGridView1.DataSource = MiDataSet.Tables(0)
‘Cerrar la conexión
MiConexion.Close()
‘Clonar o…
‘Reproducir la estructura del 1er dataGrid en DataGridView2
‘añadiendo una columna para la cantidad y otra para totalizar
Me.DataGridView2.ColumnCount = Me.DataGridView1.ColumnCount + 1
Me.DataGridView2.Columns(0).Name = «Cantidad»
Me.DataGridView2.Columns(0).HeaderText = «Cantidad»
For x = 1 To Me.DataGridView1.ColumnCount – 1
Me.DataGridView2.Columns(x).Name = Me.DataGridView1.Columns(x).Name
Me.DataGridView2.Columns(x).HeaderText = Me.DataGridView1.Columns(x).HeaderText
Next
Me.DataGridView2.Columns(DataGridView1.ColumnCount).Name = «Total»
Me.DataGridView2.Columns(DataGridView1.ColumnCount).HeaderText = «Total»
Me.DataGridView2.AllowUserToAddRows = False
End Sub
‘
‘ Al hacer doble click sobre la fila del articulo esta se duplica en el segundo grid
‘
Private Sub DataGridView1_DoubleClick(….) Handles DataGridView1.DoubleClick
If DataGridView1.SelectedRows.Count > 0 Then
‘Añadir los valores obtenidos de la fila seleccionada
‘al segundo datagridview
Dim Unidades = InputBox(«Numero de unidades para :» _
+ DataGridView1.SelectedRows.Item(0).Cells(1).Value, «Cantidad»)
If Unidades.Length > 0 Then
Me.DataGridView2.Rows.Add( _
FilaAlbaran( _
Unidades, _
DataGridView1.SelectedRows.Item(0)) _
)
End If
End If
End Sub
‘
‘ Componer la nueva entrada al DGV del albaran
‘
Function FilaAlbaran(ByVal cantidad As String, ByVal fila As DataGridViewRow) As String()
‘Dimensionar el array al tamaño de columnas del DGV + una de total
Dim Contenido(Me.DataGridView1.ColumnCount) As String
‘La primera columna corresponde a la cantidad
Contenido(0) = cantidad
‘Rellenar el contenido con el valor de las celdas de la fila
For Ndx = 1 To Contenido.Length – 2
Contenido(Ndx) = fila.Cells(Ndx).Value
Next
‘Calcular y mover a la columna total el resultado de la cantidad por el precio
Contenido(Contenido.Length – 1) = cantidad * Contenido(Contenido.Length – 2)
Return Contenido
End Function
End Class