Del Articulo al Albaran

‘ 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


ArticulosYFacturas

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

4 thoughts on “Del Articulo al Albaran”

  1. wow hermano me leiste la mente xD, pero como puedo cambiar la forma de conectarse a la db, por que en mi caso por ejemplo tengo el datagridview1 conectado a la base de datos Microsoft SQL server 2005 ODBC.localhost via TCP/IP.supliarte.

    Osea no use codigo para conectar el grid con la base de datos, sino que lo hice con el wizard del datagrid, entonces me esta dando un error al de conexion con la base de datos , cuando ya previamente la tengo conectada.

    Gracias, saludos.

  2. No bro, ya esta conectada la grid a la base de datos, el problema es que el codigo me da un error en mi.conexion.open y es por que no esta haciendo conexion desde el codigo. creo que me voy dedicar a vender china esto no es para mi xD. Con un profesor tan bueno y todavia no me sale T_T.

    Gracias. sry

  3. No te apures :-)
    Entonces debes adaptar la cadena de conexion para que apunte al serividor y tu bd.

    Supongo que estas accediendo a traves de un origen de datos creado desde el server explorer con ‘add new data source’

    Para ver que todo esta ok, tienes que ir al menu ‘Data’ o ‘Datos’ y hacer clic sobre ‘Modify Connection’ desde ahi podras acceder a todas las opciones de conexion e inclusive provarlas con ‘Test Connection’.

    Luego tendras un archivo en el proyecto ‘app.config’ que contiene la entrada para apuntar a la cadena de conexion y esta es modificable externamente… aqui te dejo un ejemplo :

    connectionString="Data Source=MiServidor\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
    providerName="System.Data.SqlClient">

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>