Colaboraciones en el Guille

Combos con datos relacionados

Controles: ListView y StatusBar 

Fecha: 18/Jun/2006 (12 de Junio de 2006)
Autor: MCSD .Net Ing. Fernando Luque Sánchez - [email protected]

 


Sres. Desarrolladores, reciban un afectuoso saludo, aqui estoy nuevamente con la satisfacción de haber logrado la certificación MCSD .Net hace algún tiempo y es por eso que me alejé un poco de las publicaciones, pero ya estoy nuevamente para compartir y ayudar.

Para el Guille, te esperamos en Trujillo este 19 de Julio con la gira de INETA, esperemos compartir conocimientos y gratos momentos.

Clientes y sus órdenes.

Este ejemplo lo publico debido a una consulta de otro colega, he desarrollado un pequeño ejemplo que se lo envié y ahora lo publico. En este ejemplo presento dos partes, la primera con el uso de la base de datos Northwind de SQL Server y la presentación de los Clientes (Customers) en un ComboBox y sus órdenes registradas (Orders) en otro.

También muestro de manera muy elemental el uso del control ListView, para aprender a usar este control pueden visitar estos enlaces.

Para el uso del control ListView
http://www.elguille.info/colabora/NET2005/FernandoLuque_Control_ListView.htm
http://www.elguille.info/colabora/NET2005/FernandoLuque_Control_ListViewII.htm
http://www.elguille.info/colabora/NET2005/FernandoLuque_ListViewAvanzado.htm

Para el uso del control ComboBox
http://www.elguille.info/colabora/NET2005/FernandoLuque_El_Control_ComboBox.htm
http://www.elguille.info/colabora/NET2005/FernandoLuque_ControlesListaBD.htm

El formulario inicial tiene el siguiente diseño:

ComboBox y base de datos

En la parte superior del formulario se puede visualizar los Clientes en el primer combo y las órdenes del Cliente seleccionado en el segundo Combo. En la parte inferior como insertar de manera simple datos en un ListView.

A continuación sigue código en Visual Basic:

Imports System.Data
Imports System.Data.SqlClient

Public Class frmcombos
    Inherits System.Windows.Forms.Form

    Dim cn As SqlConnection
    Dim dsDatos As DataSet
    Dim daClientes As SqlDataAdapter
    Dim daOrdenes As SqlDataAdapter
    Dim reClientesOrdenes As DataRelation

#Region " Código generado por el Diseñador de Windows Forms "
     --- CODIGO ELIMINADO  -----
#End Region

    Private Sub Cargar(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load

        'Nueva instancia de la cadena de conexion
        cn = New SqlConnection("user id=SA;data source=.;persist security info=False;initial catalog=Northwind")

        'El Adaptador
        daClientes = New SqlDataAdapter("select customerid, companyname, contactname from customers", cn)

        'Instancia del DataSet
        dsDatos = New DataSet

        'Llenar el DataSet
        daClientes.Fill(dsDatos, "Clientes")

        'Origen del Combo Clientes
        Me.cboClientes.DataSource = dsDatos.Tables("Clientes")
        Me.cboClientes.DisplayMember = dsDatos.Tables("Clientes").Columns("CustomerId").ToString
        Me.cboClientes.SelectedIndex = 0
        Me.lblCliente.Text = dsDatos.Tables("Clientes").Rows(Me.cboClientes.SelectedIndex)("CompanyName").ToString

         'Crear la tabla con órdenes
        daOrdenes = New SqlDataAdapter("select orderid, customerid, orderdate, freight from orders", cn)
        daOrdenes.Fill(dsDatos, "Ordenes")

        'Origen del Combo Órdenes
        Me.cboOrdenes.DataSource = dsDatos.Tables("Ordenes")
        Me.cboOrdenes.DisplayMember = dsDatos.Tables("Ordenes").Columns("OrderId").ToString
        Me.cboOrdenes.SelectedIndex = 0

        'Mostrar el otro combo - Filtrar
        Me.verOrdenes()
        Me.lblCantidad.Text = Me.cboOrdenes.Items.Count.ToString + " órdenes"

        Me.StatusBar1.Panels(1).Text = "Fecha: " + CType(Format(Today, "Short Date"), String)
        Me.StatusBar1.Panels(2).Text = "MCSD .Net Ing. Fernando Luque Sánchez"
        Me.StatusBar1.Panels(3).Text = "Trujillo - Perú"  

    End Sub

    Private Sub verOrdenes()
        'crear una vista para filtrar
        Dim dvOrdenes As New DataView(dsDatos.Tables("Ordenes"))
        dvOrdenes.RowFilter = "CustomerId = '" & Me.cboClientes.Text & "'"
        Me.cboOrdenes.DataSource = dvOrdenes
    End Sub

    Private Sub SeleccionarCliente(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles cboClientes.SelectedIndexChanged

        verOrdenes()
        Me.lblCliente.Text = dsDatos.Tables("Clientes").Rows(cboClientes.SelectedIndex)("CompanyName").ToString
        Me.lblCantidad.Text = Me.cboOrdenes.Items.Count.ToString + " órdenes"

    End Sub

    ' Para el contador
    Dim vcuenta As Integer
    Private Sub AgregarLista(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
        Me.ListView1.Items.Add(Me.TextBox1.Text)
        Me.ListView1.Items(vcuenta).SubItems.Add(Me.TextBox2.Text)
        vcuenta += 1
    End Sub

End Class

El código completo se encuentra en el archivo adjunto. Bájalo y no te olvides de votar, tus puntos me alientan a seguir compartiendo.

Suerte a todos y a seguir desarrollando.

MCSD .Net Ing. Fernando Luque Sánchez
De Trujillo - Perú para todo el mundo


Espacios de nombres usados en el código de este artículo:

System.Data
System.Data.SQLClient


Fichero con el código de ejemplo: FernandoLuque_CombosListViewStatusBar.zip - (09) KB

(MD5 checksum: [B359E9FA1B89AB8B3B1FC3F17A872C85])


ir al índice principal del Guille