Enlazar bases de datos SQL con VB.

Net desde cero by Xtriker Accesar a una base de datos SQL mediante VB.net Programacion en capas A manera de referencia decidi hacer este pequeño tutorial en donde tratare de explicar de manera detallada y desde cero, como enlazar de manera segura y ordenada una base de datos SQL con una aplicacion de windows forms hecha en Visual Basic .Net utilizando el framework 3.5, aplicando la metodologia de programacion en capas, asi que empezemos con una breve introducion para que sepamos de que se trata esto. ¿Por que usar una base de datos? Bueno pues esto es sencillo, basicamente lo que buscamos al organizar los datos ya sea en un archivo de base de datos o en un servidor es el hecho de tener nuestra informacion consistente, normalizada y que se encuentre dentro de un mismo contexto, indispensable si tenemos la intension de desarrollar una aplicacion distribuida, ya sea para gestion de inventarios, personal, matriculas, etc..., a la cual le podemos realizar diversas consultas, generar reportes y otras tareas fundamentales de un sistema que requiere grandes cantidades de informacion almacenada y protegida. ¿Que es la programacion en 3 capas? La programacion en 3 capas es una metodologia de programacion en la cual establecemos niveles de acceso y distribuimos las areas de nuestra aplicacion para acceder a bases de datos, esto tiene cierta jerarquia de acuerdo al nivel de acceso, en donde la capa superior que es la interfaz grafica del programa en si, no accede directamente a los datos como normalmente se utiliza el acceso a datos mediante el namespace SqlClient, si no que hay una capa intermedia entre el acceso a datos que es la que realiza la negociacion entre la presentacion del programa y los datos. Presentacion Negocio Datos

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 rediseñar nuestra interfaz grafica, o la presentacion http://tips-de-programacion-vb.blogspot.com/

Enlazar bases de datos SQL con VB.Net desde cero by Xtriker de nuestra web, esto hace sumamente facil el acceso a datos desde distintas presentaciones.

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/

Enlazar bases de datos SQL con VB.Net desde cero by Xtriker maestra, posteriormente escribimos nuestro comando para crear la base de datos a la cual llamaremos Test001, asi que nuestro comando seria create database Test001 Una vez que escribimos esto solo bastaria seleccionar el comando y darle click en ejecutar o presionar F5

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/

Enlazar bases de datos SQL con VB.Net desde cero by Xtriker Definimos la llave primaria como identidad autoincremental, asi, con cada dato que sea insertado este ID ira aumentando con respecto al ultimo dato que se agrego, lo inicializamos en 100 y le damos un incremento de 1 por cada nuevo dato, con esto evitamos conflictos por tratar de insertar una llave primaria duplicada.

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/

Net desde cero by Xtriker Esto nos creara una solucion que contiene una clase por defecto Class1. Despues de esto en el menu contextual proyecto. por el momento no necesitaremos codigo en esta capa.Enlazar bases de datos SQL con VB.blogspot. vamos a eliminar esa clase desde el explorador de soluciones. agregamos un nuevo elemento del tipo "conjunto de datos" http://tips-de-programacion-vb.com/ .vb.

Enlazar bases de datos SQL con VB.Net desde cero by Xtriker http://tips-de-programacion-vb.com/ .blogspot.

com/ .Net desde cero by Xtriker http://tips-de-programacion-vb.blogspot.Enlazar bases de datos SQL con VB.

