Cómo crear una base de datos en Access con Visual Basic Introducción La combinación de Microsoft Access y Microsoft Visual Basic nos proporciona una excelente herramienta para la creación de bases de datos (Access) y su acceso (Visual Basic) que nos permite administrar nuestras colecciones de audio, libros, video, etc. este ejercicio nos permitirá concebir y construir bases de datos que se amolden a nuestras necesidades particulares, asumiendo que tienes conocimientos más que básicos de Visual Basic, sin más, manos a la obra. Inicio de Visual Basic a) Haz clic en el botón Inicio, señala Todos los programas. b) Haz clic en Microsoft Visual Studio 6.0, Microsoft Visual Basic 6.0. Inicio del Proyecto a) Crea una carpeta que será exclusiva para el ejercicio se llamará: “mibasededatos” para guardar todos los componentes del proyecto. b) Por el momento no haremos nada con el formulario de inicio. Creación de la base de datos a) Haz clic en el botón Complementos de la barra de herramientas. b) Haz clic en Administrador visual de datos… 1 de 85 Cómo crear una base de datos en Access con Visual Basic c) Y se abrirá el Administrador visual de datos (VisData (Visual Data Manager)). d) Haz clic en Archivo, Nuevo…, Microsoft Access, MDB de la versión 7.0… 2 de 85 Cómo crear una base de datos en Access con Visual Basic e) En la caja Seleccione la base de datos de Microsoft Access que desea crear, en Guardar en, busca y selecciona la misma carpeta –creada anteriormente- en donde se guardará el proyecto, en Nombre: escribe un nombre que identifique la base de datos (usualmente el mismo nombre de la carpeta) y haz clic en Guardar. 3 de 85 Cómo crear una base de datos en Access con Visual Basic f) Ahora aparece nuevamente el Administrador visual de datos mostrando en la barra de título la ruta de acceso de nuestra base de datos y lista para empezar a trabajar. 4 de 85 Cómo crear una base de datos en Access con Visual Basic Creación de las tablas de la base de datos a) Haz clic con el botón derecho del ratón dentro de la Ventana de base de datos y haz clic en Nueva tabla. 5 de 85 Cómo crear una base de datos en Access con Visual Basic b) En la caja Estructura de tabla, Nombre de la tabla: escribe el nombre de la tabla, para el ejercicio la tabla se llamará Alumnos, y haz clic en Agregar campo. 6 de 85 Cómo crear una base de datos en Access con Visual Basic c) En la caja Agregar campo, Nombre: escribe el nombre del primer campo de la tabla que estamos creando, para el ejercicio agregaremos cuatro campos, a saber: matricula, nombre, carrera y turno. d) En Tipo: selecciona el tipo de datos que contendrá el campo, en nuestro caso serán: - campo: matricula, tipo de datos: long, tamaño: (automático) - campo: nombre, tipo de datos: texto, tamaño: 50 - campo: carrera, tipo de datos: texto, tamaño: 50 - campo: turno, tipo de datos: texto, tamaño: 20 e) En Tamaño: selecciona la cantidad de caracteres (incluyendo espacios) que tendrá el campo (ver arriba) y haz clic en Aceptar. f) Para agregar los otros campos de la tabla, haz clic en Agregar campo y repite los pasos desde el punto “c)” (Nombre, Tipo y Tamaño) para cada campo que tendrá la tabla. 7 de 85 Cómo crear una base de datos en Access con Visual Basic g) Cuando hayas agregado los campos de la tabla haz clic en el botón Generar la tabla. 8 de 85 Cómo crear una base de datos en Access con Visual Basic h) Y la tabla la podrás ver en el Administrador visual de datos (VisData). i) Repite los pasos –desde el punto “a)” para cada tabla que tendrá la base de datos. 9 de 85 Cómo crear una base de datos en Access con Visual Basic Introduciendo la información en las tablas a) Haz clic con el botón derecho del ratón en la tabla recién creada de la base de datos y haz clic en Abrir. 10 de 85 Cómo crear una base de datos en Access con Visual Basic b) Y se mostrará la caja Dynaset con el nombre de la tabla, en nuestro caso: Alumnos. Haz clic en Agregar para empezar a introducir la información en los campos del primer registro. c) Cuando termines de introducir la información en la última caja de texto, haz clic en Actualizar. Repite los pasos para cada registro de la Tabla. d) Repite los pasos para introducir la información para cada tabla de la base de datos. 11 de 85 Cómo crear una base de datos en Access con Visual Basic Preparando los formularios En un formulario de Visual Basic crea las etiquetas necesarias que correspondan –modificando su propiedad Caption- con los nombres de los campos de la tabla Alumnos, a saber, Matrícula, Nombre, Carrera y Turno. Crea las cajas de texto –dejando en blanco su propiedad Text- necesarias para mostrar el contenido de los campos y un control Data, repite los pasos para cada tabla que tengas en tu base de datos. Haz clic en el menú Proyecto, Componentes, selecciona el componente Microsoft FlexGrid Control 6.0 y haz clic en Aceptar. Ahora el objeto se halla en la Caja de herramientas, dibújalo en el formulario para que se vea más o menos como se ve abajo. 12 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la conexión con la base de datos y la tabla 1. Conectando el control Data a) Selecciona el control Data y modifica sus propiedades como sigue: b) DatabaseName: localiza la carpeta del proyecto y selecciona la base de datos (mibasededatos) en donde se halla la tabla. c) RecordSource: selecciona el nombre de la tabla (Alumnos) cuyos campos se mostrarán en el formulario. 2. Conectando las cajas de texto a) Selecciona una de las cajas de texto y modifica sus propiedades como sigue: b) DataSource: selecciona Data1. c) DataField: selecciona el nombre del campo de la tabla –que corresponda con la etiqueta correctaque se mostrará en la caja de texto. d) Repite los pasos con cada caja de texto del formulario y ejecuta el programa con F5. e) En el formulario que conectaste a la base de datos, al hacer clic en el botón de avance del control Data se mostrarán los registros de la tabla. f) Si no se pueden ver los registros de la tabla, significa que no se conectaron correctamente el control Data y las cajas de texto, simplemente revisa las conexiones una por una. 13 de 85 Cómo crear una base de datos en Access con Visual Basic 3. Conectando el MSFlexGrid. a) Selecciona el objeto MSFlexGrid, en su propiedad DataSource selecciona Data1, modifica su propiedad Cols a 5, cambia su propiedad Rows a 5, opcionalmente puedes modificar sus propiedades de BackColor de la manera que más te agrade. 4. Este es el código del formulario: Private Sub Form_Activate() With MSFlexGrid1 For X = 1 To .Rows - 1 .Row = X For J = 1 To .Cols - 1 .Col = J .CellBackColor = IIf((X Mod 2) = 1, Val(&HC0FFFF), Val(&HC0FFC0)) .CellFontBold = True .CellForeColor = &HFF0000 Next J Next X End With End Sub Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2500 MSFlexGrid1.ColWidth(3) = 2000 MSFlexGrid1.ColWidth(4) = 1100 End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Movimientos", vbInformation, "¡Aviso Importante!" End Sub 14 de 85 Cómo crear una base de datos en Access con Visual Basic Creando un Menú En el formulario vamos a crear un menú llamado Movimientos con las siguientes opciones: 15 de 85 Cómo crear una base de datos en Access con Visual Basic a) Haz clic con el botón derecho del ratón sobre el formulario y haz clic en el Editor de menús… b) Y aparece la caja Editor de menús. 16 de 85 Cómo crear una base de datos en Access con Visual Basic c) En Caption introduce el nombre (que se mostrará en el formulario) del menú. d) En Name introduce el nombre que utilizará Visual Basic. e) Haz clic en el botón Siguiente para crear otro menú. f) Haz clic en el botón con la flecha hacia la derecha y aparecerán cuatro puntos, lo cual indica que el siguiente renglón será una opción del menú. g) En Shortcut selecciona la combinación de teclas que se podrán usar para activar la opción de menú correspondiente. h) Repite los pasos para crear cada opción del menú. Programando las opciones del menú Ahora codificaremos en Visual Basic las opciones del menú Movimientos para eso abre el menú y haz clic en cada una de las opciones del menú, el código para las opciones son: a) Opción Nuevo, el cual servirá para crear un nuevo registro en la tabla, el código es el siguiente: Private Sub nuevo_Click () Data1.Recordset.AddNew End Sub P.D. Esta opción debe presionarse antes de dar de alta un nuevo registro en la base de datos. b) Opción Guardar, el cual servirá para guardar un nuevo registro en la tabla, el código es el siguiente: Private Sub guardar_Click() Data1.UpdateRecord Data1.Refresh MsgBox "El Registro ha sido Guardado en la Base de Datos", vbExclamation, "Aviso Importante" End Sub P.D. Esta opción debe presionarse una vez que se haya completado la información del registro. c) Opción Buscar, el cual servirá para buscar un registro en la tabla, el código es el siguiente: Private Sub buscar_Click() Dim m As Long m = Val(InputBox("Introduce la Matrícula que Buscas")) Data1.Recordset.FindFirst "matricula=" & m If Data1.Recordset.NoMatch Then MsgBox "La Matrícula Número: " & m & " No está en la Base de Datos", vbExclamation, "Búsquedas de Matrícula" End If End Sub 17 de 85 Cómo crear una base de datos en Access con Visual Basic Nota: aquí declaramos una variable (m) que representará el número del registro (matricula) que estemos buscando. Es de vital importancia de que te asegures de que en la línea subrayada la palabra “Matrícula” esté escrita exactamente como llamaste el campo “matricula” al crear la tabla. d) Opción Eliminar, el cual servirá para eliminar un registro de la tabla, el código es el siguiente: Private Sub Eliminar_Click() If MsgBox("¿Quieres Eliminar la Matrícula Número: " & Text1 & "?", 16 + 4) = 6 Then Data1.Recordset.Delete Data1.Refresh Text1.SetFocus MsgBox "Se Eliminó la Matrícula", vbCritical, "Aviso Importante" Else MsgBox "No se Eliminó la Matrícula Número: " & Text1, vbExclamation, "Aviso Importante" End If End Sub Ahora corre tu programa con la tecla F5 dirígete al formulario y ahora podrás agregar, guardar, buscar y eliminar registros de la tabla Alumnos de la base de datos de Access mediante Visual Basic. 18 de 85 Cómo crear una base de datos en Access con Visual Basic Creando los reportes con Visual Basic Para crear reportes en Visual Basic vamos a crear primero el Data Environment (Entorno de Datos) el cual es una herramienta muy sencilla para crear reportes tal como Crystal Reports o Access. Creando el Data Environment a) Haz clic en el botón Proyecto de la barra de herramientas. b) Haz clic en Agregar Data Environment c) Y se abrirá el Data Environment mostrando el nombre del proyecto en su barra de título. 19 de 85 Cómo crear una base de datos en Access con Visual Basic Nota: En caso de que no se halle disponible la opción Agregar Data Environment en el menú Proyecto, hay que activarla desde Proyecto, Componentes, Diseñadores y hacer clic en Data Environment y otro clic en Aceptar. 20 de 85 Cómo crear una base de datos en Access con Visual Basic d) En la ventana aparece un pequeño icono de un reporte al cual puedes cambiarle el nombre fácilmente seleccionándolo y modificando su propiedad (Name) por otro como Reportes, etc. e) Más abajo se puede ver otro objeto, un cilindro -el cual representa a la base de datos- con una clavija eléctrica llamado Connection1 al cual también puedes cambiarle el nombre modificando su propiedad (Name) por otro como Alumnos, Maestros, etc. 21 de 85 Cómo crear una base de datos en Access con Visual Basic f) Ahora haz clic con el botón derecho del ratón sobre la Connection1 (ahora llamada Alumnos) y haz clic en Propiedades… g) Y aparecerá la caja Propiedades de vínculo de datos, haz clic en la opción Conexión. 22 de 85 Cómo crear una base de datos en Access con Visual Basic h) Haz clic en: Usar la cadena de conexión y haz clic en Generar… 23 de 85 Cómo crear una base de datos en Access con Visual Basic i) Y aparecerá la caja Seleccionar origen de datos, haz clic en la opción Origen de datos de equipo. j) Selecciona el tipo de base de datos en donde se creó la base de datos, en nuestro caso MS Access Database y haz doble clic ahí. 24 de 85 Cómo crear una base de datos en Access con Visual Basic k) Y aparecerá la caja Conexión, haz clic en el botón Base de datos… l) Y aparecerá la caja Seleccionar base de datos, localiza la carpeta o unidad de disco en donde se halla tu base de datos, selecciónala y haz clic en Aceptar. m) Enseguida se vuelve a mostrar la caja Conexión, haz clic nuevamente en Aceptar. 25 de 85 Cómo crear una base de datos en Access con Visual Basic n) Y se mostrará la caja Propiedades de vínculo de datos, mostrando en la caja de texto Cadena de conexión bajo la opción Usar la cadena de conexión la ruta de la base de datos que hemos conectado, para finalizar la conexión haz clic en Aceptar. o) Y volveremos al Entorno de Datos. Ya creamos la conexión de los reportes con la base de datos, ahora vamos a crear un comando para el reporte. 26 de 85 Cómo crear una base de datos en Access con Visual Basic Creando un comando a) Haz clic con el botón derecho del ratón sobre la conexión (Alumnos) que creamos previamente y haz clic en Agregar comando. 27 de 85 Cómo crear una base de datos en Access con Visual Basic b) Y enseguida aparecerá un objeto llamado Command1, al cual le puedes cambiar su nombre modificando su propiedad (Name). c) Para motivos de identificación llamaremos el Command1 Repalumnos, ya que nos será útil para identificar el reporte de alumnos. 28 de 85 Cómo crear una base de datos en Access con Visual Basic Creando las propiedades del reporte a) Haz clic con el botón derecho del ratón sobre el comando –ahora llamado Repalumnos- y haz clic en Propiedades… y aparecerá la caja Propiedades de Reporte, ahí podemos ver el Nombre de comando (Command1) el cual es Repalumnos y el nombre de la Conexión que es Alumnos. 29 de 85 Cómo crear una base de datos en Access con Visual Basic b) En la sección Origen de datos, Objeto de la base de datos, haz clic en la flechita que se halla en la caja de combo y selecciona la opción Tabla. c) Haz clic en la flecha de la caja de combo Nombre de objeto y selecciona el nombre de la tabla (alumnos) que nos servirá de origen de datos para crear el reporte. d) Ahora sólo haz clic en Aceptar. 30 de 85 Cómo crear una base de datos en Access con Visual Basic e) Y se mostrará un pequeño cuadro con un signo de más en su interior, al lado izquierdo del comando Repalumnos, haz clic ahí y podrás ver los campos de la tabla Alumnos que seleccionaste previamente, todo indica que nuestra conexión se realizó exitosamente. Ya puedes cerrar el Entorno de Datos (Data Environment) para crear ahora la estructura del reporte. 31 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la estructura del reporte a) En Visual Basic haz clic en el botón Proyecto de la barra de herramientas y haz clic en Agregar Data Report y se mostrará la caja DataReport1, la caja de herramientas y la caja de propiedades correspondientes para trabajar en el DataReport. Nota: En caso de que no se halle disponible la opción Agregar Data Report en el menú Proyecto, hay que activarla desde Proyecto, Componentes, Diseñadores y hacer clic en Data Report y otro clic en Aceptar. 32 de 85 Cómo crear una base de datos en Access con Visual Basic a) Hay varias maneras de elaborar la estructura del reporte, vamos a emplear una muy sencilla, haz clic en la herramienta RptLabel y dibuja una etiqueta en Encabezado de informe (Sección4) y modifica su propiedad Caption con el título que tendrá el reporte. Nota: puedes ajustar la altura de las diferentes secciones del Data Report mediante colocar el apuntador del ratón en el limite inferior de cada sección, presionar el botón izquierdo del ratón y sencillamente moverlo hacia arriba o hacia abajo según sea el caso. b) Ahora haz clic en RptLabel y coloca etiquetas con los títulos de los encabezados de la tabla en Encabezado de página (Sección2) modificando sus propiedades Caption, Font, ForeColor, etc. a tu gusto. c) Ahora haz clic en RptTextBox y coloca cajas de texto en Detalle (Sección1). d) Al terminar de colocar las cajas de texto que muestran el texto: No enlazado, haz clic en cualquier parte vacía del DataReport y haz clic en la cajita gris situada bajo el icono de la barra de titulo del Data Report, para mostrar las propiedades del DataReport. 33 de 85 Cómo crear una base de datos en Access con Visual Basic e) Haz clic en la propiedad DataSource y selecciona el DataEnvironment1 que previamente llamamos reportes, y en la propiedad DataMember selecciona el Command1 que llamamos Repalumnos. Nota: Podemos crear varios reportes –si hay varias tablas- en el mismo Data Environment. f) Ahora selecciona la primera caja de texto y haz clic en la cajita gris situada bajo el icono de la barra de titulo del Data Report, para mostrar las propiedades de la caja de texto (RptTextBox), y modifica sus propiedades como sigue: DataMember: el nombre del reporte (Repalumnos) y en DataField: selecciona el campo que corresponda de la tabla y repite los pasos para cada caja de texto para que se vea más o menos así. 34 de 85 Cómo crear una base de datos en Access con Visual Basic Creando el menú de Reportes Vamos a volver al formulario en donde creamos el menú a) Haz clic con el botón derecho del ratón en el formulario y haz clic en Editor de menús… b) Crea el menú Reportes con la opción Alumnos. 35 de 85 Cómo crear una base de datos en Access con Visual Basic c) Para que se vea así 36 de 85 Cómo crear una base de datos en Access con Visual Basic Conectando el menú con el reporte Ahora vamos a conectar la opción del menú Reportes con el reporte que creamos previamente a) Haz clic en Reportes, Alumnos y escribe el siguiente código: Private Sub reportedealumnos_Click() DataReport1.Show End Sub b) Ejecuta el programa y haz clic en la opción para ver el reporte y se mostrará el reporte que creaste. Nota: En caso de ser necesario puedes estirar las cajas de texto para que se puedan ver los datos, o modificar la propiedad RightMargin del Data Report según tus necesidades particulares. Puedes crear una base de datos con varias tablas, diferentes formularios y diferentes reportes según prefieras, sinceramente espero que haya sido de tu interés el ejercicio y sirva para que te adentres en el mundo de la programación y las bases de datos. 37 de 85 Cómo crear una base de datos en Access con Visual Basic En esta segunda parte del ejercicio, vamos a controlar el acceso al programa, de manera que solamente accesen el sistema, usuarios que previamente se hayan registrado como tales, también se creará la opción para que los interesados se auto registren y puedan hacer uso del programa, por lo que vamos a crear: a) Una pantalla de Inicio, que se verá inmediatamente antes de iniciar el programa. b) Una pantalla de Bienvenida, con opciones para entrar al programa o registrarnos si es que no somos usuarios registrados para accesar el programa. c) Una pantalla de Entrada, para acceder al programa como usuario registrado. d) Una pantalla de Registro, en donde se registrarán los usuarios que quieran entrar el programa. Creando una pantalla de inicio a) Haz clic en Proyecto, Agregar formulario. b) En la caja de diálogo Agregar formulario, opción Nuevo, selecciona el icono Pantalla de inicio y haz clic en Abrir. Para el propósito del ejercicio sólo conserva dos etiquetas que nos serán de utilidad así como la gráfica, selecciona el resto de las etiquetas y presiona el botón Suprimir para eliminarlas. Modifica las etiquetas, cambia la gráfica por la que prefieras, y agrega un reloj a la pantalla de inicio para que se vea más o menos como se ve abajo. Para que esta pantalla se vea inmediatamente antes que inicie el programa hay que hacer lo siguiente: a) Selecciona el reloj y cambia su propiedad Interval a 100. 38 de 85 Cómo crear una base de datos en Access con Visual Basic b) Haz doble clic en el reloj y escribe el siguiente código: Private Sub Timer1_Timer() Static J As Integer J=J+1 If J = 20 Then frmSplash.Hide Bienvenida.Show Timer1.Enabled = False End If End Sub Aquí sencillamente declaramos una variable que se incrementará de uno en uno y al llegar a 20 se ocultará la pantalla de inicio y mostrará otro formulario, en nuestro caso el formulario de Bienvenida, y deshabilitará el reloj. Para que el programa inicie con el formulario que acabamos de crear: c) Haz clic en Proyecto, Propiedades de proyecto… y se abrirá la caja de diálogo, Propiedades del proyecto. d) En la opción General, Objeto inicial, selecciona el formulario frmSplash y haz clic en Aceptar. Creando una pantalla de bienvenida Crea un formulario, con una etiqueta y tres botones, para que se vea más o menos como se ve abajo. a) El código del botón Registrarse es: Private Sub Command1_Click() Bienvenida.Hide Registro.Show End Sub Cuya función es la de ocultar el formulario de Bienvenida y mostrar el formulario de Registro. 39 de 85 Cómo crear una base de datos en Access con Visual Basic b) El código del botón Entrar es: Private Sub Command2_Click() Bienvenida.Hide Entrada.Show End Sub Cuya función es la de ocultar el formulario de Bienvenida y mostrar el formulario de Entrada. c) El código del botón Cancelar es: Private Sub Command3_Click() Unload Me End End Sub Cuya función es la de cerrar el programa. Creando una pantalla de entrada Crea un formulario, con dos etiquetas, dos cajas de texto y dos botones, para que se vea más o menos como se ve abajo. 40 de 85 Cómo crear una base de datos en Access con Visual Basic a) El código del botón Entrar al Programa es: Private Sub Command1_Click() Dim usuario As String Dim contrasena As String Dim mensaje As String Registro.Data1.Refresh usuario = Text1 contrasena = Text2 Do Until Registro.Data1.Recordset.EOF If Registro.Data1.Recordset.Fields("usuario").Value = usuario And Registro.Data1.Recordset.Fields("contrasena").Value = contrasena Then MsgBox "Hola " & usuario & ", ¿Cómo has estado?", vbOKOnly, "Bienvenido al Programa" Entrada.Hide Alumnos.Show Exit Sub Else Registro.Data1.Recordset.MoveNext End If Loop mensaje = MsgBox("No te Conozco " & usuario & ", Intenta de Nuevo", vbOKOnly, "Atención, Usuario No Autorizado!!!") If (mensaje = 1) Then Entrada.Show Text1 = "" Text2 = "" Else End End If End Sub Cuya función es asegurarse de que el nombre de usuario y contraseña introducidos se hallen en la tabla de usuarios, si lo halla le permitirá la entrada al programa, si no lo encuentra, invitará al usuario a intentarlo de nuevo o salir del programa. 41 de 85 Cómo crear una base de datos en Access con Visual Basic b) El código del botón Salir del programa es: Private Sub Command2_Click() End End Sub Cuya función es la de cerrar el programa. c) Escribe el siguiente código en el evento Activate del formulario Private Sub Form_Activate() Text1.SetFocus End Sub Cuya función es la de colocar el cursor en la caja de texto 1 al cargar el formulario d) Escribe el siguiente código en el evento KeyPress de la caja de texto 1 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text2.SetFocus End If End Sub Cuya función es la de avanzar de la caja de texto 1 a la caja de texto 2 al presionar la tecla Enter. Creando una pantalla de registro Crea un formulario, con dos etiquetas, dos cajas de texto, dos botones y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. 42 de 85 Cómo crear una base de datos en Access con Visual Basic a) El código del botón Guardar Nuevo Registro es: Private Sub Command4_Click() Data1.UpdateRecord Data1.Refresh MsgBox "El Usuario ha sido Guardado en la Base de Datos", vbExclamation, "Aviso Importante" Registro.Hide Alumnos.Show End Sub Cuya función es la de guardar en la tabla de usuarios al nuevo usuario. b) El código del botón Salir del programa es: Private Sub Command2_Click() End End Sub Cuya función es la de cerrar el programa. c) Escribe el siguiente código en el evento Activate del formulario Private Sub Form_Activate() Data1.Recordset.AddNew End Sub Cuya función es la de preparar el agregar al usuario nuevo. d) Escribe el siguiente código en el evento KeyPress de la caja de texto 1 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text2.SetFocus End If End Sub Cuya función es la de avanzar de la caja de texto 1 a la caja de texto 2 al presionar la tecla Enter. e) Ahora hay que crear dentro de la misma base de datos, una tabla llamada usuarios para conservar los registros de los usuarios que se registren como usuarios del sistema, para este fin hay que seguir las instrucciones del capítulo: Creación de las tablas de la base de datos, detallada páginas arriba. 43 de 85 Cómo crear una base de datos en Access con Visual Basic La tabla debe llamarse “usuarios” y sus campos deben ser definidos como tipo texto y tamaño 50, tal como se ve en la caja Estructura de la tabla mostrada abajo. 44 de 85 Cómo crear una base de datos en Access con Visual Basic De tal manera que en el Administrador Visual de datos (VisData) podamos ver las tablas que forman nuestra base de datos. En la tabla recién creada y siguiendo el procedimiento páginas mostrado arriba, registra un único usuario, preferentemente tú nombre y como contraseña nuevamente tú nombre, esto por motivos de prueba. 45 de 85 Cómo crear una base de datos en Access con Visual Basic f) Ahora volvamos al formulario llamado Registro, este contiene un control Data que hay que conectar - A la base de datos, usando su propiedad Databasename, y - A la tabla usuarios, usando su propiedad RecordSource. No hay que olvidar cambiar su propiedad Visible a False. Si todo ha resultado bien, al iniciar nuestro programa, este iniciará con la pantalla de Inicio, enseguida se mostrará la pantalla de Bienvenida, en donde tenemos dos opciones: al oprimir el botón Entrar, debe mostrarse la pantalla de Entrada y si se presiona el botón Registrarse, debe mostrarse la pantalla de Registro. La cual reconocerá al usuario registrado y no permitirá la entrada al sistema de personas no registradas. Como tenemos un usuario registrado podremos probar su funcionalidad. Gracias por todos los alentadores mensajes electrónicos recibidos de tanta gente, como siempre estoy a la orden para sugerencias y recomendaciones. 46 de 85 Cómo crear una base de datos en Access con Visual Basic En esta tercera parte del ejercicio, vamos a realizar algunas búsquedas y consultas, así como ordenar los datos en forma ascendente y descendente, también moveremos registros del MSFlexGrid a otros objetos, de tal manera que vamos a crear: a) b) c) d) e) Una pantalla para realizar búsquedas por: Matrícula, Carrera y Turno. Una pantalla para efectuar búsquedas de Matrícula usando una caja de combo. Una Pantalla para ordenar todos los registros en forma ascendente y descendente. Una pantalla para mover datos del MSFlexGrid a cajas de texto. Una pantalla para trasferir datos del MSFlexGrid a cajas de lista. Para el propósito del ejercicio vamos a modificar la pantalla de opciones para que tenga una apariencia semejante a como se ve abajo. En este formulario, modifica el menú para que contenga opciones para las pantallas de búsqueda antes mencionadas, por cuestiones de fácil identificación las llamé como se ven en la pantalla. El formulario contiene al medio un objeto Picture conteniendo una ilustración. 47 de 85 Cómo crear una base de datos en Access con Visual Basic En la parte inferior hay un objeto StatusBar, el cual fue activado mediante hacer clic en Proyecto, Componentes, en la caja de diálogo Componentes, Controles, selecciona la opción Microsoft Windows Common Controls 6.0 (SP6) y haz clic en Aplicar y Aceptar para que los controles se muestren en el Cuadro de herramientas. En el Cuadro de herramientas haz doble clic en el objeto StatusBar para que se mueva al formulario, una vez ahí, haz doble clic con el botón derecho del ratón en el objeto StatusBar y haz clic en Propiedades. 48 de 85 Cómo crear una base de datos en Access con Visual Basic Para que se muestre la caja de diálogo Páginas de propiedades. En la caja de diálogo Páginas de propiedades, opción Paneles, haz clic en el botón Insertar panel en dos ocasiones (para tener un total de tres paneles), el objeto StatusBar muestra un panel, de manera que hay que insertar los paneles en donde se mostrará la hora, la fecha y la activación de la tecla de Mayúsculas. Podrás ver los paneles insertados mediante hacer clic en las flechas izquierda y derecha de la opción Index. Los paneles deben mostrar en la opción Style: 5 sbrTime, 6 sbrDate y 1 sbrCaps respectivamente para que se vea como la ilustración del formulario opciones mostrada arriba. Puedes experimentar con las otras opciones a tu gusto. 49 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas1 Crea un formulario, con un frame, tres botones de opción, una caja de texto, dos etiquetas, dos botones, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. El formulario debe tener un menú con la opción Volver a Opciones como se muestra abajo. 50 de 85 Cómo crear una base de datos en Access con Visual Basic a) El código del formulario Búsquedas1 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 Label2.Visible = False Text1.Visible = False End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub b) El código del menú Volver a Opciones es: Private Sub volveraopciones_Click() Busquedas1.Hide Opciones.Show End Sub c) El código de los botones de opción es: Private Sub Option1_Click() If Option1 = True Then Label2.Visible = True Label2.Caption = "Introduce la Matrícula que buscas" Text1.Visible = True Text1 = "" Text1.SetFocus End If End Sub Private Sub Option2_Click() If Option2 = True Then Label2.Visible = True Label2.Caption = "Introduce la Carrera que buscas" Text1.Visible = True Text1 = "" Text1.SetFocus End If End Sub 51 de 85 Cómo crear una base de datos en Access con Visual Basic Private Sub Option3_Click() If Option3 = True Then Label2.Visible = True Label2.Caption = "Introduce el Turno que buscas" Text1.Visible = True Text1 = "" Text1.SetFocus End If End Sub d) el código del botón Buscar es: Private Sub Command1_Click() If Option1 = True Then Data1.RecordSource = "select * from alumnos where matricula = " & Val(Text1) Data1.Refresh Label1.Visible = True If Data1.Recordset.EOF Then MsgBox "La Matrícula: " & Val(Text1) & ", No está en la Base de Datos", vbExclamation, "¡Por Favor Revisa el Número de la Matrícula!" Text1 = "" Text1.SetFocus End If ElseIf Option2 = True Then Data1.RecordSource = "select * from alumnos where carrera = '" & Text1 & "'" Data1.Refresh Label1.Visible = True If Data1.Recordset.EOF Then MsgBox "La Carrera: '" & Text1 & "'" & " No está en la Base de Datos", vbExclamation, "¡Por Favor Revisa el Nombre de la Carrera!" Text1 = "" Text1.SetFocus End If ElseIf Option3 = True Then Data1.RecordSource = "select * from alumnos where turno = '" & Text1 & "'" Data1.Refresh Label1.Visible = True 52 de 85 Cómo crear una base de datos en Access con Visual Basic If Data1.Recordset.EOF Then MsgBox "El Turno: '" & Text1 & "'" & " No está en la Base de Datos", vbExclamation, "¡Por Favor Revisa el Nombre del Turno!" Text1 = "" Text1.SetFocus End If End If Label1 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" End Sub e) El código del botón Ver Todos los Registros es: Private Sub Command2_Click() Text1 = "" Data1.RecordSource = "alumnos" Data1.Refresh Label1 = "Total de Registros de la búsqueda: " & (MSFlexGrid1.Rows) - 1 & "" End Sub f) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. g) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. h) Las etiquetas1 y 2, deben estar vacías y con su propiedad AutoSize a True, una de ellas colócala justo arriba de la caja de texto y la otra puede ir al pie del formulario. Al iniciar el formulario, no deben verse las etiquetas ni la caja de texto, para lo cual limpia el contenido de la propiedad Caption, hasta que el usuario haga un clic en el botón de opción deseado. Al introducir la información requerida y hacer clic en el botón Buscar se mostrará el o los registros y la otra etiqueta indicando el número de registros hallados, al presionar el botón Ver Todos los Registros se mostrarán todos los registros de la tabla Alumnos. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 53 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas2 Crea un formulario, con una etiqueta, una caja de combo, dos botones, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas2 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub b) El código del menú Volver a Opciones es: Private Sub volveraopciones_Click() Busquedas2.Hide Opciones.Show End Sub 54 de 85 Cómo crear una base de datos en Access con Visual Basic c) El código de la caja de combo es: Private Sub Combo1_DropDown() On Error Resume Next Do Until Data1.Recordset.EOF Combo1.AddItem Data1.Recordset.Fields("matricula") Data1.Recordset.MoveNext Loop End Sub d) El código del botón Buscar es: Private Sub Command1_Click() Data1.RecordSource = "select * from alumnos where matricula =" & Val(Combo1.Text) Data1.Refresh If Data1.Recordset.EOF Then MsgBox "La Matrícula: " & Val(Combo1) & ", No está en la Base de Datos" + vbCrLf + "Haz Clic en el botón 'Ver Todos'" + vbCrLf + "Para Seleccionar un Número de Matrícula", vbExclamation, "¡Por Favor Selecciona un Número de Matrícula!" End If End Sub e) El código del botón Ver Todos es: Private Sub Command2_Click() Data1.RecordSource = "alumnos" Data1.Refresh End Sub f) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. g) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. h) ComboBox su propiedad Text cambiala a Matrículas. Al iniciar el formulario, el usuario seleccionará de la caja de combo la matrícula que busca, y al presionar el botón Buscar, la matrícula deseada se le mostrará. Al presionar el botón Ver Todos, se mostrarán todos los registros de la tabla Alumnos. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 55 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas3 Crea un formulario, con una etiqueta, un Frame, cuatro botones de opción, dos botones, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas3 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub b) El código del menú Volver a Opciones es: Private Sub volver_Click() Busquedas3.Hide Opciones.Show End Sub 56 de 85 Cómo crear una base de datos en Access con Visual Basic c) El código del botón Ascendente es: Private Sub Command1_Click() If Option1 = True Then MSFlexGrid1.Col = 1 MSFlexGrid1.Sort = flexSortNumericAscending ElseIf Option2 = True Then MSFlexGrid1.Col = 2 MSFlexGrid1.Sort = flexSortStringAscending ElseIf Option3 = True Then MSFlexGrid1.Col = 3 MSFlexGrid1.Sort = flexSortStringAscending ElseIf Option4 = True Then MSFlexGrid1.Col = 4 MSFlexGrid1.Sort = flexSortStringAscending End If End Sub d) El código del botón Descendente es: Private Sub Command2_Click() If Option1 = True Then MSFlexGrid1.Col = 1 MSFlexGrid1.Sort = flexSortNumericDescending ElseIf Option2 = True Then MSFlexGrid1.Col = 2 MSFlexGrid1.Sort = flexSortStringDescending ElseIf Option3 = True Then MSFlexGrid1.Col = 3 MSFlexGrid1.Sort = flexSortStringDescending ElseIf Option4 = True Then MSFlexGrid1.Col = 4 MSFlexGrid1.Sort = flexSortStringDescending End If End Sub e) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. f) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. Al iniciar el formulario, el usuario seleccionará el botón de opción que necesite para elegir el campo necesario y presionará el botón Ascendente o Descendente para elegir el orden de los datos de la tabla Alumnos. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 57 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas4 Crea un formulario, con una etiqueta, cuatro cajas de texto, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas4 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub b) El código del menú Volver a Opciones es: Private Sub volver_Click() Busquedas4.Hide Opciones.Show End Sub 58 de 85 Cómo crear una base de datos en Access con Visual Basic c) El código del MSFlexGrid es: Private Sub MSFlexGrid1_DblClick() MSFlexGrid1.Col = 1 Text1 = MSFlexGrid1.Text MSFlexGrid1.Col = 2 Text2 = MSFlexGrid1.Text MSFlexGrid1.Col = 3 Text3 = MSFlexGrid1.Text MSFlexGrid1.Col = 4 Text4 = MSFlexGrid1.Text Text1.BackColor = &HC0FFFF Text2.BackColor = &HC0FFFF Text3.BackColor = &HC0FFFF Text4.BackColor = &HC0FFFF Text1.ForeColor = &HFF0000 Text2.ForeColor = &HFF0000 Text3.ForeColor = &HFF0000 Text4.ForeColor = &HFF0000 End Sub d) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. e) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. Al iniciar el formulario, el usuario hará doble clic en cualquier registro del MSFlexGrid y este se transferirá a las cajas de texto. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 59 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas5 Crea un formulario, con una etiqueta, cuatro cajas de lista, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas5 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub b) El código del menú Volver a Opciones es: Private Sub volver_Click() Busquedas5.Hide Opciones.Show End Sub 60 de 85 Cómo crear una base de datos en Access con Visual Basic c) El código del MSFlexGrid es: Private Sub MSFlexGrid1_DblClick() MSFlexGrid1.Col = 1 List1.AddItem MSFlexGrid1.Text MSFlexGrid1.Col = 2 List2.AddItem MSFlexGrid1.Text MSFlexGrid1.Col = 3 List3.AddItem MSFlexGrid1.Text MSFlexGrid1.Col = 4 List4.AddItem MSFlexGrid1.Text List1.BackColor = &HC0FFFF List2.BackColor = &HC0FFFF List3.BackColor = &HC0FFFF List4.BackColor = &HC0FFFF List1.ForeColor = &HFF0000 List2.ForeColor = &HFF0000 List3.ForeColor = &HFF0000 List4.ForeColor = &HFF0000 End Sub d) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. e) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. Al iniciar el formulario, el usuario hará doble clic en cualquier registro del MSFlexGrid y este se transferirá a las cajas de lista, que a diferencia del ejercicio anterior, guardarán más de un registro a la vez. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 61 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas6 Crea un formulario, con tres etiquetas, dos cajas de combo, dos botones, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas6 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub b) El código del menú Volver a Opciones es: Private Sub volver_Click() Busquedas6.Hide Opciones.Show End Sub 62 de 85 Cómo crear una base de datos en Access con Visual Basic c) El código de la caja de combo1 es: Private Sub Combo1_DropDown() On Error Resume Next Dim i As Long, enlatabla As Boolean Data1.Recordset.MoveFirst While Not Data1.Recordset.EOF enlatabla = False For i = 0 To Combo1.ListCount - 1 If Combo1.List(i) = Data1.Recordset("carrera") Then enlatabla = True Exit For End If Next i If Not enlatabla Then Combo1.AddItem Data1.Recordset("carrera") End If Data1.Recordset.MoveNext Wend End Sub d) El código de la caja de combo2 es: Private Sub Combo2_DropDown() On Error Resume Next Dim i As Long, enlatabla As Boolean Data1.Recordset.MoveFirst While Not Data1.Recordset.EOF enlatabla = False For i = 0 To Combo2.ListCount - 1 If Combo2.List(i) = Data1.Recordset("turno") Then enlatabla = True Exit For End If Next i If Not enlatabla Then Combo2.AddItem Data1.Recordset("turno") End If Data1.Recordset.MoveNext Wend End Sub e) El código del botón Buscar es: Private Sub Command1_Click() Data1.RecordSource = "select * from alumnos where carrera like '" & Combo1.Text & "' and turno like '" & Combo2.Text & "'" Data1.Refresh Label3 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" End Sub 63 de 85 Cómo crear una base de datos en Access con Visual Basic f) El código del botón Todos los Registros es: Private Sub Command2_Click() Data1.RecordSource = "alumnos" Data1.Refresh Label3 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" End Sub g) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. h) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. Private Sub MSFlexGrid1_EnterCell() MSFlexGrid1.CellBackColor = &HFF& MSFlexGrid1.CellForeColor = &HFFFFFF MSFlexGrid1.CellFontBold = True End Sub Private Sub MSFlexGrid1_LeaveCell() MSFlexGrid1.CellBackColor = &HFFFFFF MSFlexGrid1.CellForeColor = &H0& MSFlexGrid1.CellFontBold = False End Sub Nota: Copia estos códigos en los eventos del MsFlexGrid y haz clic en cualquier celda. i) La etiqueta3 debe tener su propiedad Autosize en True, y la propiedad Caption en nada. Al iniciar el formulario, el usuario selecionará de las cajas de combo1 y combo2 los campos de la tabla que servirán para hacer la búsqueda respectiva, al presionar el botón Buscar, los registros se mostrarán en el MSFlexGrid y la etiqueta3 mostrará la cantidad de registros mostrados. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 64 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas7 Crea un formulario, con cuatro etiquetas, dos cajas de combo, dos botones, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas7 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 Combo1.AddItem "Carrera" Combo1.AddItem "Turno" End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub 65 de 85 Cómo crear una base de datos en Access con Visual Basic Private Sub Form_Activate() Data1.RecordSource = "alumnos" Data1.Refresh Label4 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" Combo2.Clear End Sub b) El código del menú Volver a Opciones es: Private Sub volver_Click() Busquedas7.Hide Opciones.Show End Sub c) El código de la caja de combo1 es: Private Sub Combo1_Click() On Error Resume Next If Combo1.Text = "Carrera" Then Dim J As Long, enlatabla As Boolean Data1.Recordset.MoveFirst While Not Data1.Recordset.EOF enlatabla = False For J = 0 To Combo2.ListCount - 1 If Combo2.List(J) = Data1.Recordset("carrera") Then enlatabla = True Exit For End If Next J If Not enlatabla Then Combo2.AddItem Data1.Recordset("carrera") End If Data1.Recordset.MoveNext Wend End If If Combo1.Text = "Turno" Then Dim a As Long, yaenlatabla As Boolean Data1.Recordset.MoveFirst While Not Data1.Recordset.EOF yaenlatabla = False For a = 0 To Combo2.ListCount - 1 If Combo2.List(a) = Data1.Recordset("turno") Then yaenlatabla = True Exit For End If 66 de 85 Cómo crear una base de datos en Access con Visual Basic Next a If Not yaenlatabla Then Combo2.AddItem Data1.Recordset("turno") End If Data1.Recordset.MoveNext Wend End If End Sub d) El código del botón Buscar es: Private Sub Command1_Click() On Error Resume Next If Combo1.Text = "Carrera" And Combo2.Text <> "Selecciona" Then Data1.RecordSource = "select * from alumnos where carrera like '" & Combo2.Text & "'" Data1.Refresh Label4 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" If Data1.Recordset.RecordCount = 0 Then MsgBox "Este Registro No Corresponde con el Campo que Seleccionaste" + vbCrLf + "Presiona el botón: 'Todos los Registros' y Selecciona Otro Campo", vbInformation, "¡Aviso Importante!" End If End If If Combo1.Text = "Turno" And Combo2.Text <> "Selecciona" Then Data1.RecordSource = "select * from alumnos where turno like '" & Combo2.Text & "'" Data1.Refresh Label4 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" If Data1.Recordset.RecordCount = 0 Then MsgBox "Este Registro No Corresponde con el Campo que Seleccionaste" + vbCrLf + "Presiona el botón: 'Todos los Registros' y Selecciona Otro Campo", vbInformation, "¡Aviso Importante!" End If End If If Combo1 <> "" And Combo2 = "" Then MsgBox "Selecciona el Registro", vbInformation, "¡Aviso Importante!" End If End Sub e) El código del botón Todos los Registros es: Private Sub Command2_Click() Data1.RecordSource = "alumnos" Data1.Refresh Label4 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" Combo2.Clear End Sub 67 de 85 Cómo crear una base de datos en Access con Visual Basic f) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. g) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. h) La etiqueta4 debe tener su propiedad Autosize en True, y la propiedad Caption en nada. Al iniciar el formulario, el usuario selecionará de la caja de combo1, el campo de la tabla dentro del cual se realizará la búsqueda y del combo2 el registro que servirá para hacer la búsqueda, al presionar el botón Buscar, los registros se mostrarán en el MSFlexGrid y la etiqueta4 mostrará la cantidad de registros mostrados. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. Selecciona la caja de combo1 y en su propiedad ToolTipText escribe: 1. Selecciona el Campo Selecciona la caja de combo2 y en su propiedad ToolTipText escribe: 2. Selecciona el Registro Selecciona el botón Buscar y en su propiedad ToolTipText escribe: 3. Realiza la Búsqueda Selecciona el botón Todos los Registros y en su propiedad ToolTipText escribe: 4. Presiona esta botón antes de cambiar de campo. 68 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas8 Crea un formulario, con cuatro etiquetas, dos cajas de texto, dos botones, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas8 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub Private Sub Form_Activate() Text1.SetFocus End Sub 69 de 85 Cómo crear una base de datos en Access con Visual Basic b) El código del menú Volver a Opciones es: Private Sub volver_Click() Busquedas8.Hide Opciones.Show End Sub c) El código del botón Buscar es: Private Sub Command1_Click() Data1.RecordSource = "select * from alumnos where matricula between " & Val(Text1) & " And " & Val(Text2) & "" Data1.Refresh Label4 = "Total de Registros de la búsqueda: " & (MSFlexGrid1.Rows) - 1 & "" If Data1.Recordset.RecordCount = 0 Then MsgBox "No Hay Registros con estos Parámetros" + vbCrLf + "Por Favor Revisa tus Datos", vbInformation, "¡Aviso Importante!" End If Text1 = "" Text2 = "" Text1.SetFocus End Sub d) El código del botón Todos los Registros es: Private Sub Command2_Click() Data1.RecordSource = "alumnos" Data1.Refresh Label4 = "Total de Registros de la búsqueda: " & (MSFlexGrid1.Rows) - 1 & "" Text1.SetFocus End Sub e) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. f) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. g) La etiqueta3 debe tener su propiedad Autosize en True, y la propiedad Caption en nada. Al iniciar el formulario, el usuario podrá realizar búsquedas por rango del campo Matrículas, al presionar el botón Buscar, los registros se mostrarán en el MSFlexGrid y la etiqueta4 mostrará la cantidad de registros mostrados. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 70 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas9 Crea un formulario, con dos etiquetas, dos cajas de texto, dos botones, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas9 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 300 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2100 MSFlexGrid1.ColWidth(3) = 2500 MSFlexGrid1.ColWidth(4) = 1000 End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub 71 de 85 Cómo crear una base de datos en Access con Visual Basic b) El código del menú Volver a Opciones es: Private Sub volver_Click() Busquedas9.Hide Opciones.Show End Sub c) El código del Combo1 es: Private Sub Combo1_DropDown() On Error Resume Next Dim q As Long, enlatabla1 As Boolean Data1.Recordset.MoveFirst While Not Data1.Recordset.EOF enlatabla1 = False For q = 0 To Combo1.ListCount - 1 If Combo1.List(q) = Data1.Recordset("carrera") Then enlatabla1 = True Exit For End If Next q If Not enlatabla1 Then Combo1.AddItem Data1.Recordset("carrera") End If Data1.Recordset.MoveNext Wend Dim k As Long, enlatabla2 As Boolean Data1.Recordset.MoveFirst While Not Data1.Recordset.EOF enlatabla2 = False For k = 0 To Combo1.ListCount - 1 If Combo1.List(k) = Data1.Recordset("turno") Then enlatabla2 = True Exit For End If Next k If Not enlatabla2 Then Combo1.AddItem Data1.Recordset("turno") End If Data1.Recordset.MoveNext Wend End Sub 72 de 85 Cómo crear una base de datos en Access con Visual Basic d) El código del botón Buscar es: Private Sub Command1_Click() Data1.RecordSource = "select * from alumnos where carrera like '" & Combo1.Text & "' or turno like '" & Combo1.Text & "'" Data1.Refresh Label2 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" If Data1.Recordset.EOF Then MsgBox "Selecciona un Campo para ejecutar la Búsqueda", vbInformation, "Selecciona un Campo" Data1.RecordSource = "alumnos" Data1.Refresh Label2 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" End If End Sub e) El código del botón Todos los Registros es: Private Sub Command2_Click() Data1.RecordSource = "alumnos" Data1.Refresh Label2 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" End Sub e) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. f) MSFlexGrid1 Del MsFlexGrid modifica su propiedad Cols a 5, DataSource a Data1, Rows a 4, SelectionMode a 1 – flexSelectionByRow, también puedes seleccionar colores contrastantes em las propiedades BackColorSel y ForeColorSel. g) La etiqueta2 debe tener su propiedad Autosize en True, y la propiedad Caption en nada. Al iniciar el formulario, el usuario podrá realizar búsquedas por dos campos usando una sola caja de combo, em la cual se mostrarán los registros de los campos Carrera y Turno, al presionar el botón Buscar, los registros se mostrarán en el MSFlexGrid y la etiqueta2 mostrará la cantidad de registros mostrados. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 73 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Búsquedas10 Crea un formulario, con dos etiquetas, un botón, un MSFlexGrid y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Búsquedas10 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 800 MSFlexGrid1.ColWidth(1) = 2400 MSFlexGrid1.ColWidth(2) = 2500 MSFlexGrid1.ColWidth(3) = 1000 Data1.RecordSource = "alumnos" Data1.Refresh Label2 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" End Sub Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub 74 de 85 Cómo crear una base de datos en Access con Visual Basic b) El código del menú Volver a Opciones es: Private Sub volveraopciones_Click() Busquedas10.Hide Opciones.Show End Sub c) El código del botón Todos los Registros es: Private Sub Command1_Click() Data1.RecordSource = "alumnos" Data1.Refresh MSFlexGrid1.Refresh Label2 = "Total de Registros de la Consulta: " & (MSFlexGrid1.Rows) - 1 & "" End Sub d) El código del MSFlexGrid1 es: Private Sub MSFlexGrid1_DblClick() Modificar.Show End Sub Aquí nos damos cuenta que hay que crear un formulario al que llamaremos Modificar, el cual contendrá cuatro etiquetas, cuatro cajas de texto, las cuales formarán una matriz, para lo cual sencillamente copiamos la primera caja de texto y cuando Visual nos pregunte: Ya existe un control llamado ‘Text1’. ¿Desea crear una matriz de controles? Presionamos el botón Sí; un botón y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. e) El código del formulario Modificar es: En General declaramos la variable: Private a(4) As String 75 de 85 Cómo crear una base de datos en Access con Visual Basic Private Sub Form_Load() Dim i As Integer With Busquedas10.MSFlexGrid1 For i = 0 To .Cols - 1 Text1(i).Text = .TextMatrix(.Row, i) a(i) = .TextMatrix(.Row, i) Next End With End Sub f) El código del botón Actualizar Registros es: Private Sub Command1_Click() Dim modificar As String modificar = "select * from alumnos where matricula=" & Val(Text1(0)) Data1.RecordSource = modificar Data1.Refresh Data1.Recordset.Edit Data1.Recordset!nombre = Text1(1) Data1.Recordset!carrera = Text1(2) Data1.Recordset!turno = Text1(3) Data1.Recordset.Update Busquedas10.MSFlexGrid1.Clear Unload Me End Sub g) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. h) La etiqueta2 debe tener su propiedad Autosize en True, y la propiedad Caption en nada. Al iniciar el formulario Búsquedas10, el usuario podrá hacer doble clic en cualquier registro para editarlo de forma rápida en el formulario Modificar. Cuando de lleve a cabo la edición del registro, presionando el botón Todos los Registros, podremos ver el registro actualizado a nuestra conveniencia en el MSFlexGrid y la etiqueta2 mostrará la cantidad de registros mostrados. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 76 de 85 Cómo crear una base de datos en Access con Visual Basic En esta parte del ejercicio vamos a realizar una búsqueda para contar la cantidad de registros que satisfagan cierta condición, por ejemplo: cuántos alumnos hay que están inscritos en cierta carrera, turno, etc. Para lo cual crea un formulario con cuatro etiquetas, cuatro cajas de texto, dos MSFlexGrid, un combobox, un botón y dos controles Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del combobox1 es: Private Sub Combo1_DropDown() On Error Resume Next Do Until Data2.Recordset.EOF Combo1.AddItem Data2.Recordset.Fields("carrera") Data2.Recordset.MoveNext Loop End Sub b) El código del botón Contar Carreras es: Private Sub Command1_Click() Data2.RecordSource = "select count(carrera) as carreras from alumnos where carrera = '" & Combo1 & "'" Data2.Refresh End Sub 77 de 85 Cómo crear una base de datos en Access con Visual Basic c) Controles Data No olvides conectar los controles Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. d) Selecciona el objeto MSFlexGrid1, en su propiedad DataSource selecciona Data1, modifica su propiedad Cols a 5, cambia su propiedad Rows a 5, el MSFlexGrid2, debe ser conectado con el control Data2, modifica su propiedad Cols a 5, cambia su propiedad Rows a 2, opcionalmente puedes modificar sus propiedades de BackColor de la manera que más te agrade. Al iniciar el formulario Búsquedas11, el usuario podrá seleccionar una carrera de la caja de combo y al presionar el botón Contar Carreras, el MsFlexGrid2 mostrará la cantidad de registros que satisfagan la condición dada. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 78 de 85 Cómo crear una base de datos en Access con Visual Basic Supongamos que queremos totalizar una columna, por motivos de la tabla que estamos usando sumaremos el total de matrículas. Para este ejercicio crea un formulario con cuatro etiquetas, cuatro cajas de texto, dos MSFlexGrid, un botón y dos controles Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del botón La Suma de Matrículas es: Private Sub Command1_Click() Data2.RecordSource = "select sum(matricula) as suma from alumnos" Data2.Refresh End Sub 79 de 85 Cómo crear una base de datos en Access con Visual Basic Enseguida veremos como emplear el control DTPicker para realizar búsquedas por fechas, para lo cual, en la tabla alumnos hay que agregar um campo que se llame fecha_inscripción, misma que usaremos para las consultas. Crea un formulario con 5 etiquetas y 5 cajas de texto (recuerda que agregamos el campo fecha_inscripcion a la tabla alumnos), incluye un MSFlexGrid, 3 etiquetas, 2 botones, un control Data y 2 DatePicker. Para agregar los DTPicker ve a Proyecto, Componentes, Controles, Microsoft Windows Common Controls-2 6.0, haz clic en Aplicar y Aceptar, y estará disponible en la caja de herramienta. De modo que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del botón Búsqueda por Fecha es: Private Sub Command1_Click() Data1.RecordSource = "select * from alumnos where fecha_inscripcion between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#" Data1.Refresh Label6 = "Total de Registros de la búsqueda: " & (MSFlexGrid1.Rows) - 1 & "" If Data1.Recordset.RecordCount = 0 Then MsgBox "No Hay Registros con estos Parámetros" + vbCrLf + "Por Favor Revisa tus Datos", vbInformation, "¡Aviso Importante!" 80 de 85 Cómo crear una base de datos en Access con Visual Basic End If End Sub b) El código del botón Ver todos los Registros es: Private Sub Command2_Click() Data1.RecordSource = "alumnos" Data1.Refresh MSFlexGrid1.Refresh End Sub c) El código del formulario Búsquedas13 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 400 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2300 MSFlexGrid1.ColWidth(3) = 1400 MSFlexGrid1.ColWidth(4) = 900 MSFlexGrid1.ColWidth(5) = 1200 End Sub d) Control Data No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. e) Selecciona el objeto MSFlexGrid1, en su propiedad DataSource selecciona Data1, modifica su propiedad Cols a 5, cambia su propiedad Rows a 5, opcionalmente puedes modificar sus propiedades de BackColor de la manera que más te agrade. Al iniciar el formulario Búsquedas13, el usuario podrá seleccionar fechas de los objetos DTPicker para realizar búsquedas al presionar el botón Búsquedas por Fecha, el MsFlexGrid1 mostrará la cantidad de registros que satisfagan la condición dada. 81 de 85 Cómo crear una base de datos en Access con Visual Basic En parte del ejercicio, veremos algunas formas muy sencillas de imprimir el resultado de las consultas que se muestran em el MSFlexGrid, quiero mencionar que aunque pudieramos emplear un solo formulario, para los ejercicios, por cuestión de sencillez en la explicación usaremos más de uno. Para este ejercicio crea un formulario con cuatro etiquetas, cuatro cajas de texto, un MSFlexGrid, tres botones y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. Al igual que el ejercicio anterior, el formulario debe tener un menú con la opción Volver a Opciones. a) El código del formulario Impresión1 es: Private Sub Form_Load() MSFlexGrid1.ColWidth(0) = 400 MSFlexGrid1.ColWidth(1) = 800 MSFlexGrid1.ColWidth(2) = 2500 MSFlexGrid1.ColWidth(3) = 2000 MSFlexGrid1.ColWidth(4) = 1100 End Sub 82 de 85 Cómo crear una base de datos en Access con Visual Basic Private Sub Form_Unload(Cancel As Integer) Cancel = 1 MsgBox "Haz Clic en Archivo", vbInformation, "¡Aviso Importante!" End Sub b) El código del botón Ocultar Registros es: Private Sub Command1_Click() MSFlexGrid1.Clear End Sub c) El código del botón Mostrar Registros es: Private Sub Command2_Click() Data1.RecordSource = "alumnos" Data1.Refresh With MSFlexGrid1 For a = 1 To .Rows - 1 .Row = a For B = 1 To .Cols - 1 .Col = B .CellBackColor = IIf((a Mod 2) = 1, Val(&HC0FFFF), Val(&HC0FFC0)) .CellFontBold = True .CellForeColor = &HFF0000 Next B Next a End With End Sub d) El código del botón Imprimir Registros Seleccionados es: Private Sub Command3_Click() Printer.Print MSFlexGrid1.Clip Printer.EndDoc End Sub e) Control Data1 No olvides conectar el control Data a la base de datos mediante su propiedad DatabaseName, y a la tabla alumnos mediante su propiedad RecordSource. f) Selecciona el objeto MSFlexGrid, en su propiedad DataSource selecciona Data1, modifica su propiedad Cols a 5, cambia su propiedad Rows a 5, opcionalmente puedes modificar sus propiedades de BackColor de la manera que más te agrade. Al iniciar el formulario Impresión1, el usuario podrá ver u ocultar los registros mostrados en el MSFlexGrid, y podrá imprimir los registros que haya seleccionado del MSFlexGrid. El Botón cerrar del formulario se deshabilita para forzar el uso del Menú. 83 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Impresión2 Para este ejercicio crea un formulario con cuatro etiquetas, cuatro cajas de texto, un MSFlexGrid, tres botones y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. a) El código del botón Imprimir Formulario es: Private Sub Command3_Click() Impresion2.PrintForm Printer.EndDoc End Sub 84 de 85 Cómo crear una base de datos en Access con Visual Basic Creando la pantalla de Impresión3 Para este ejercicio crea un formulario con cuatro etiquetas, cuatro cajas de texto, un MSFlexGrid, tres botones y un control Data, cuya propiedad Visible debe ser cambiada a False, para que se vea más o menos como se ve abajo. a) El código del botón Imprimir Registros es: Private Sub Command3_Click() Printer.PaintPicture MSFlexGrid1.Picture, 0, 0 Printer.EndDoc End Sub Tutorial creado por: Lic. Jorge Alvarez S. [email protected] 85 de 85