Mantenimiento de Categorías
Usando la Base de datos Northwind

Fecha: 31/May/2005 (24 de Mayo de 2005)
Autor: Ing. Fernando Luque Sánchez   -  Trujillo - Perú 
                       
[email protected]  -   
                       
[email protected]
                        [email protected]


Sres. Desarrolladores, les envío en esta oportunidad el clásico mantenimiento de una tabla de una base de datos, es algo sencillo pero a la vez sumamente importante.

El ejemplo tiene incluido desde el IDE los objetos SQLConnection, un SQLDataAdapter y se ha generado un DataSet tipificado. Se asume que el lector conoce todos estos términos.

También se muestra como se utiliza el control ToolTip, recuerden que en los exámenes del Desarrollador Cinco Estrellas asi como en la Certificación MCSD .Net viene preguntas acerca del Control ToolTip. Basta con uno solo para todos los controles que se les pueda especificar un mensaje.

Notas importantes:

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

'Importar el NameSapce para los datos con SQL Server 2000
Imports System.Data.SqlClient

Public Class Categorias
    Inherits System.Windows.Forms.Form

    'CREAR EL Adaptador, el DataSet y el Entero para la Posición

    Private daCat As SqlDataAdapter
    Private dsCatCod As DataSet
    Private iPosicion As Integer

    'Este DataTable es para el Mantenumiento con todos los botones.

    Private CategoriasCod As DataTable

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

    'CUANDO CARGA EL FORMULARIO  --- LOAD

    Private Sub CargarForm(ByVal sender As Object, _

        ByVal e As System.EventArgs) Handles MyBase.Load

        'LLENAR EL DATATABLE CON LOS DATOS DEL DATASET

        daCategorias.Fill(dsCat, "Categorias")       'ENLAZAR EL GRID CON EL DATATABLE CREADO

        grdCategorias.DataSource = dsCat.Tables("Categorias")

        grdCategorias.CaptionText = "Categorias Registradas"

        ' **********************************************************'

        'Esta seccion el para el Mantenimiento por código

        'CREAR LA CONEXION
        Dim cn1 As New SqlConnection()

        'ESTABLECER LA CADENA DE CONEXION
        cn1.ConnectionString = "data source=HOME;" & _
                        "initial catalog=Northwind;" & _
                        "integrated security=SSPI;" & _
                        "persist security info=False;" & _
                        "user id=sa;workstation id=HOME;packet size=4096"

        'CREAR EL ADAPTADOR
  daCat = New SqlDataAdapter("Select CategoryId,CategoryName,Description from Categories", cn1)

        'CREAR EL COMMANDBUILDER
        'ESTE OBJETO PERMITE CREAR LOS COMANDOS DEL ADAPTADOR
        Dim cbCat As New SqlCommandBuilder(daCat)

        'Crear una nueva instancia del DataSet
        Me.dsCatCod = New DataSet()

        'Abrir la Conexion
        cn1.Open()

        'Llenar el DataSet
        Me.daCat.Fill(dsCatCod, "CategoriasCod")

        'Cerrar la conexion
        cn1.Close()

        'Indicador de registros a 0
        Me.iPosicion = 0

        'Cargar los datos del registro a las cajas de texto
        Me.CargarDatos()

        'DataSource del Grid por Código
        grdCatCod.DataSource = Me.dsCatCod.Tables("CategoriasCod")

        grdCatCod.CaptionText = "Categorias - Código"
        grdCatCod.ReadOnly = True

    End Sub

    'MUESTRA LOS DATOS DEL REGISTRO ACTIVO EN LAS CAJAS DE TEXTO
    Private Sub CargarDatos()

       'DEFINIR UN DATAROW
       Dim drFila As DataRow

        'ASIGNAR LOS DATOS DEL PRIMER REGISTRO AL DATAROW
        drFila = dsCatCod.Tables("CategoriasCod").Rows(Me.iPosicion)

        'LLENAR LAS CAJAS DE TEXTO CON LOS DATOS DEL DATAROW

        Me.txtIdCat.Text = drFila("CategoryID")

        Me.txtNombreCat.Text = drFila("CategoryName")

        Me.txtDescCat.Text = drFila("Description")

        'ACTUALIZAR LA ETIQUETA "Registro..... de ......"

        Me.lblPosicion.Text = "Registro " & CType(Me.iPosicion + 1, String) & _

            " de " & Me.dsCatCod.Tables("categoriasCod").Rows.Count

    End Sub

 

    'ACTUALIZACION DESDE EL IDE

    Private Sub ActualizaGrid(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdActualizar.Click 
        daCategorias.Update(dsCat, "Categorias") 
    End Sub

    Private Sub cmdPrimero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrimero.Click 
        'PRIMER REGISTRO DE LA TABLA 
        Me.iPosicion = 0 
        CargarDatos() 
    End Sub

    Private Sub cmdUltimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUltimo.Click

        'ULTIMO REGISTRO DE LA TABLA 
        Me.iPosicion = Me.dsCatCod.Tables("CategoriasCod").Rows.Count - 1 
        CargarDatos()

    End Sub

    Private Sub cmdAnterior_Click(ByVal sender As System.Object, _

        ByVal e As System.EventArgs) Handles cmdAnterior.Click

        'REGISTRO ANTERIOR

        If Me.iPosicion = 0 Then

            MessageBox.Show("Primer registro...", "Atención")

        Else

            Me.iPosicion -= 1

            CargarDatos()

         End If

    End Sub

 

    Private Sub cmdSiguiente_Click(ByVal sender As System.Object, _

        ByVal e As System.EventArgs) Handles cmdSiguiente.Click

        'SIGUIENTE REGISTRO

        If Me.iPosicion = Me.dsCatCod.Tables("CategoriasCod").Rows.Count - 1 Then

            MessageBox.Show("Último registro...", "Atención")

        Else

            Me.iPosicion += 1

            CargarDatos()

        End If

    End Sub

 

    Private Sub Insertar(ByVal sender As System.Object, _

            ByVal e As System.EventArgs) Handles cmdInsertar.Click

        'INSERTAR REGISTROS AL DATATABLE

        'DEFINIR EL DATAROW

        Dim FilaNueva As DataRow

        FilaNueva = Me.dsCatCod.Tables("CategoriasCod").NewRow()

        'ASIGNAR LOS VALORES CON LOS DE LAS CAJAS DE TEXTO

        FilaNueva("CategoryID") = CType(Me.txtIdCat.Text, Integer)

        FilaNueva("CategoryName") = Me.txtNombreCat.Text

        FilaNueva("Description") = Me.txtDescCat.Text

        'Agregar el Row

        Me.dsCatCod.Tables("CategoriasCod").Rows.Add(FilaNueva)

        'Deshabilitar Botones

        Me.cmdInsertar.Enabled = False

        Me.cmdActualCod.Enabled = True

        Me.cmdModificar.Enabled = True

        Me.cmdEliminar.Enabled = True

        Me.PanelMover.Enabled = True  'Activar Panel

        Me.cmdLimpiar.Enabled = True

        DesactivarCajas()

        Me.cmdActualCod.Text = "Actualizar"

        Me.iPosicion = Me.dsCatCod.Tables("CategoriasCod").Rows.Count - 1

        Me.lblPosicion.Text = "Registro " & CType(Me.iPosicion + 1, String) & _

            " de " & Me.dsCatCod.Tables("categoriasCod").Rows.Count

    End Sub

El código completo está en el archivo adjunto. Suerte a todos, espero les sirva de ayuda, no olviden dar su opinión en mi Panoramabox, gracias.

Ing. Fernando Luque Sánchez
DCE 4 Estrellas


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_MantenimientoCateg.zip - 114 KB


ir al índice