(aqui lo he nombrado TestDataset. al cual le agregaremos nuestra tabla como un abjeto del tipo TableAdapter. al http://tips-de-programacion-vb.blogspot.Enlazar bases de datos SQL con VB. un DataTable . asi que abrimos nuestro dataset y nos debe de aparecer un diseñador. lo siguiente es conectarlo a nuestra base de datos.xsd). una consulta o query y una relacion. esto nos creara nuestro nuevo dataset. Lo primero que necesitamos agregar es un TableAdapter para obtener nuestra tabla creada en SQL. Si le damos un clic derecho sobre nuestro diseñador nos aparece el menu para agregar.Net desde cero by Xtriker Nombramos nuestro conjunto de datos. en donde podemos agregar un TableAdapter. ahora. y le damos agregar.com/ .

estableciendo los parametros de conexion y seleccionando la base de datos a la que pretendemos accesar.com/ .Net desde cero by Xtriker momento de agregar el table adapter se debera establecer la conexion al servidor SQL. http://tips-de-programacion-vb.blogspot.Enlazar bases de datos SQL con VB.

Enlazar bases de datos SQL con VB. habria que hacerlo mediante codigo.Net desde cero by Xtriker Al realizar satisfactoriamente la conexion. una vez que salimos de esta pantalla. vemos que nos pregunta si deseamos incluir datos confidenciales en la cadena de conexion. en este caso le dejo el nombre por defecto. el combobox de las bases de datos se llenara. si no los incluimos. seleccionamos nuestra base de datos y le damos aceptar. con esto ya tendriamos nuestros datos referenciados. hay un boton en la esquina inferior izquierda que nos sirve para comprobar nuestra conexion a datos.com/ .blogspot. asi que por comodidad seleccionamos la segunda opcion "Si incluir datos confidenciales en la cadena de conexion". y cuando le demos en siguiente nos preguntara el nombre de nuestra cadena. http://tips-de-programacion-vb.

crear procedimientos almacenados.blogspot. en este nuestro acceso sera mediante instrucciones SQL.Enlazar bases de datos SQL con VB. podemos guardarla en el archivo de configuracion de la aplicacion.com/ . una vez que le ponemos nombre nuestra cadena de conexion pasamos a lo siguiente que es donde establecemos el modo de acceso de nuestro TableaAdapter. http://tips-de-programacion-vb. Update y Delete. o usar los procedimientos almacenados existentes. ya que necesitamos las instrucciones Insert. en donde podemos utilizar instrucciones SQL.Net desde cero by Xtriker En el caso de que necesitemos la cadena de conexion posteriormente.

Enlazar bases de datos SQL con VB. aqui debemos generar la consulta SQL para obtener los datos. utilizemos el generador de consultas para simplificar las cosas y no escribir los comandos directamente.Net desde cero by Xtriker Ahora nos preguntara los datos que debe de cargar la tabla.com/ . podemos hacer uso del generador de consultas o escribir directamente la consulta en el campo.blogspot. http://tips-de-programacion-vb.

y pues como es la unica tabla que tenemos para agregar cerramos.Enlazar bases de datos SQL con VB. Simplemente seleccionamos la tabla y le damos agregar para incluir la tabla en la consulta.blogspot. veremos que nuestra tabla aparece en la parte de arriba con sus respectivos campos. notaran que existe la opcion de agregar todos los campos esta opcion no nos conviene ya que lo que http://tips-de-programacion-vb. y aqui va un tip. seleccionamos nuestra tabla "Personas" previamente creada.Net desde cero by Xtriker En el momento que iniciemos el generador de consultas nos preguntara que tabla (o tablas) queremos agregar a nuestra consulta. seleccionaremos los campos uno por uno.com/ .

Enlazar bases de datos SQL con VB. notemos que los campos apareceran en nuestra tabla de acuerdo al orden en que los seleccionamos.com/ . pero imaginemos una tabla con muchos campos y necesitamos un orden especifico para ellos.Net desde cero by Xtriker hara es un SELECT * y esto no nos ordenara nuestros datos.blogspot. http://tips-de-programacion-vb. lo mejor sera establecer un orden que nos convenga. aunque nuestra tabla no tenga ningun registro. Una vez que ya tenemos nuestra consulta generada automaticamente hacemos click en Ejecutar consulta para ver que nos devuelve correctamente los campos. estos apareceran en el orden predeterminando. tal vez los agregemos en este orden de cualquier forma.

que para hacer un Delete por ejemplo tendriamos que introducir todos los datos de un registro. otro metodo que devuelve un DataTable. al cual podemos renombrar como ObtenerDatos para tenerlo identificado. la primera opcion no sera utilizada en este tutorial. en lugar de utilizar unicamente la llave primaria. nos aperecera en la pantalla algunos metodos que podemos agregar a nuestro TableAdapter. desactivamos esta opcion. esto nos sirve si queremos recuperar el ID del registro que insertamos (recordemos que es auto-incremental y se inserta automaticamente).com/ . Por ultimo tenemos la opcion Actualizar tabla de datos. en fin diversos valores escalares que puedan establecerse en la base de datos. o recuperar el numero de registros afectados. nos vamos a las opciones avanzadas en donde tenemos tres opciones. en su lugar haremos uso del metodo GetData. cuando le demos click en aceptar se cerrara el generador de consultas y volveremos al asistente para configuracion de nuestro TableAdapter. que implica esto. Cuando le demos click al siguiente. http://tips-de-programacion-vb.Enlazar bases de datos SQL con VB. que en este caso seria el ID de nuestra tabla personas. un metodo para llenar un DataTable. esta opcion modifica nuestras instrucciones update y delete para verificar que los datos no hallan sido modificados. la primera es para generar nuestras instrucciones Insert.blogspot. Antes de dale click a siguiente. asi que como esta no pretende ser una aplicacion distribuida y si lo mas simple posible. esta opcion debera estar activada para tener estas instrucciones en nuestro TableAdapter. Update y Delete. despues tenemos la opcion para Utilizar la concurrencia optimista. y los metodos para actualizar directamente la base de datos.Net desde cero by Xtriker Ahora si ya tenemos generada nuestra consulta para obtener los datos de nuestra tabla.

Net desde cero by Xtriker Entonces una vez renombrado nuestro metodo.Enlazar bases de datos SQL con VB.blogspot. 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.com/ .

necesitamos que dicha http://tips-de-programacion-vb. Update y Delete eso quiere decir que algo esta mal en nuestra consulta. asi que hagamos click de nuevo en nuestro table Adapter.Net desde cero by Xtriker En caso de que no les genere los metodos Insert.com/ . Una vez que le demos click a Finalizar podemos ver que aparece nuestro TableAdapter con sus respectivos campos y nuestro metodo ObtenerDatos Listo. pero. que pasa si necesitamos un metodo extra. saber cuantos registros hay. por ejemplo. etc Para esto necesitamos agregar una nueva consulta.Enlazar bases de datos SQL con VB. tal vez faltan campos o la estructura de la consulta no es correcta. y ahora seleccionamos agregar-nueva consulta. o mostrar los datos de personas por rangos de edades.blogspot. asi que vamos a generar un ejemplo para obtener las personas que tengan una edad menor a la que nosotros indiquemos. ahora tenemos nuestra Tabla en un TableAdapter en donde podemos manipular nuestros datos con los metodos generados.

vemos que tambien podemos generar insert. http://tips-de-programacion-vb. en realidad lo pueden nombrar como uds quieran.blogspot.com/ . como nuestra consulta va a obtener varias filas. en caso de utilizar alguna consulta como Count o alguna otra funcion escalar pues seleccionamos un select que devuleve un solo valor. Podemos ver que tenemos varios tipos de consultas a generar. nombre. este parametro lo nombramos “edad “ solo como referencia. edad Personas (edad < @edad) Ahora notemos que la variable edad le colocamos un “@”. como en este caso que es autoincremental). Ahora podemos generar otra consulta.Net desde cero by Xtriker consulta sea parametrizada. 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. quedaria asi: SELECT FROM WHERE ID. con la ayuda de la funcion SCOPE_IDENTITY(). eso quiere decir que nuestro Datatable tendra solo los registros con la edad menor al parametro que le pasemos.Enlazar bases de datos SQL con VB. seleccionamos la consulta select que devuelve varias filas. o borrar datos de varias tablas a la vez. esta vez vamos a hacerlo directo sin utilizar el generador automatico ya que es una consulta sencilla. apellido. update y delete customizados. eso significa que es el parametro de nuestra consulta. asi que en cuanto seleccionemos agregar nueva consulta vamos a ver de nuevo el asistente para agregar consultas (el mismo que vimos cuando insertamos nuetros campos en la tabla) y seleccionamos de nuevo usar intrucciones SQL. y el parametro que necesita es justamente la edad.

Enlazar bases de datos SQL con VB.blogspot. nuevamente nos va a preguntar si queremos que nos devuelva un datatable o que rellene un datatable.Net desde cero by Xtriker Ok.com/ . asi que solo utilicemos la funcion que obtiene el datatable. en este caso la renombrare como ObtienePersonasMenoresAEdad http://tips-de-programacion-vb.

blogspot. en cuanto le demos finalizar tendremos estructurada nuestra nueva consulta. podemos ver que tiene como parametro de entrada la edad. pero primero solo para asegurar.Net desde cero by Xtriker ahora si. asi que la seleccionamos y con un click derecho le damos “Vista previa de datos”. vamos a probar nuestra consulta.Enlazar bases de datos SQL con VB. tenemos nuestra capa de acceso a datos funcionando y lista para generarse.com/ . listo. http://tips-de-programacion-vb.

esto nos devolvera un registro Null.Net desde cero by Xtriker Ahora nos preguntara la edad. ya que nuestra tabla no tiene valores.com/ .blogspot.Enlazar bases de datos SQL con VB. http://tips-de-programacion-vb. entonces ahi le daremos el parametro de entrada. pero ya estaremos seguros de que nuestra consulta es correcta.

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. nos vamos al menu Generar y generamos nuestra libreria de acceso a datos.Net desde cero by Xtriker Ok. http://tips-de-programacion-vb. con el nombre Test001(Datos).Enlazar bases de datos SQL con VB.blogspot.dll. ahora podemos cerrar nuestro proyecto.com/ . Ok. asi que pasemos a la siguiente etapa que es generar nuestra capa de negocios. este es el binario de todo lo que hemos hecho en esta capa. ya estamos listos para pasar a la siguiente capa. vamos a generar nuestra solucion.

Enlazar bases de datos SQL con VB. 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. asi que le pondremos el nombre de nuestra tabla mediante el explorador de soluciones click derecho-Cambiar nombre y renombramos nuestra clase Personas. asi que en el menu proyecto. ahora solo nos queda ligar nuestra capa de negocios con nuestra capa de datos para comenzar a codificar.Net desde cero by Xtriker CAPA DE NEGOCIOS A partir de aqui nos enfocaremos mas en el codigo hasta que pasemos a nuestra capa de presentacion.blogspot.com/ . pero ya que solo manejamos una tabla solo crearemos esta clase.vb Aqui hay que crear tantas clases como tablas tenemos en nuestra base de datos. renombremos esta clase para matenernos en el mismo contexto. seleccionamos la opcion agregar referencia http://tips-de-programacion-vb. una vez creado el proyecto esta vez no eliminaremos la clase generada por Visual studio. nombrare el proyecto Test001(negocios) como ya lo han de suponer.

Cuando le demos aceptar tendremos completamente ligadas las funciones de nuestra capa de datos.Net desde cero by Xtriker En la ventana de agregar referencia.dll para tener referenciadas ambas capas.com/ . nos posicionamos en la pestaña de examinar y localizamos nuestra capa de datos Test001(Datos). asi que solo nos basta importarlas a nuestra clase. con la sentencia imports http://tips-de-programacion-vb.Enlazar bases de datos SQL con VB.blogspot.

pero ¿como lo obtenemos?. Asi que con nuestra propiedad personas obtendremos nuestro table adapter para comenzar a utilizar nuestras consultas. y lo definimos como nulo. pero en realidad nos estamos refiriendo al objeto ya creado. 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. necesitamos hacerlo mediante una propiedad.TestDataSetTableAdapters Imports Test001_Datos_.Enlazar bases de datos SQL con VB. ByVal Apellido As String. 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. Ok espero que no los halla enrredado.com/ . Imports Test001_Datos_. esto para que. 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. pero ¿por que no utilizamos New? podrian preguntarse. 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. todo lo haremos mediante la capa de negocios.blogspot. y pues lo devolvemos (Return _Personas). recordemos que no pretendemos trabajar directamente con los datos desde aqui. asi que para obtener nuestro table adapter. _ ByVal edad As Integer) As Boolean 'Aqui va el contenido de nuestra funcion http://tips-de-programacion-vb. declaramos la variable _Personas como un TableAdapter.TestDataSet Public Class Personas End Class Tenemos ya listo todo para obtener nuestro objeto TableAdapter de nuestra capa de datos.Net desde cero by Xtriker 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.TestDataSetTableAdapters Imports Test001_Datos_.

