jueves, 25 de febrero de 2010

Mantenimiento de Tablas

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:

  • El ejemplo incluye dos formas de manipular los registros de Categorías, la primera es únicamente con el uso de un grid y un botón que actualice la tabla de la base de datos con el uso del SQLDataAdapter respectivo.

  • La segunda forma es incluyendo los clásicos botones de navegación entre registros y los botones Insertar, Modificar, Actualizar y Eliminar.

  • El ejemplo muestra en el mismo Form las dos opciones.

  • Les envío además un archivo de Word en Versión Imprimible.
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

No hay comentarios:

Publicar un comentario