viernes, 30 de octubre de 2009

Mantenimiento de una tabla en VB. Net 2005 y SQL Server

En esta parte desarrollaremos una aplicación para darle mantenimiento a una tabla dentro de una base de datos, el mantenimiento a realizar consiste en insertar, modificar y eliminar los registros de una tabla, para ello haremos uso de los objetos ya conocidos como el DataAdapter el cual nos permitirá obtener los datos y el objeto DataSet el cual nos permitirá almacenar la tabla, otros objetos a utilizar en este ejemplo son el DataTables quien nos permitirá contener todos los datos obtenidos y el DataRow el cual nos permitirá almacenar los registros obtenidos de la tabla, también haremos uso del objeto CommandBuilder el cual nos permitirá construir automáticamente los comandos de consulta, inserción y actualización asignándolos al DataAdapater.
El mantenimiento será realizado sobre la tabla Shippers la cual se encuentra dentro de la base de datos Northwind. Este mantenimiento realizara las operaciones de inserción, actualización, eliminación y navegación a través de los datos contenidos dentro de la tabla.

Empezaremos creando un proyecto que se denominara WAccesoDatos. Una vez creado el nuevo proyecto en VB .NET, importaremos los espacio de nombres y declararemos a nivel de clase un conjunto de variables para la manipulación de los datos. Veamos la siguiente figura.

Variables declaradas

Una vez declaradas las variables vamos a crear un formulario y lo llamaremos frmMantenimientoTabla, luego agregamos los siguientes controles dentro del formulario creado.


Una vez realizado el ingreso de todos los controles dentro del formulario, el frmMantenimientoTabla debe de quedar como la siguiente figura.



Ventana del frmMantenimientoTabla

Pasando a la escritura del código del mantenimiento, en primer lugar codificaremos el evento load del frmMantenimientoTabla; dentro del evento load estableceremos la conexión, realizaremos la consulta de la tabla, asignaremos el CommandBuilder al DataAdapter, para luego almacenarlo en un DataSet y así asignarlo dentro del DataGridView para poder visualizarlo. Dentro de este evento también se encuentra el llamado de los procedimientos VerDatos y Botones los cuales describiremos más adelante. En la siguiente figura se muestra el código del evento.



Código del evento load del frmMantenimientoTabla

A continuación codificaremos el procedimiento VerDatos el cual nos permitirá seleccionar la fila elegida dentro del DataGridView con la finalidad de mostrarlo dentro de las cajas de texto. En este procedimiento se utilizara el método GetCellCount junto al valor DataGridViewElementStates.Selected del control DataGridView con el que capturaremos el total de las celdas para después almacenarlas dentro de una variable, luego utilizaremos la propiedad SelectedCells para capturar la fila y la columna de la celda seleccionada por el usuario, una vez capturada la celda pasaremos a mostrarlo dentro de las cajas de texto haciendo uso de la propiedad Item. En la siguiente figura se encuentra el código.




Código del procedimiento VerDatos

Ahora realizamos el código de los procedimientos Botones y LimpiaDatos los cuales llamaremos a la hora de ejecutar la aplicación y realicemos la edición de los datos. A continuación en la siguiente figura se muestra el código.



Código del procedimiento Botones y LimpiaDatos

Con respecto a la codificación de los botones de edición, empezaremos con el código del botón nuevo, en donde primero realizaremos el llamado del procedimiento LimpiaDatos para después hacer la suma del identificador (el cual será el nuevo id del registro a agregar), asignándolo a la caja de texto del identificador a través de la propiedad RowCount y por ultimo llamamos al procedimiento Botones. En la siguiente figura está el código del btnnuevo.



Código del botón Nuevo

Ahora pasamos a escribir el código del botón Grabar, este botón nos permitirá grabar el nuevo registro agregado y a la vez también nos permitirá la actualización del registro a modificar. Para identificar si deseamos agregar un nuevo registró o solo actualizarlo se hace uso de la variable Estado, si el estado esta vacio nos permite agregar un nuevo registro si el estado se encuentra en Actualizar (este estado se activa al presionar el botón modificar) el registro solo se modifica dentro de la tabla. A continuación en la siguiente figura se encuentra el código del botón grabar y modificar.



Código del botón Grabar y Modificar

Para eliminar una fila(s) primero obtenemos la fila a borrar mediante un objeto DataRow, procediendo a su borrado con el método Delete( ). Para actualizar la eliminación realizada, empleamos el método GetChanges( ) del objeto DataTable, obteniendo a su vez, un objeto tabla sólo con la fila(s) eliminada(s); luego confirmamos los cambios usando el método AcceptChanges; y por ultimo llamamos al procedimiento VerDatos con la finalidad de mostrar los datos dentro del form. En la siguiente figura se encuentra el código del botón eliminar.