asi que una vez que tengamos nuestra funcion. pues resulta que el insert por defecto devuelve el numero de registros afectados. Public Function InsertaPersona(ByVal Nombre As String.com/ . con exepcion de el id ya que este se agrega automaticamente Tal vez se pregunten por que declare la funcion como boolean.blogspot.Insert(Nombre. Y este seria el codigo retornando nuestro valor convertido a boleano http://tips-de-programacion-vb. podremos ver que conforme la vamos escribiendo el intellisense nos va indicando los datos que necesitamos. devolvemos el resultado del insert convertido en un boleano. _ ByVal edad As Integer) As Boolean Return CBool(Personas. ByVal Apellido As String. recuerdan que desactivamos la opcion de concurrencia optimista en la capa de datos. edad)) End Function ok ahora hagamos lo mismo con el codigo para eliminar. bueno pues gracias a esto la funcion de eliminar solo nos solicita el ID.Enlazar bases de datos SQL con VB.Net desde cero by Xtriker End Function Ahora solo falta llamar a la propiedad Personas y utilizar su funcion insert. asi podemos saber si la operacion se realizo correctamente. Apellido.

bueno pues te dejo el codigo completo de la clase http://tips-de-programacion-vb. ¿sencillo no?.ObtienePersonasMenoresAEdad(Edad) End Function Ok. tambien es algo muy facil. _ ByVal edad As Integer. Public Function ObtienePersonas() As PersonasDataTable Return Personas. Public Function ObtienePersonasMenoresAEdad(ByVal Edad As Integer) As PersonasDataTable Return Personas.com/ .blogspot. siguiendo la misma estructura La funcion update es una funcion con 6 sobrecargas asi que utilicemos la llamada donde solo nos solicita los campos y el id original entonces quedaria asi: Public Function ModificaPersona(ByVal Nombre As String.Net desde cero by Xtriker Public Function EliminaPersona(ByVal ID As Integer) As Boolean Return CBool(Personas.Enlazar bases de datos SQL con VB.ObtenerDatos() End Function Ahora ya tenemos la funcion que nos retorna nuestro data table. borrar y actualizar. entoces ya tenemos nuestras funciones para insertar. edad. ahora basta agregar la funcion para obtener el datatable resultante de la consulta del rango de edades. asi de sencillo !.Delete(ID)) End Function Ahora solo nos falta modificar. esta lista la capa de negocios. ByVal ID As Integer) As Boolean Return CBool(Personas. ID)) End Function Ok. asi que el tipo de dato a manejar sera el datatable de nuestro set de datos. apellido.Update(Nombre. ahora coloquemos la funcion para obtener nuestro datatable. ByVal apellido As String.

_ ByVal edad As Integer.Delete(ID)) End Function Public Function ModificaPersona(ByVal Nombre As String. ByVal ID As Integer) As Boolean Return CBool(Personas. edad. ByVal Apellido As String.com/ .Update(Nombre.Insert(Nombre. edad)) End Function Public Function EliminaPersona(ByVal ID As Integer) As Boolean Return CBool(Personas.TestDataSetTableAdapters Imports Test001_Datos_. apellido.Net desde cero by Xtriker para asegurarnos que no omitimos nada Imports Test001_Datos_.Enlazar bases de datos SQL con VB.ObtienePersonasMenoresAEdad(Edad) End Function http://tips-de-programacion-vb. ID)) End Function Public Function ObtienePersonas() As PersonasDataTable Return Personas. Apellido.blogspot. ByVal apellido As String.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.ObtenerDatos() End Function Public Function ObtienePersonasMenoresAEdad(ByVal Edad As Integer) As PersonasDataTable Return Personas. _ ByVal edad As Integer) As Boolean Return CBool(Personas.

ya tenemos nuestras capas referenciadas y listas para manipular datos. veremos que ahi tenemos nuestras dlls de datos y negocio ya que nuestra capa de negocio ahora es dependiente de nuestra capa de datos.Enlazar bases de datos SQL con VB. asi que nuevamente le damos al menu proyecto-agregar referencia.com/ . CAPA DE PRESENTACION Ok.blogspot.Net desde cero by Xtriker End Class Ok. ahora generemos nuestra solucion. asi que ahora dediquemonos a diseñar 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. y en la pestaña examinar nos vamos a la carpeta Release de nuestra capa de negocios. http://tips-de-programacion-vb. asi que agregemos ambas librerias y le damos aceptar.

ahora vamos a agregar los controles a utilizar. Asi que despues de insertar los controles mi UI quedo asi: http://tips-de-programacion-vb. 4 textBox para los campos.Net desde cero by Xtriker Ok. 4 labels y 5 botones. un DataGridView para mostrar los datos. ya tenemos referenciadas nuestras capas. ya que lo que lo importante en este tutorial es la funcionalidad.blogspot. asi que ya dejo a su criterio como ordenen los controles.com/ .Enlazar bases de datos SQL con VB. voy a hacer una interfaz muy sencilla. si quieren algo mas ordenado podrian crear un Form aparte para añadir registros pero eso ya es a su criterio y una vez que dominen esta metodologia. asi que agregare un boton para cada accion.

no tiene gran ciencia.Net desde cero by Xtriker Bueno pues esto solo es cosa de arrastrar y soltar desde el tool box. lo que si les recomiendo es que dentro de su esquema ( Ver – otras ventanas – Esquema del documento ó Ctrl + Alt + T) coloquen nombres descriptivos para cada control ya que si tienen muchos controles.Enlazar bases de datos SQL con VB. el nombre de ButtonModificar sera mas descriptivo que Button3 por poner un ejemplo. asi que en nuestro esquema le damos click derecho en el nombre del control y le damos Cambiar nombre.blogspot. http://tips-de-programacion-vb.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. hacemos lo mismo para cada control.

blogspot.Net desde cero by Xtriker Vamos a darles los textos adecuados a nuestros controles.com/ . en la ventana de propiedades modificamos la propiedades Text para cada uno. descriptiva y ordenada. hacemos click en la pequeña flecha que aparece en la esquina superior derecha de nuestro DataGrid. aqui dejo la captura de mi interfaz Ahora agregemos el origen de datos a nuestro DataGrid.Enlazar bases de datos SQL con VB. ahora que ya tenemos nuestra interfaz lista. http://tips-de-programacion-vb. Ok.

Nos va a salir un asistente preguntandonos de donde obtendra la aplicacion los datos. de un servicio o de un objeto.Enlazar bases de datos SQL con VB.blogspot. asi que seleccionamos Objeto http://tips-de-programacion-vb.Net desde cero by Xtriker Desplegamos el combobox donde dice Elegir origen de datos. seleccionamos la opcion de agregar nuevo origen de datos al proyecto.com/ . de una base de datos.

asi que desplegemos nuestra capa de datos y seleccionemos nuestro DataSet http://tips-de-programacion-vb.Enlazar bases de datos SQL con VB.Net desde cero by Xtriker Al darle siguiene veremos que estan presentes nuestras capas. las cuales podemos desplegar para ver los objetos que hay en ellas.blogspot.com/ .

blogspot. esto nos va a generar el objeto PersonasBindingSource. Ahora ya tenemos nuetro datagrid con los datos cargados. que es nuestro enlace a los registros. asi se seleccionara la http://tips-de-programacion-vb. En este caso voy a deshabilitar la edicion del datagrid para que el usuario no edite los campos para seleccionar voy a establecer la propíedad SelectionMode en FullRowSelect.Net desde cero by Xtriker 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.com/ .Enlazar bases de datos SQL con VB.

codifiquemos nuestra aplicacion.Net desde cero by Xtriker fila completa. Imports Test001_negocios_ Public Class Form1 Private personas As New Personas End Class http://tips-de-programacion-vb. Tambien la propiedad Multiselect la establecere en False para evitar seleccion multiple Ok. la clase para este objerto esta en nuestra capa de negocios. asi que declaramos.Enlazar bases de datos SQL con VB.blogspot.com/ . 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.

y vamos a llenar con nuestros registros el origen de datos.Object.ObtienePersonas() Catch ex As Exception 'En caso de error mandamos el mensaje de error en un messagebox MessageBox.Enlazar bases de datos SQL con VB. esto lo hacemos con la sentencia TryCatch.Show(ex.Message.DataSource = personas. asi que le colocamos la funcion que declaramos en nuestra capa de negocios para obtener nuetro datatable Personas.Load Try PersonasBindingSource. MessageBoxIcon.OK. ¿Ehh?.Object. ByVal e As System.EventArgs) Handles MyBase. Private Sub Form1_Load(ByVal sender As System.Load End Sub End Class En este evento vamos a cargar nuestro data table como el datasource de nuestro objeto BindingSource.Net desde cero by Xtriker Ok entonces volvemos a nuestro diseñador (Ctrl + F7) y le damos doble click a nuestro Form.EventArgs) Handles MyBase.DataSource = personas. "Error".Object.ObtienePersonas() End Sub Y como buenos programadores que somos vamos a manejar los posibles errores que se puedan presentar.com/ . esto nos va a generar el codigo para el evento form load Imports Test001_negocios_ Public Class Form1 Private personas As New Personas Private Sub Form1_Load(ByVal sender As System.EventArgs) Handles MyBase. como el hecho de que la conexion no este disponible.blogspot.Error) End Try End Sub http://tips-de-programacion-vb.ObtienePersonas Private Sub Form1_Load(ByVal sender As System. ByVal e As System. esto significa que vamos a obtener nuestra tabla.Load PersonasBindingSource. MessageBoxButtons. ByVal e As System.

DataSource = personas. MessageBoxIcon.RowCount = 0 Then Exit Sub Else Try 'Pedimos confirmacion del usuario If MessageBox.Text.Cells(0). MessageBoxButtons.Value)) 'Eliminamos con nuestra funcion http://tips-de-programacion-vb.Show("Esta seguro de que desea eliminar el registro".Click If TextBoxNombre. _ MessageBoxIcon. MessageBoxButtons.Click 'Checamos que exista una seleccion en el datagrid If DataGridViewPersonas.Text. "Agregar".Enlazar bases de datos SQL con VB. en el diseñador.EventArgs) Handles ButtonAgrega. _ MessageBoxButtons.YesNo.Text = "" Or TextBoxEdad.ObtienePersonas() 'Volvemos a llenar nuestro binding source Catch ex As Exception MessageBox.InsertaPersona(TextBoxNombre.Show(ex. 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 .Net desde cero by Xtriker Ok listo.Text = "" Then 'Validamos que nada este en blanco MessageBox. volvemos a llenar nuestra tabla despues de agregar.com/ .Object.Forms.OK.EliminaPersona(CInt(DataGridViewPersonas.OK.Show("Algunos datos estan en blanco".Message. le damos doble click al boton de Agregar para que nos genere el evento del click y ahi agregamos el nuevo dato no sin antes validar nuestros campos. Cint(TextBoxEdad.DialogResult. y pues como lo elimina completamente colocamos un MessageBox de advertencia para evitar eliminar registros por error. ByVal e As System.Yes Then personas.Error) 'Para Cualquier error de conexion a datos End Try End If End Sub Primiero checamos que no esten en blanco nuestros campos. "Eliminar".blogspot. ByVal e As System.Question) = Windows.Object.CurrentRow. hemos llenado el binding source.Text = "" Or TextBoxApellido. solo falta actualizar Private Sub ButtonElimina_Click(ByVal sender As System. ahora vamonos con las acciones de los botones. ahora si. Private Sub ButtonAgrega_Click(ByVal sender As System. MessageBoxIcon. TextBoxApellido. una vez verificado eso utilizamos la funcion InsertaPersona que esta en nuestra capa de negocios.Warning) Else Try personas. "Error".EventArgs) Handles ButtonElimina.Text)) 'Funcion de insercion PersonasBindingSource.

todos con sus respectivos Try catch para no tener problemas de exepciones.CurrentRow.Click 'Validamos espacios en blanco If TextBoxNombre. MessageBoxButtons.Text = "" Then MessageBox.Text. Private Sub ButtonConsulta_Click(ByVal sender As System.Object.Warning) Exit Sub 'Tambien validamos que exista un dato seleccionado ElseIf DataGridViewPersonas. "Consultar".OK.Text.OK.Text = "" Then MessageBox. MessageBoxIcon.Text = "" Or TextBoxEdad. _ MessageBoxIcon.com/ .Value)) 'Modificamos y actualizamos los datos recordemos que hay que convertir el valor a entero PersonasBindingSource. "Modificar". MessageBoxButtons.ObtienePersonas() Catch ex As Exception MessageBox.Show("Algunos datos estan en blanco". MessageBoxIcon. MessageBoxButtons.Text = "" Or TextBoxApellido. "Error". _ Cint(DataGridViewPersonas.Show(ex.DataSource = personas.Show("No ha seleccionado ningun registro". al igual que en las anteriores validamos. MessageBoxButtons.DataSource = personas. Cint(TextBoxEdad.Message.Message.Error) End Try End If End Sub Aqui hay que verificar ambas cosas que no haya espacios en blanco y que exista un registro seleccionado.ObtienePersonas() 'Llenamos de nuevo el BindingSource End If Catch ex As Exception MessageBox. _ MessageBoxIcon.ModificaPersona(TextBoxNombre.EventArgs) Handles ButtonActualiza.RowCount <> 0 Then Try personas.Show("No ha escrito ninguna edad".OK.Net desde cero by Xtriker PersonasBindingSource.OK.Error) End Try Else MessageBox. ByVal e As System.OK. ByVal e As System.Enlazar bases de datos SQL con VB. Private Sub ButtonActualiza_Click(ByVal sender As System.Show(ex. "Error".Warning) End If End Sub Ahora solo falta el de la consulta de las edades. MessageBoxButtons.EventArgs) Handles _ ButtonConsulta. MessageBoxIcon.Text).blogspot.Click If TextBoxConsulta. "Modificar".Object.Cells(0).Warning) Exit Sub Else Try http://tips-de-programacion-vb. TextBoxApellido.

