Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Asi que la capa de datos es la que tiene la interacion con el manejador de bases de datos , la capa de
negocio es la que establece como se va a acceder a esos datos, y la capa de presentacion muestra los
datos en los diversos formularios para su interaccion con el usuario que administre los mismos.
Cuales son las ventajas de utilizar la programacion en capas?
Supongamos que tenemos una aplicacion que accede a una base de datos, y la desarrollamos en
Windows Forms, y queremos migrar o permitir el acceso mediante servicio web, o queremos crear una
interfaz grafica en Windows Presentation Fundation para darle un mejor aspecto grafico, si tenemos
una aplicacion desarrollada en capas, simplemente bastaria con agregar las referencias a nuestras capas
de datos y de negocio, y simplemente dedicarnos a redisear nuestra interfaz grafica, o la presentacion
http://tips-de-programacion-vb.blogspot.com/
Otra de las ventajas es la seguridad, ya que la capa superior no tiene acceso a los datos, asi que, si
crearamos una implementacion de nuestro acceso a datos mediante Web services o Windows
Comunication Fundation, la capa de presentacion por si sola no representa ningun tipo de riesgo para
manejar informacion sensible ya que solo seria el cliente y todas las operaciones de datos se ejecutarian
el el servidor, inclusive podenmos implementar compresion con WCF y hacer las transferencias mas
rapidas y menos pesadas.
Otra ventaja es que es muy facil crear una aplicacion en capas, mantiene un orden y cualquier
modificacion se hace de manera sencilla.
Que necesito para llevar a cabo los pasos de este tutorial?
SQL server 2005-2008 y Visual studio 2008.
Que conocimientos requiero?
Conocimientos basicos de programacion en Visual Basic .Net y SQL.
Ok, una vez que ya tenemos lo necesario vamos a comenzar con el tutorial
Crear la base de datos
Como primer paso necesitamos crear una base de datos sobre la cual trabajar, asi que una vez que
tenemos instalado el SQL Server ya sea en su version Express o la version completa, abrimos nuestro
SQL management studio y realizamos la conexion de acuerdo a la autentificacion que hallamos
configurado, asi que una vez dentro del servidor vamos a crear una consulta nueva:
Esto nos creara un nuevo documento de consulta, hay que verificar tal y como esta en la imagen que la
base de datos seleccionada sea master para que la base de datos se cree sobre la base principal o
http://tips-de-programacion-vb.blogspot.com/
Esto crearia una nueva base de datos dentro de el servidor al que estemos conectados con el nombre de
Test001, nuestra base ha sido creada, pero antes de ejecutar cualquier otro comando SQL hay que
seleccionarla, colocamos el cursor sobre nuestro documento de consultas y seleccionamos la nueva
base de datos.
Ahora si es hora de crear nuestra tabla, para efectos de simplicidad solo crearemos una tabla con 4
campos: ID, Nombre, Apellido y Edad, a la cual denominaremos personas y la crearemos con este
comando:
CREATE TABLE Personas (ID int IDENTITY (100,1) PRIMARY KEY, nombre nvarchar (50),
apellido nvarchar(50), edad int)
http://tips-de-programacion-vb.blogspot.com/
Nuevamente seleccionamos el comando y lo ejecutamos para crear nuestra nueva tabla y asi tener listo
todo para dedicarnos a nuestra aplicacion.
Hemos creado nuestra tabla, ahora ya tenemos todo listo para comenzar con el desarrollo, minimizemos
el administrador de SQL y pasemos a Visual Studio.
CAPA DE DATOS
Ok, en el menu archivo creamos un nuevo proyecto de tipo libreria de clases y le ponemos un nombre,
en mi caso le puse Test001(Datos) para identificar que pertenece a la primera capa
http://tips-de-programacion-vb.blogspot.com/
Esto nos creara una solucion que contiene una clase por defecto Class1.vb, vamos a eliminar esa clase
desde el explorador de soluciones, por el momento no necesitaremos codigo en esta capa.
Despues de esto en el menu contextual proyecto, agregamos un nuevo elemento del tipo "conjunto de
datos"
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
Nombramos nuestro conjunto de datos, (aqui lo he nombrado TestDataset.xsd), y le damos agregar, esto
nos creara nuestro nuevo dataset, ahora, lo siguiente es conectarlo a nuestra base de datos, asi que
abrimos nuestro dataset y nos debe de aparecer un diseador, al cual le agregaremos nuestra tabla como
un abjeto del tipo TableAdapter.
Si le damos un clic derecho sobre nuestro diseador nos aparece el menu para agregar, en donde
podemos agregar un TableAdapter, un DataTable , una consulta o query y una relacion.
Lo primero que necesitamos agregar es un TableAdapter para obtener nuestra tabla creada en SQL, al
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
Ahora nos preguntara los datos que debe de cargar la tabla, aqui debemos generar la consulta SQL para
obtener los datos, podemos hacer uso del generador de consultas o escribir directamente la consulta en
el campo, utilizemos el generador de consultas para simplificar las cosas y no escribir los comandos
directamente.
http://tips-de-programacion-vb.blogspot.com/
En el momento que iniciemos el generador de consultas nos preguntara que tabla (o tablas) queremos
agregar a nuestra consulta, seleccionamos nuestra tabla "Personas" previamente creada.
Simplemente seleccionamos la tabla y le damos agregar para incluir la tabla en la consulta, y pues
como es la unica tabla que tenemos para agregar cerramos, veremos que nuestra tabla aparece en la
parte de arriba con sus respectivos campos, y aqui va un tip, seleccionaremos los campos uno por uno,
notaran que existe la opcion de agregar todos los campos esta opcion no nos conviene ya que lo que
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
Cuando le demos click al siguiente, nos aperecera en la pantalla algunos metodos que podemos agregar
a nuestro TableAdapter, un metodo para llenar un DataTable, otro metodo que devuelve un DataTable,
y los metodos para actualizar directamente la base de datos, la primera opcion no sera utilizada en este
tutorial, en su lugar haremos uso del metodo GetData, al cual podemos renombrar como ObtenerDatos
para tenerlo identificado.
http://tips-de-programacion-vb.blogspot.com/
Entonces una vez renombrado nuestro metodo, solo basta darle click a siguiente, en donde se mostrara
el informe de todos los metodos agregados a nuestro TableAdapter.
http://tips-de-programacion-vb.blogspot.com/
En caso de que no les genere los metodos Insert, Update y Delete eso quiere decir que algo esta mal en
nuestra consulta, tal vez faltan campos o la estructura de la consulta no es correcta.
Una vez que le demos click a Finalizar podemos ver que aparece nuestro TableAdapter con sus
respectivos campos y nuestro metodo ObtenerDatos
Listo, ahora tenemos nuestra Tabla en un TableAdapter en donde podemos manipular nuestros datos
con los metodos generados, pero, que pasa si necesitamos un metodo extra, por ejemplo, saber cuantos
registros hay, o mostrar los datos de personas por rangos de edades, etc
Para esto necesitamos agregar una nueva consulta, asi que hagamos click de nuevo en nuestro table
Adapter, y ahora seleccionamos agregar-nueva consulta, asi que vamos a generar un ejemplo para
obtener las personas que tengan una edad menor a la que nosotros indiquemos, necesitamos que dicha
http://tips-de-programacion-vb.blogspot.com/
Podemos ver que tenemos varios tipos de consultas a generar, como nuestra consulta va a obtener
varias filas, seleccionamos la consulta select que devuelve varias filas, en caso de utilizar alguna
consulta como Count o alguna otra funcion escalar pues seleccionamos un select que devuleve un solo
valor, vemos que tambien podemos generar insert, update y delete customizados, esto nos sirve por
ejemplo en el caso de agregar un dato nuevo obtengamos al mismo tiempo el id que se le fue asignado
(en caso de que el id se agrege automaticamente, como en este caso que es autoincremental), con la
ayuda de la funcion SCOPE_IDENTITY(), o borrar datos de varias tablas a la vez.
Ahora podemos generar otra consulta, esta vez vamos a hacerlo directo sin utilizar el generador
automatico ya que es una consulta sencilla, quedaria asi:
SELECT
FROM
WHERE
Ahora notemos que la variable edad le colocamos un @, eso significa que es el parametro de nuestra
consulta, eso quiere decir que nuestro Datatable tendra solo los registros con la edad menor al
parametro que le pasemos, este parametro lo nombramos edad solo como referencia, en realidad lo
pueden nombrar como uds quieran.
http://tips-de-programacion-vb.blogspot.com/
Ok, nuevamente nos va a preguntar si queremos que nos devuelva un datatable o que rellene un
datatable, asi que solo utilicemos la funcion que obtiene el datatable, en este caso la renombrare como
ObtienePersonasMenoresAEdad
http://tips-de-programacion-vb.blogspot.com/
ahora si, en cuanto le demos finalizar tendremos estructurada nuestra nueva consulta, podemos ver que
tiene como parametro de entrada la edad, listo, tenemos nuestra capa de acceso a datos funcionando y
lista para generarse, pero primero solo para asegurar, vamos a probar nuestra consulta, asi que la
seleccionamos y con un click derecho le damos Vista previa de datos.
http://tips-de-programacion-vb.blogspot.com/
Ahora nos preguntara la edad, entonces ahi le daremos el parametro de entrada, esto nos devolvera un
registro Null, ya que nuestra tabla no tiene valores, pero ya estaremos seguros de que nuestra consulta
es correcta.
http://tips-de-programacion-vb.blogspot.com/
Ok, ya estamos listos para pasar a la siguiente capa, vamos a generar nuestra solucion, nos vamos al
menu Generar y generamos nuestra libreria de acceso a datos.
Ok, ahora podemos cerrar nuestro proyecto, si nos vamos a la carpeta de release de nuestro proyecto
que debera de estar en Projects\Test001(Datos)\bin\release podemos ver que existe una libreria con
extension DLL, con el nombre Test001(Datos).dll, este es el binario de todo lo que hemos hecho en
esta capa, asi que pasemos a la siguiente etapa que es generar nuestra capa de negocios.
http://tips-de-programacion-vb.blogspot.com/
CAPA DE NEGOCIOS
A partir de aqui nos enfocaremos mas en el codigo hasta que pasemos a nuestra capa de presentacion,
asi que nuevamente en Visual Studio creamos un nuevo proyecto del tipo biblioteca de clases de la
misma forma que creamos nuestra capa de datos, nombrare el proyecto Test001(negocios) como ya lo
han de suponer, una vez creado el proyecto esta vez no eliminaremos la clase generada por Visual
studio, renombremos esta clase para matenernos en el mismo contexto, asi que le pondremos el nombre
de nuestra tabla mediante el explorador de soluciones click derecho-Cambiar nombre y renombramos
nuestra clase Personas.vb
Aqui hay que crear tantas clases como tablas tenemos en nuestra base de datos, pero ya que solo
manejamos una tabla solo crearemos esta clase, ahora solo nos queda ligar nuestra capa de negocios
con nuestra capa de datos para comenzar a codificar, asi que en el menu proyecto, seleccionamos la
opcion agregar referencia
http://tips-de-programacion-vb.blogspot.com/
Cuando le demos aceptar tendremos completamente ligadas las funciones de nuestra capa de datos, asi
que solo nos basta importarlas a nuestra clase, con la sentencia imports
http://tips-de-programacion-vb.blogspot.com/
Imports Test001_Datos_.TestDataSetTableAdapters
Imports Test001_Datos_.TestDataSet
Public Class Personas
End Class
Tenemos ya listo todo para obtener nuestro objeto TableAdapter de nuestra capa de datos, pero como
lo obtenemos?, recordemos que no pretendemos trabajar directamente con los datos desde aqui, todo lo
haremos mediante la capa de negocios, asi que para obtener nuestro table adapter, necesitamos hacerlo
mediante una propiedad, vamos al codigo y lo tratare de explicar lo mas sencillo que pueda ya que a mi
al principio comprender esta parte se me hizo algo confuso.
Imports Test001_Datos_.TestDataSetTableAdapters
Imports Test001_Datos_.TestDataSet
Public Class Personas
Private _Personas As PersonasTableAdapter = Nothing
Protected ReadOnly Property Personas() As PersonasTableAdapter
Get
If _Personas Is Nothing Then
_Personas = New PersonasTableAdapter
End If
Return _Personas
End Get
End Property
End Class
Ok, declaramos la variable _Personas como un TableAdapter, pero por que no utilizamos New?
podrian preguntarse, pero en realidad nos estamos refiriendo al objeto ya creado, y lo definimos como
nulo, esto para que, pues por que si cada consulta generamos una nueva instancia sin percatarnos si ya
existia el objeto con anterioridad tendremos un monton de tablas en memoria, y si trabajamos con
tablas muy grandes pues nuestra aplicacion seria muy pesada en memoria y ya que esto no es optimo
primero vemos que nuestro table adapter no exista (If _Personas Is Nothing ) entonces creamos nuestro
objeto nuevo con el constructor New, y pues lo devolvemos (Return _Personas).
Ok espero que no los halla enrredado. Asi que con nuestra propiedad personas obtendremos nuestro
table adapter para comenzar a utilizar nuestras consultas, comencemos por la funcion insert, asi que
creemos una funcion publica para insertar dandole como parametros nuestros campos a insertar.
Public Function InsertaPersona(ByVal Nombre As String, ByVal Apellido As String, _
ByVal edad As Integer) As Boolean
'Aqui va el contenido de nuestra funcion
http://tips-de-programacion-vb.blogspot.com/
Ahora solo falta llamar a la propiedad Personas y utilizar su funcion insert, podremos ver que conforme
la vamos escribiendo el intellisense nos va indicando los datos que necesitamos, con exepcion de el id
ya que este se agrega automaticamente
Tal vez se pregunten por que declare la funcion como boolean, pues resulta que el insert por defecto
devuelve el numero de registros afectados, asi que una vez que tengamos nuestra funcion, devolvemos
el resultado del insert convertido en un boleano, asi podemos saber si la operacion se realizo
correctamente.
Public Function InsertaPersona(ByVal Nombre As String, ByVal Apellido As String, _
ByVal edad As Integer) As Boolean
Return CBool(Personas.Insert(Nombre, Apellido, edad))
End Function
ok ahora hagamos lo mismo con el codigo para eliminar, recuerdan que desactivamos la opcion de
concurrencia optimista en la capa de datos, bueno pues gracias a esto la funcion de eliminar solo nos
solicita el ID.
http://tips-de-programacion-vb.blogspot.com/
La funcion update es una funcion con 6 sobrecargas asi que utilicemos la llamada donde solo nos
solicita los campos y el id original
Ok, entoces ya tenemos nuestras funciones para insertar, borrar y actualizar, ahora coloquemos la
funcion para obtener nuestro datatable, asi que el tipo de dato a manejar sera el datatable de nuestro set
de datos.
Public Function ObtienePersonas() As PersonasDataTable
Return Personas.ObtenerDatos()
End Function
Ahora ya tenemos la funcion que nos retorna nuestro data table, sencillo no?, ahora basta agregar la
funcion para obtener el datatable resultante de la consulta del rango de edades, tambien es algo muy
facil.
Public Function ObtienePersonasMenoresAEdad(ByVal Edad As Integer) As PersonasDataTable
Return Personas.ObtienePersonasMenoresAEdad(Edad)
End Function
Ok, esta lista la capa de negocios, asi de sencillo !, bueno pues te dejo el codigo completo de la clase
http://tips-de-programacion-vb.blogspot.com/
Imports Test001_Datos_.TestDataSetTableAdapters
Imports Test001_Datos_.TestDataSet
Public Class Personas
Private _Personas As PersonasTableAdapter = Nothing
Protected ReadOnly Property Personas() As PersonasTableAdapter
Get
If _Personas Is Nothing Then
_Personas = New PersonasTableAdapter
End If
Return _Personas
End Get
End Property
Public Function InsertaPersona(ByVal Nombre As String, ByVal Apellido As String, _
ByVal edad As Integer) As Boolean
Return CBool(Personas.Insert(Nombre, Apellido, edad))
End Function
Public Function EliminaPersona(ByVal ID As Integer) As Boolean
Return CBool(Personas.Delete(ID))
End Function
Public Function ModificaPersona(ByVal Nombre As String, ByVal apellido As String, _
ByVal edad As Integer, ByVal ID As Integer) As Boolean
Return CBool(Personas.Update(Nombre, apellido, edad, ID))
End Function
Public Function ObtienePersonas() As PersonasDataTable
Return Personas.ObtenerDatos()
End Function
Public Function ObtienePersonasMenoresAEdad(ByVal Edad As Integer) As PersonasDataTable
Return Personas.ObtienePersonasMenoresAEdad(Edad)
End Function
http://tips-de-programacion-vb.blogspot.com/
CAPA DE PRESENTACION
Ok, ya tenemos nuestras capas referenciadas y listas para manipular datos, asi que ahora dediquemonos
a disear nuestra UI, asi que cerramos la solucion y creamos un nuevo proyecto de aplicacion de
windows forms
Ahora antes que nada necesitamos agregar las referencias de nuestras capas, asi que nuevamente le
damos al menu proyecto-agregar referencia, y en la pestaa examinar nos vamos a la carpeta Release
de nuestra capa de negocios, veremos que ahi tenemos nuestras dlls de datos y negocio ya que nuestra
capa de negocio ahora es dependiente de nuestra capa de datos, asi que agregemos ambas librerias y le
damos aceptar.
http://tips-de-programacion-vb.blogspot.com/
Ok, ya tenemos referenciadas nuestras capas, ahora vamos a agregar los controles a utilizar, voy a hacer
una interfaz muy sencilla, asi que ya dejo a su criterio como ordenen los controles, ya que lo que lo
importante en este tutorial es la funcionalidad, asi que agregare un boton para cada accion, un
DataGridView para mostrar los datos, 4 textBox para los campos, 4 labels y 5 botones, si quieren algo
mas ordenado podrian crear un Form aparte para aadir registros pero eso ya es a su criterio y una vez
que dominen esta metodologia.
Asi que despues de insertar los controles mi UI quedo asi:
http://tips-de-programacion-vb.blogspot.com/
Aqui te dejo una captura de mi esquema para que identifiques los nombres de cada control
No es la interfaz mas bella pero recordemos que ya teniendo las capas de datos y negocio podemos
crear varias interfaces distintas, utilizando las mismas referencias.
http://tips-de-programacion-vb.blogspot.com/
Ok, ahora que ya tenemos nuestra interfaz lista, descriptiva y ordenada, aqui dejo la captura de mi
interfaz
Ahora agregemos el origen de datos a nuestro DataGrid, hacemos click en la pequea flecha que
aparece en la esquina superior derecha de nuestro DataGrid.
http://tips-de-programacion-vb.blogspot.com/
Desplegamos el combobox donde dice Elegir origen de datos, seleccionamos la opcion de agregar
nuevo origen de datos al proyecto.
Nos va a salir un asistente preguntandonos de donde obtendra la aplicacion los datos, de una base de
datos, de un servicio o de un objeto, asi que seleccionamos Objeto
http://tips-de-programacion-vb.blogspot.com/
Al darle siguiene veremos que estan presentes nuestras capas, las cuales podemos desplegar para ver
los objetos que hay en ellas, asi que desplegemos nuestra capa de datos y seleccionemos nuestro
DataSet
http://tips-de-programacion-vb.blogspot.com/
Le damos en siguiente y ya esta todo listo solo hace falta darle click a finalizar y ya tenemos nuestro
enlace de datos, cabe aclarar que si tenemos varias tablas en un data Set hay que especificar de que
tabla se obtendran los datos.
Ahora ya tenemos nuetro datagrid con los datos cargados, esto nos va a generar el objeto
PersonasBindingSource, que es nuestro enlace a los registros.
En este caso voy a deshabilitar la edicion del datagrid para que el usuario no edite los campos
Ok, codifiquemos nuestra aplicacion, para empezar nos vamos al codigo de nuestra forma (F7) y
importamos nuestra capa de negocios
Imports Test001_negocios_
Public Class Form1
End Class
Declaremos nuestro nuevo objeto privado personas, la clase para este objerto esta en nuestra capa de
negocios, asi que declaramos.
Imports Test001_negocios_
Public Class Form1
Private personas As New Personas
End Class
http://tips-de-programacion-vb.blogspot.com/
En este evento vamos a cargar nuestro data table como el datasource de nuestro objeto BindingSource,
Ehh?, esto significa que vamos a obtener nuestra tabla, y vamos a llenar con nuestros registros el
origen de datos, asi que le colocamos la funcion que declaramos en nuestra capa de negocios para
obtener nuetro datatable Personas.ObtienePersonas
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PersonasBindingSource.DataSource = personas.ObtienePersonas()
End Sub
Y como buenos programadores que somos vamos a manejar los posibles errores que se puedan
presentar, como el hecho de que la conexion no este disponible, esto lo hacemos con la sentencia TryCatch.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
PersonasBindingSource.DataSource = personas.ObtienePersonas()
Catch ex As Exception
'En caso de error mandamos el mensaje de error en un messagebox
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
http://tips-de-programacion-vb.blogspot.com/
Primiero checamos que no esten en blanco nuestros campos, una vez verificado eso utilizamos la
funcion InsertaPersona que esta en nuestra capa de negocios, volvemos a llenar nuestra tabla despues
de agregar, ahora dentro del evento click del ButtonEliminar ponemos nuestro codigo para eliminar
Verificamos para empezar que exista una fila seleccionada en nuestro DataGridView y posteriormente
obtenemos el ID para eliminarla seleccionando la columna con el index 0 , y pues como lo elimina
completamente colocamos un MessageBox de advertencia para evitar eliminar registros por error,
ahora si, solo falta actualizar
Private Sub ButtonElimina_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
ButtonElimina.Click
'Checamos que exista una seleccion en el datagrid
If DataGridViewPersonas.RowCount = 0 Then
Exit Sub
Else
Try
'Pedimos confirmacion del usuario
If MessageBox.Show("Esta seguro de que desea eliminar el registro", "Eliminar", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
personas.EliminaPersona(CInt(DataGridViewPersonas.CurrentRow.Cells(0).Value))
'Eliminamos con nuestra funcion
http://tips-de-programacion-vb.blogspot.com/
Aqui hay que verificar ambas cosas que no haya espacios en blanco y que exista un registro
seleccionado, todos con sus respectivos Try catch para no tener problemas de exepciones,
Private Sub ButtonActualiza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
ButtonActualiza.Click
'Validamos espacios en blanco
If TextBoxNombre.Text = "" Or TextBoxApellido.Text = "" Or TextBoxEdad.Text = "" Then
MessageBox.Show("Algunos datos estan en blanco", "Modificar", MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
Exit Sub
'Tambien validamos que exista un dato seleccionado
ElseIf DataGridViewPersonas.RowCount <> 0 Then
Try
personas.ModificaPersona(TextBoxNombre.Text, TextBoxApellido.Text, Cint(TextBoxEdad.Text), _
Cint(DataGridViewPersonas.CurrentRow.Cells(0).Value))
'Modificamos y actualizamos los datos recordemos que hay que convertir el valor a entero
PersonasBindingSource.DataSource = personas.ObtienePersonas()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MessageBox.Show("No ha seleccionado ningun registro", "Modificar", MessageBoxButtons.OK,
MessageBoxIcon.Warning)
End If
End Sub
Ahora solo falta el de la consulta de las edades, al igual que en las anteriores validamos.
Private Sub ButtonConsulta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
ButtonConsulta.Click
If TextBoxConsulta.Text = "" Then
MessageBox.Show("No ha escrito ninguna edad", "Consultar", MessageBoxButtons.OK, _
MessageBoxIcon.Warning)
Exit Sub
Else
Try
http://tips-de-programacion-vb.blogspot.com/
Solo falta agregar el Me.Close() en el evento click del boton Salir , ahora pueden implementar distintas
cosas mas a su aplicacion, corrijan algunos errores ya que existen algunas otras cosas que podrian
provocar un error como el hecho de introducir una letra en el campo de edades, pero eso ya se los dejo
a uds, es facil con la funcion TryParse, asi que vamos a probar nuestra aplicacion, este es el codigo
completo
Imports Test001_negocios_
Public Class Form1
Private personas As New Personas
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
PersonasBindingSource.DataSource = personas.ObtienePersonas()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub ButtonAgrega_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonAgrega.Click
If TextBoxNombre.Text = "" Or TextBoxApellido.Text = "" Or TextBoxEdad.Text = "" Then
MessageBox.Show("Algunos datos estan en blanco", "Agregar", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
Try
personas.InsertaPersona(TextBoxNombre.Text, TextBoxApellido.Text, CInt(TextBoxEdad.Text))
PersonasBindingSource.DataSource = personas.ObtienePersonas()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End Sub
Private Sub ButtonElimina_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonElimina.Click
If DataGridViewPersonas.RowCount = 0 Then
Exit Sub
Else
Try
If MessageBox.Show("Esta seguro de que desea eliminar el registro", "Eliminar", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
personas.EliminaPersona(CInt(DataGridViewPersonas.CurrentRow.Cells(0).Value))
PersonasBindingSource.DataSource = personas.ObtienePersonas()
http://tips-de-programacion-vb.blogspot.com/
Solo generemos nuestro proyecto con generar para tenerlo compilado, y posteriormente Depurar-Iniciar
depuracion o simplemente F5
Les dejo algunas capturas, aun faltan validaciones por hacer dejr en blanco los campos despues de
insertar, menus contextuales, etc..., pero lo basico ya esta listo, solo hay que embellecerlo un poco con
otras funcionalidades o validaciones
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/
Espero les sea de utilidad compaeros desarrolladores, si hago algun otro tutorial lo pondre en mi blog,
agradeceria cualquier sugerencia, comentario, peticion o error.
http://tips-de-programacion-vb.blogspot.com/
http://tips-de-programacion-vb.blogspot.com/