Código del botón Eliminar

Para terminar con la codificación del frmMantenimientoTabla, llamaremos al procedimiento VerDatos al momento de hacer click en la fila seleccionada dentro del DataGridView y para finalizar codificamos el botón Salir.



Código del DataGridView y el botón Salir

Al terminar la codificación se pasa a ejecutar el formulario, y debe de mostrarse como en la siguiente figura.



Formulario frmMantenimientoTabla

PD:
  • Hacer clic en las filas de la primera columna (ShipperID) para mostrar todos los datos correctamente dentro de los TextBox, en caso contrario si haces click en las dos columnas restantes (CompanyName y Phone) mostrará un error con el siguiente mensaje "La conversión del tipo 'DBNull' en el tipo 'String' no es válida." , ya que todavía falta codificarlo.

18 comentarios:

  1. pase el proyecto pues esta chido tu aporte bro

    ResponderEliminar
  2. DEJAME K LO PRUEBE Y PS TE DIGO COMO ME ANDA VALE PERO SI LO ENTIENDO Y PARECE K SI FUNCIONA TE ESCRIBO LUEGO SI ME FUNCIONA

    ResponderEliminar
  3. No sirve la parte de elegir los datos y mostrarlos en textbox

    ResponderEliminar
  4. A mi tampoco me muestra los datos de manera correcta en los textbox, pienso que es porque la variable pos solo la declaraste pero no la has definido,agradeceria lo corrigieses

    ResponderEliminar
  5. Colocar por favor bien el codigo ya que no funciona exactamente lo que dice

    ResponderEliminar
  6. No me cargan los datas en el datagrid. :S

    ResponderEliminar
  7. tiene un error a la hora de escoger una fila los textboxs no cargan la informacion de la linea seleccionada...

    ResponderEliminar
  8. Leer la ultima parte de la Entrada (el PD).

    ResponderEliminar
  9. Hola lo que me alflige es que no se hacer esto que especificas al inicio del codigo
    "Una vez creado el nuevo proyecto en VB .NET, importaremos los espacio de nombres y declararemos a nivel de clase un conjunto de variables para la manipulación de los datos. Veamos la siguiente figura."

    Yo creo que por eso tambien a la mayoria no le funciona el codigo.

    Espero Me ayudes.

    Saludos

    ResponderEliminar
  10. quisiera saber Como seria el codigo para c#, para devolver los datos a las cajas de texto desde lo datagrieview...te lo agradesco de antemano...

    ResponderEliminar
  11. Hola Lo que quisiera saber que es el UID ? Me sale Error!!

    ResponderEliminar
  12. Para que le salga los datos haciendo click en cualkier celda deben cambiar el evento del datagrid a CellClick dentro de ese evento copian verdatos() y eso es todo

    ResponderEliminar
  13. SI TODO ESTUVIERA BIEN.. SERIA MAL PARA USTEDES.. POR QEU NO PIENSAN Y LO SOLUCIONAN USTEDES MISMOS.. PONGAN ALGO DE SU PARTE.. NO QUIERAN TOD O LISTO FLOJOSS...

    ResponderEliminar
  14. ¿y para descargar el ejercicio?

    ResponderEliminar
  15. Se agradece que no publiques la codificacion completa o correcta..
    Para poder nosotroso razonar un poko con el problema..
    GRacias..
    Serias muy malo si nos envias todo hecho y completo.

    ResponderEliminar
  16. para corregir el error de datagridview

    fil = Me.DataGridView1.SelectedCells(pos).RowIndex.ToString
    'col = Me.DataGridView1.SelectedCells(pos).ColumnIndex.ToString

    ' No asignar el numero de columna del evento click, si no la posición inicial

    col = 0

    Me.TextBox1.Text = Me.DataGridView1.Item(col, fil).Value
    Me.TextBox2.Text = Convert.ToString(Me.DataGridView1.Item(col + 1, fil).Value)
    Me.TextBox3.Text = Convert.ToString(Me.DataGridView1.Item(col + 2, fil).Value)

    ResponderEliminar
  17. Optimizando:

    fil = Me.DataGridView1.SelectedCells(pos).RowIndex.ToString

    Dim loFila As DataRow = Ds.Tables("shippers").Rows(fil)

    Me.TextBox1.Text = Convert.ToString(loFila.Item("Nombre Campo"))
    Me.TextBox2.Text = Convert.ToString(loFila.Item("Nombre Campo"))
    Me.TextBox3.Text = Convert.ToString(loFila.Item("Nombre Campon"))

    ResponderEliminar