Cells(0).CurrentRow.Close() en el evento click del boton Salir .Click If TextBoxNombre. MessageBoxIcon.Text = "" Then MessageBox.Text)) 'Llenamos el binding source con el valor de la caja de texto de a consulta convertido a entero Catch ex As Exception MessageBox.blogspot. 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.OK.OK.Message.DataSource = personas.Warning) Else Try personas.EventArgs) Handles MyBase.RowCount = 0 Then Exit Sub Else Try If MessageBox.Object.DialogResult.Error) End Try End If End Sub Private Sub ButtonElimina_Click(ByVal sender As System.Yes Then personas. MessageBoxIcon.OK.com/ . "Agregar".ObtienePersonasMenoresAEdad(CInt(TextBoxConsulta.Text.ObtienePersonas() Catch ex As Exception MessageBox.EventArgs) Handles ButtonAgrega.Text = "" Or TextBoxApellido. "Error". ByVal e As System. MessageBoxIcon. MessageBoxIcon.Click If DataGridViewPersonas. MessageBoxButtons.EventArgs) Handles ButtonElimina.ObtienePersonas() http://tips-de-programacion-vb.Object.Load Try PersonasBindingSource.Question) = Windows. ByVal e As System.Show(ex.DataSource = personas.Text = "" Or TextBoxEdad.OK.Error) End Try End Sub Private Sub ButtonAgrega_Click(ByVal sender As System.InsertaPersona(TextBoxNombre.Net desde cero by Xtriker PersonasBindingSource. es facil con la funcion TryParse.Message. "Error".Object.Forms.Show("Esta seguro de que desea eliminar el registro".Error) End Try End If End Sub Solo falta agregar el Me. pero eso ya se los dejo a uds. este es el codigo completo Imports Test001_negocios_ Public Class Form1 Private personas As New Personas Private Sub Form1_Load(ByVal sender As System. MessageBoxButtons.Show("Algunos datos estan en blanco".Value)) PersonasBindingSource.ObtienePersonas() Catch ex As Exception MessageBox. MessageBoxButtons.DataSource = personas.Show(ex.YesNo. asi que vamos a probar nuestra aplicacion.DataSource = personas.Enlazar bases de datos SQL con VB. _ MessageBoxButtons.Show(ex. ByVal e As System. MessageBoxButtons. "Eliminar".Message.Text)) PersonasBindingSource. "Error". CInt(TextBoxEdad. TextBoxApellido. MessageBoxIcon.EliminaPersona(CInt(DataGridViewPersonas. ahora pueden implementar distintas cosas mas a su aplicacion.Text.

