Apuntes de Base de Datos Con Visual Basic
Apuntes de Base de Datos Con Visual Basic
Escribimos los campos que requiere la tabla. En nuestro caso: DNI, Apellido, Nombre, Dirección, Tel, Fecha de
Nacimiento y colocamos los tipos de datos que contendrán dichos campos: Texto, Texto, Texto, Texto, Texto,
Fecha/Hora… y quedará así:
Nota: Se sugiere escribir los nombres de los campos todo pegado como por ej: FechaNacim.
Luego de colocar todos los campos de la tabla, se guarda haciendo clic con el botón derecho en la ficha de la misma
tabla.
Se colocan los nombres a los objetos y se dan las propiedades que sean necesarias.
Luego, Siguiente.
Luego, “Nueva conexión…”
Nota: es posible que se encuentre con la extensión accdb y el icono es una llave de color rojizo o liliácea como se
muestra en la imagen.
Pulsamos Aceptar.
Pulsamos en “Sí”.
Pulsamos Siguiente.
Tildamos las 2 casillas de verificación:
Y pulsamos “Finalizar”
Elegimos la Base de Datos, y le cambiamos la propiedad: “Copiar en el directorio de resultados” elegimos “Copiar
si es posterior”.
Esto es para que no se blanqueen nuestros datos (en la Base de datos) cada vez que hacemos una modificación en el
código.
Bien… ya tenemos la Base de datos y el DataSet… ahora lo que falta es enlazar al Formulario.
Para eso, nos dirigimos al formulario y elegimos la grilla y luego el triangulito de la esquina (1).
Des tildamos las opciones indicadas con (2) y (3) si es que acaso no queremos realizar esas cosas en la grilla. Por lo
general esto sucede cuando se quiere visualizar los datos que se agregaron y también sirve para modificar los
mismos; pero no se pueden agregar datos manualmente en la grilla ni eliminarlos de la misma forma.
Se amplía todos los triangulitos de la rama del árbol hasta encontrar la tabla que queremos.
Una vez visualizada la tabla, la elegimos.
Luego en nuestro formulario, hacemos doble clic en el Botón de Guardar, para empezar a programar.
Luego de hacer la función Insert, se la debe refrescar con la línea de código que se crea sola en el evento load del
formulario.
Para una mejor estética del programa, se deben limpiar los cuadros de texto, cuadros desplegables, DataTimePicker,
o los controles que se hayan usado o que contengan texto. Y también se focaliza en primer cuadro de texto o el
control que queramos que tenga el cursor titilando o el foco.
Para eso, colocamos:
Podemos probar nuestro código, haciendo clic en el triangulo verde (o pulsando F5).
Hasta ahí, solo agregamos valores en nuestra tabla que se encuentra en la BD.
Este tipo de actualización (o modificación) se realiza cuando hacemos cambios en una grilla y queremos guardar los
mismos.
En la tabla que figura en nuestro DataSet, hacemos 1 clic en Fill, GetData() para que quede seleccionado y luego
sobre el mismo, 1 clic con el botón derecho del mouse.
Nos mostrará el siguiente cuadro:
Y pulsamos en Siguiente>
Nos pide que le creemos un nombre a nuestra función. En nuestro caso le colocaremos Eliminar y luego pulsamos en
Siguiente>
Nos aparecerá otro cuadro en donde solo nos queda la opción de Finalizar.
En el mensaje, debemos colocar con comillas dobles, todo el texto fijo que queramos que muestre nuestro mensaje,
si se observa, está intercalado con más (+) las variables que contienen los valores del DNI, Apellido y Nombre y luego
de haber puesto todo lo que queremos mostrar, deberemos colocar una coma (,) y elegir YesNo y cerrar paréntesis.
Esto es muy importante, ya que, si no lo hacemos, nuestro cuadro de mensaje no tendrá los botones de Sí y No y
solo tendrá el botón de Aceptar.
Después del paréntesis, lo tendremos que igualar con Yes o con No, según prefiramos.
Hacemos clic con el botón derecho del mouse en nuestra Base de Datos que está en el explorador de soluciones.
Y elegimos… Abrir con…
Nos saldrá un cuadro en el que tenemos que elegir “Microsoft Access” y presionamos Aceptar.
Se abrirá la base de datos con el programa Access
Luego hacemos clic en la ficha “Crear” y hacemos clic en “Diseño de Tabla”.
Rellenamos los nombres de los campos y colocamos los tipos de datos, como se muestra en la imagen de arriba.
Luego, en el campo de CodMateria hacemos clic con el botón derecho del mouse y establecemos la clave principal.
En nuestro proyecto de VB; si hacemos doble clic en nuestro DataSet, observamos que la nueva tabla no se
encuentra… entonces… ¿qué pasó?
Recordemos que la agregamos en la BD, no en el DataSet.
Entonces… para agregar la tabla al DataSet, se hace lo siguiente:
Hacemos doble clic en nuestra BD en el explorador de soluciones y nos mostrará a la izquierda, el explorador de base
de datos.
Si por algún motivo, la tabla que creamos, no aparece, debemos hacer un clic con el botón derecho del mouse acá:
Y elegimos, Actualizar.
Luego, insertamos otro formulario, haciendo clic con el botón derecho del mouse en el Explorador de Soluciones y
elegimos la opción que se muestra en la imagen.
Este texto permanecerá fijo en nuestro desplegable y a la hora de desplegarlo, mostrará dichos valores.
Programamos el botón Guardar. Hacemos un Insert con la tabla de Materias y una actualización de la misma.
Como vemos… en nuestro ejemplo… la Materia está asociada a un Profesor; pero no tenemos ningún profesor
guardado; o más bien, no tenemos ninguna tabla de Profesores. Por lo tanto, deberíamos crear una tabla de
profesores. Así que crearemos dicha tabla de la misma manera que creamos la tabla de Materias, quedando de esta
manera:
En “Origen de datos”, desplegamos y luego vamos cliqueando los triangulitos del árbol hasta que encontremos la
tabla con la que queremos enlazarlo.
Luego, en Mostrar miembro, elegimos, lo que queremos mostrar; en nuestro caso, el DNI.
Y en Miembro Valor, siempre elegiremos la clave principal; o sea: DNI.
Quedando de la siguiente manera:
Los cuadros de texto y desplegables, deben contener algo, porque sino se genera un error.
Bien…
Ya hemos creado varios formularios.
Para una mejor organización, se creará un formulario MDI principal que contendrá los formularios que hemos
creado; el mismo tendrá menús desde los cuales se llamarán a los formularios.
Entonces… para crear un formulario MDI, se hace lo mismo que se hace para agregar formularios; nada más que se
elige “Formulario primario MDI”, como muestra la figura:
Eliminamos la barra de herramientas y también todos los menús hasta dejarlo así:
Hacemos doble clic en el formulario y eliminamos todo el código que se creó solo.
Solo dejamos el Public Class y el End Class
Así:
Si ejecutamos nuestro programa, nos aparecerá el formulario de Alumnos. Por lo tanto, deberemos cambiar el
formulario que queremos que inicie cuando ejecutemos nuestro programa.
Para hacer esto, debemos hacer clic con el botón derecho en el nombre de nuestro proyecto en la ventana de
Explorador de soluciones y elegir “Propiedades”
Ejecutamos nuestro programa con play (o F5) y vemos que aparece nuestro formulario principal.
Lo cerramos y seguimos programando…
PRECAUCIÓN!!: Si se elimina una tabla del DataSet, luego debe ser colocada, sino ocasiona un fallo en el formulario
que no se encuentre la tabla. Por lo tanto, si no se va a usar una tabla en un formulario, debe eliminarse primero en
el formulario y luego en el DataSet.
Como vemos, se colocaron objetos que hacían falta y, además, se quitó la grilla y se colocó otra enlazada con la tabla
de alumnos. Además, se colocó un control OpenFileDialog para abrir la imagen o foto del alumno.
En el desplegable de piso, se cargarán los valores de 0 a 255; esto se realiza en el evento Load del formulario,
quedando de la siguiente manera:
En los desplegables de País, Provincia, Departamento y Ciudad, establecemos las siguientes propiedades:
Luego se elige la tabla que queramos agregar y pulsamos “Agregar” y cerramos el cuadro una vez agregadas todas
nuestras tablas.
Luego para relacionarlas, se arrastra la clave principal desde la tabla primaria a la clave foránea de la tabla
secundaria. Ej.: de País se arrastra CodPais, a la tabla de Provincia y se suelta en CodPais.
Se repiten los pasos 1, 2 y 3 hasta que los campos seleccionados queden como se muestra en la imagen de abajo.
Cerramos el Access y regresamos al Visual Basic y en el DataSet, colocamos todas las tablas que hemos creado.
La consulta, no se encuentra dentro de la carpeta Tablas en nuestro explorador de bases de datos; aquella se
encuentra dentro la carpeta Vistas.
En el formulario de Lugar, enlazamos nuestros desplegables con las tablas, los miembros a mostrar y los miembros
valores, correspondientes.
También enlazamos la grilla a la vista y en la grilla des tildamos todas las opciones para que solo se pueda elegir y no
modificar.
Estas serán banderas que se activarán (o se colocarán en verdadero) cuando se presione alguna tecla en el cuadro de
texto del despegable; esto indica que se está escribiendo en el mismo. En el caso de elegir un elemento de la lista, la
variable se colocará en falso.
En definitiva… sirven para ver si se escribió o no en el cuadro de texto del desplegable.
Y dentro, lo siguiente:
Nota: en el filtro se escribe (con comillas dobles) el campo que se quiere filtrar seguido de un igual y luego se le
agrega con más el valor por el que se lo quiere filtrar; en nuestro caso, el SelectedValue del País que se seleccionó en
el desplegable del País. Este filtro, filtrará todas las provincias que tengan como número de país lo que se haya
elegido en el desplegable de país.
Luego, elegimos el evento KeyPress del desplegable de país y en el código escribimos lo siguiente:
Explicación: lo que hacen los IF es preguntar si se escribió en el cuadro de texto del desplegable, si se escribió,
entonces agrega el texto a la tabla; sino, guarda en la variable el código del elemento elegido.
Luego de haber insertado o no los nuevos registros, se eliminan todos los filtros y se hace un refresco de todas las
tablas y vistas. Por último, se limpian todos los cuadros de texto de los desplegables.
Importante!!
Habría que enlazar los desplegables correspondientes a País, Provincia, Departamento y Localidad en el formulario
de Alumnos. Como pueden ser 2 lugares diferentes (el de nacimiento y el actual) se tendrá que elegir nuevamente el
origen de datos para los desplegables que queramos que tengan un origen diferente. Esto se realiza ya que si se elije
el mismo origen de datos tanto en el lugar de nacimiento como en el actual; al momento de elegir en uno, cambian
los datos en el otro. Por eso se elige un origen diferente. Quedando así los Bindingsource con un 1 al final.
Además, al código de arriba, habría que agregarle después el refresco de todas las tablas (en este formulario); el
refresco en el formulario de alumnos. Así de esta manera, ya veremos dichos datos agregados en ese formulario.
Quedaría así:
Cuando realizamos la inserción de datos en la tabla, se nos puede olvidar la clave principal (o primaria) que ya hemos
introducido previamente; si es así, nuestro programa se detendrá diciendo que ya hay una clave principal igual.
Para evitar esto, debemos preguntar antes de guardar los datos, si ya existe una clave igual a la que queremos
insertar en la tabla.
Entonces, realizamos lo siguiente:
Como se ve, no existe nada que traiga el precio unitario de nuestro producto, por lo tanto, debemos programar lo
siguiente:
En el evento SelectedIndexChanged del cuadro desplegable, escribimos lo siguiente:
Nota: Las filas pintadas de celeste corresponden a el nombre de los campos y el número de fila (el cual no es
ingresado).
Los índices de nuestro desplegable, coinciden con los números de filas en nuestra tabla (Más allá de si se elimina
algún artículo, los índices y las filas serán los mismos).
En nuestro caso, en el desplegable, tenemos:
Como se ve, los índices del desplegable, son iguales que los números de fila de la tabla.
En el caso que se elimine alguno, los índices se reajustarán para coincidir en ambos casos.
Entonces…
Cuando se elige: Ciruela, se está eligiendo también el índice 2 del desplegable.
Y luego, para obtener el precio unitario que corresponda con la fila 2, se usa la función GetData.
A veces necesitamos hacer un filtro de nuestros datos y mostrar solamente los que cumplan determinados valores
que se encuentren entre tal y tal valor.
Por lo general se usa este filtro con las fechas y con valores numéricos.
Veamos un ejemplo de filtro entre fechas.
Nuestro formulario, tiene los siguientes controles:
4to) Escribimos en la fila correspondiente a FechaElaboración: >=? Y en la columna “O”: <=?; quedando de esta
manera:
5to) Hay que cambiar la sentencia SQL. Donde hay un OR, debe ser reemplazado por un AND.
Se presiona “Aceptar”
Y en el código del botón “Filtrar” colocamos lo que generó por sí solo el programa. (Lo cortamos de la subrutina y lo
pegamos en el botón).
Si deseamos saber el valor más alto de un campo de la tabla, debemos abrir nuestro Dataset y luego hacer una
consulta en la tabla.
Suponiendo que ya hemos cargado (o insertado) los valores en la tabla, procedemos a realizar el siguiente
formulario:
Nota: si se quiere buscar el valor más pequeño, se realiza lo mismo, pero en vez de usar Max, se usa Min.
IMPORTANTE!!!
Además de las funciones MAX y MIN, podemos realizar la suma de todos los registros de un determinado campo,
eligiendo la función SUM; si se quiere saber el promedio, se elige AVG; si se quiere averiguar cuantos registros tiene
la tabla, se usa COUNT (que es el predeterminado).
Veamos un ejemplo…
Tenemos nuestra tabla llamada “Empleados” y dentro de ella, almacenamos:
El DNI.
El Apellido.
El Nombre.
La Dirección.
La Fecha de Nacimiento.
El Salario
Y supongamos que nos piden que filtremos todos los Apellidos y Nombres de empleados que tengan el salario mayor
al promedio de los salarios ingresados.
En nuestra tabla en el DataSet, deberemos agregar una consulta “SELECT que devuelve filas” (la primera opción del
asistente de consultas) y luego escribir manualmente toda nuestra consulta de la siguiente manera.
SELECT Apellido, Nombre FROM Empleados WHERE Salario > (SELECT AVG(Salario) FROM Empleados)