Cells(0). MessageBoxIcon.EventArgs) Handles ButtonConsulta..blogspot.com/ .ObtienePersonasMenoresAEdad(CInt(TextBoxConsulta. MessageBoxIcon.Text = "" Or TextBoxApellido.OK.Error) End Try End If End Sub Private Sub ButtonSalir_Click(ByVal sender As System..Text.Warning) ElseIf DataGridViewPersonas. MessageBoxIcon.EventArgs) Handles ButtonSalir. MessageBoxButtons.Show(ex. menus contextuales.Message. etc.ModificaPersona(TextBoxNombre. "Modificar".EventArgs) Handles ButtonActualiza.Message.Object.Text = "" Then MessageBox.Show("No ha seleccionado ningun registro".CurrentRow. ByVal e As System. solo hay que embellecerlo un poco con otras funcionalidades o validaciones http://tips-de-programacion-vb. MessageBoxButtons.Text. TextBoxApellido.Object.OK.DataSource = personas.Show("Algunos datos estan en blanco". MessageBoxIcon.OK.DataSource = personas. MessageBoxButtons.Error) End Try End If End Sub Private Sub ButtonActualiza_Click(ByVal sender As System.Text = "" Then MessageBox.ObtienePersonas() Catch ex As Exception MessageBox.Close() End Sub End Class Solo generemos nuestro proyecto con generar para tenerlo compilado. CInt(DataGridViewPersonas.Text)) Catch ex As Exception MessageBox.RowCount <> 0 Then Try personas. aun faltan validaciones por hacer dejr en blanco los campos despues de insertar.Show("No ha escrito ninguna edad".Value)) PersonasBindingSource.Show(ex.. y posteriormente Depurar-Iniciar depuracion o simplemente F5 Les dejo algunas capturas.OK.Warning) End If End Sub Private Sub ButtonConsulta_Click(ByVal sender As System. CInt(TextBoxEdad. MessageBoxIcon.Text = "" Or TextBoxEdad. MessageBoxButtons. MessageBoxIcon.Click If TextBoxConsulta.Message. "Error". MessageBoxButtons. ByVal e As System.Warning) Exit Sub Else Try PersonasBindingSource. MessageBoxButtons. "Modificar".OK.Click Me.Text). pero lo basico ya esta listo.Net desde cero by Xtriker End If Catch ex As Exception MessageBox. ByVal e As System.Show(ex. "Error".Enlazar bases de datos SQL con VB.Error) End Try Else MessageBox.OK.Object. "Error".Click If TextBoxNombre. "Consultar".

Net desde cero by Xtriker http://tips-de-programacion-vb.com/ .Enlazar bases de datos SQL con VB.blogspot.

Net desde cero by Xtriker http://tips-de-programacion-vb.blogspot.Enlazar bases de datos SQL con VB.com/ .

Net desde cero by Xtriker http://tips-de-programacion-vb.Enlazar bases de datos SQL con VB.com/ .blogspot.

blogspot.com/ .Enlazar bases de datos SQL con VB.Net desde cero by Xtriker http://tips-de-programacion-vb.

peticion o error. http://tips-de-programacion-vb.blogspot.blogspot. si hago algun otro tutorial lo pondre en mi blog.com/ . comentario.Enlazar bases de datos SQL con VB.com/ http://tips-de-programacion-vb.Net desde cero by Xtriker Espero les sea de utilidad compañeros desarrolladores. agradeceria cualquier sugerencia.

Sign up to vote on this title
UsefulNot useful