You are on page 1of 80

Prof. Jean Carlos Blanco B.

Manual Práctico para diseñar


Sistemas en Microsoft Visual Basic 6.0

FASE #01
- Crear carpeta de trabajo en una ruta especifica

Mi_Sistema_Version_1.0 Unidad de Almacenamiento

- Construir Base de Datos del Sistema

Pasos básicos a la hora de diseñar su base de datos

Determinar la finalidad de la base de datos.

El primer paso para diseñar una base de datos es determinar su finalidad y cómo se va a
utilizar.

 Hable con los demás usuarios que utilizarán la base de datos. Piensen
detenidamente en las preguntas que desean que responda la base de datos.
 Realice bocetos de los informes que desea que genere la base de datos.
 Reúna los formularios que utiliza actualmente para registrar los datos.

En cuanto determine la finalidad de su base de datos, comenzarán a surgir ideas acerca de


la información que desea obtener de ella. Entonces ya puede determinar qué hechos
necesita almacenar en la base de datos y a qué tema corresponde cada hecho. Estos
Prof. Jean Carlos Blanco B.

hechos se corresponden con los campos (columnas) de la base de datos y los temas a los
que pertenecen los hechos son las tablas.

Determinar los campos necesarios en la base de datos

Cada campo es un hecho acerca de un tema determinado. Por ejemplo, puede que sea
necesario almacenar los hechos siguientes acerca de los clientes: nombre de la
organización, dirección, ciudad, estado o provincia, y número de teléfono. Deberá crear un
campo independiente para cada uno de estos hechos. A la hora de determinar qué campos
son necesarios, tenga presentes estos principios de diseño:

 Incluya toda la información que necesite.


 Almacene información en partes lógicas que sean lo más pequeñas posibles. Por
ejemplo, los nombres de los empleados suelen repartirse en dos campos, Nombre y
Apellidos, para que sea más fácil ordenar los datos por Apellidos.
 No cree campos para datos que estén formados por listas de múltiples elementos.
Por ejemplo, si en una tabla Proveedores se crea un campo Productos que contenga
una lista con los productos que se reciben del proveedor separados mediante una
coma, después será más difícil encontrar los proveedores que suministren un
producto determinado.
 No incluya datos derivados ni calculados (datos que son el resultado de una
expresión (expresión: cualquier combinación de operadores matemáticos o lógicos,
constantes, funciones y nombres de campos, controles y propiedades que evalúa a
un solo valor. Las expresiones puede realizar cálculos, manipular caracteres o
probar datos.)). Por ejemplo, si tiene un campo PrecioUnitario y un campo Cantidad,
no cree otro campo que multiplique los valores de ambos.
 No cree campos que sean similares entre sí. Por ejemplo, si en una tabla
Proveedores crea los campos Producto1, Producto2 y Producto3, será más difícil
encontrar todos los proveedores que suministran un producto determinado.
Asimismo, será necesario cambiar el diseño de la base de datos si un proveedor
suministra más de tres productos. Sólo necesitará un campo para los productos si
coloca dicho campo en una tabla Productos en lugar de en una tabla Proveedores.

Determinar las tablas que se necesitan en la base de datos.

Cada tabla debe contener información sobre un asunto. Su lista de campos le dará pistas
acerca de las tablas que necesita. Por ejemplo, si tiene un campo FechaContratación, su
asunto es un empleado y, por tanto, pertenece a la tabla Empleados. Puede tener una tabla
para Clientes, una tabla para Productos y una tabla para Pedidos.
Prof. Jean Carlos Blanco B.

Determinar a qué tabla pertenece cada campo

A la hora de decidir a qué tabla pertenece cada campo, tenga presentes estos principios
de diseño:

 Agregue el campo a una sola tabla.


 No agregue el campo a una tabla si, como resultado, la misma información va a
aparecer en varios registros de esa tabla. Si determina que un campo de una tabla
va a contener mucha información duplicada, seguramente ese campo se encuentra
en una tabla que no le corresponde.

Por ejemplo, si coloca el campo que contiene la dirección de un cliente en la tabla


Pedidos, probablemente esa información se va a repetir en más de un registro,
porque seguramente el cliente va a realizar más de un pedido. Sin embargo, si
coloca el campo de dirección en la tabla Clientes, aparecerá una sola vez. A este
respecto, una tabla de una base de datos de Microsoft Access (base de datos de
Microsoft Access: colección de datos y objetos (como tablas, consultas o
formularios), que está relacionada con un tema o propósito concreto. El motor de
base de datos Microsoft Jet administra los datos.) es diferente de una tabla de
base de datos de archivos simples, como una hoja de cálculo.

Cuando cada elemento de información se almacena una sola vez, se actualiza en un


solo lugar. Esto resulta más eficiente y elimina la posibilidad de que existan
entradas duplicadas que contengan información diferente.

Identificar el campo o los campos con valores únicos en cada registro

Para que Microsoft Access conecte información almacenada en tablas distintas (por
ejemplo, para conectar un cliente con todos los pedidos del cliente) , cada tabla de la base
de datos debe incluir un campo o un conjunto de campos que identifiquen de forma
exclusiva cada registro de la tabla. Este campo o conjunto de campos se denomina clave
principal (clave principal: uno o más campos (columnas) cuyos valores identifican de manera
exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulo y
debe tener siempre un índice exclusivo. Una clave principal se utiliza para relacionar una
tabla con claves externas de otras tablas.).

Determinar las relaciones entre las tablas.

Ahora que ha dividido la información en tablas y que ha identificado los campos de clave
principal (clave principal: uno o más campos (columnas) cuyos valores identifican de manera
Prof. Jean Carlos Blanco B.

exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulo y
debe tener siempre un índice exclusivo. Una clave principal se utiliza para relacionar una
tabla con claves externas de otras tablas.), necesita una forma de indicar a Microsoft
Access cómo volver a reunir toda la información relacionada de un modo significativo. Para
ello se definen relaciones (relación: asociación que se establece entre campos comunes
(columnas) en dos tablas. Una relación puede ser uno a uno, uno a varios o varios a varios.)
entre las tablas.

Puede resultar útil ver las relaciones de una base de datos existente bien diseñada, como
la base de datos de ejemplo Neptuno.

Perfeccionar el diseño

Una vez diseñadas las tablas, los campos y las relaciones (relación: asociación que se
establece entre campos comunes (columnas) en dos tablas. Una relación puede ser uno a
uno, uno a varios o varios a varios.) que necesita, es el momento de estudiar el diseño y
detectar los posibles fallos. Es más sencillo cambiar el diseño de la base de datos ahora
que una vez que haya rellenado las tablas con datos.

Utilice Microsoft Access para crear las tablas, especificar relaciones entre las tablas e
introducir suficientes datos de ejemplo en las tablas para poder comprobar el diseño. Para
probar las relaciones de la base de datos, compruebe si puede crear consultas para
obtener las respuestas que desea. Cree bocetos de los formularios e informes, y
compruebe si muestran los datos esperados. Busque duplicaciones de datos innecesarias y
elimínelas.

Introducir datos y crear otros objetos de la base de datos

Cuando considere que la estructura de las tablas cumple los principios de diseño descritos
anteriormente, es el momento de comenzar a agregar los datos existentes a las tablas.
Después, puede crear otros objetos de base de datos (consultas (consulta: pregunta
sobre los datos almacenados en las tablas o solicitud para llevar a cabo una acción en los
datos. Una consulta puede unir datos de varias tablas para servir como origen de datos de
un formulario, informe o página de acceso a datos.), formularios (formulario: objeto de
base de datos de Access en el que se colocan controles para realizar acciones o para
especificar, mostrar y editar datos en los campos.), informes (informe: objeto de base de
datos de Access que imprime información a la que se ha dado formato y se ha organizado
de acuerdo con sus especificaciones. Ejemplos de informes: resúmenes de ventas, listines
telefónicos y etiquetas de correo.), páginas de acceso a datos (página de acceso a datos:
Prof. Jean Carlos Blanco B.

página Web, publicada desde Access, que tiene una conexión a una base de datos. En una
página de acceso a datos, puede ver, agregar, editar y manipular los datos almacenados en
la base de datos. Una página puede incluir también datos de otros orígenes de datos, como
Excel.), macros (macro: acción o conjunto de acciones utilizados para automatizar tareas.)
y módulos (módulo: colección de declaraciones, instrucciones y procedimientos
almacenados juntos como una unidad con nombre. Existen dos tipos de módulos: módulos
estándar y módulos de clase.)).

Utilizar las herramientas de análisis de Microsoft Access

Microsoft Access incluye dos herramientas que pueden ayudarle a perfeccionar el diseño
de una base de datos de Microsoft Access (base de datos de Microsoft Access: colección
de datos y objetos (como tablas, consultas o formularios), que está relacionada con un
tema o propósito concreto. El motor de base de datos Microsoft Jet administra los
datos.).

 El Analizador de tablas puede analizar el diseño de una tabla, proponer nuevas


estructuras y relaciones (relación: asociación que se establece entre campos
comunes (columnas) en dos tablas. Una relación puede ser uno a uno, uno a varios o
varios a varios.) de tablas, si es conveniente, y dividir una tabla en nuevas tablas
relacionadas, si es necesario.
 El Analizador de rendimiento puede analizar la base de datos completa y realizar
recomendaciones y sugerencias para mejorarla. El asistente también puede
implantar estas recomendaciones y sugerencias.

Tomando la explicación anterior (pasos básicos para construir una base de datos) vamos a
elaborar una base de datos que lleve el Control de Citas para Pacientes en una Clínica.
Prof. Jean Carlos Blanco B.
Paso 1.- Desarrollamos la siguiente plantilla:

Diccionario de Datos

Nombre de la Base de Datos: bdClinica

Nombre de la Tabla: tbPacientes

Permitir Longitud de Cero

Indexado (IU, ICD,ISD)

Clave Principal

Clave Foránea
Requerido
Nombre del Campo Tipo de Datos Tamaño Formato Mascara Titulo / Descripción

N_Hist Texto 6 - "A-"9999 N° de Historia X No IU X


Nom_Ape Texto 60 - - Nombre y Apellido X No ICD
Fec_Nac Fecha/Hora - Fecha corta 99/99/99 Fecha Nacimiento X No ICD
Edad Número Byte Número general 999 Edad No ICD
Sexo_Mas Sí/No - Sí/No - Masculino X No ICD
Sexo_Fem Sí/No - Sí/No - Femenino X No ICD
Ocup Texto 35 - - Ocupación X No -
Dire Memo - - - Dirección X No -
Telf Texto 11 - \(9999")-"999\-99\-99 Teléfono X No -
Prof. Jean Carlos Blanco B.
Nombre de la Tabla: tbHistoria_Clinica

Permitir Longitud de Cero

Indexado (IU, ICD,ISD)

Clave Principal

Clave Foránea
Requerido
Nombre del Campo Tipo de Datos Tamaño Formato Mascara Titulo / Descripción

Id_Hist_Cli Autonumerico Entero largo Número general - Identif. Historia Cli X No IU X


Indicac Memo - - - Indicaciones - Si - - -
Fec_At Fecha/Hora - Fecha corta 99/99/99 Fecha de Atención X No ICD
N_Hist_Fora Texto 6 - "A-"9999 N° de Historia X No ICD X

Nombre de la Tabla: tbCitas

Permitir Longitud de Cero

Indexado (IU, ICD,ISD)

Clave Principal

Clave Foránea
Requerido
Nombre del Campo Tipo de Datos Tamaño Formato Mascara Titulo / Descripción

Id_Citas Autonumerico Entero largo Número general - Identif. Citas X No IU X


Fec_Cita Fecha/Hora - Fecha corta 99/99/99 Fecha de Cita X No ICD
Hor_Cita Fecha/Hora - Fecha corta 99/99/99 Hora de Cita X No ICD
N_Hist_Fora Texto 6 - "A-"9999 N° de Historia X No ICD X
Prof. Jean Carlos Blanco B.
Modelo de Entidad – Relación

DS02 TbHistoria_Clinica

Id_Hist_Cli (Clave Primaria)

Indica
Fech_Act
Se
Asigna N_Hist (Clave Foránea)

DS01 TbPacientes

N_Hist (Clave Primaria)

Nom_Ape DS03 TbCitas


Fech_Nac
Edad
Id_Citas (Clave Primaria)
Sexo_Mas
Sexo_Fem Solicita
Ocup
Dire Fec_Cita
Telf Hor_Cita

N_Hist (Clave Foránea)


Prof. Jean Carlos Blanco B.

Después de haber diseñado la estructura de la base de datos procedemos a crearla en


Microsoft Access de la siguiente forma:

Paso 1.- Abrimos la aplicación desde el botón inicio de la barra de tareas/todos los
programas/Microsoft office/Microsoft Access 2003│2007

Paso 2.- Estando en el panel de inicio de la aplicación presionamos clic en la opción Base de
datos en blanco, y colocamos el nombre de la base de datos que ya asignamos en la plantilla
y seleccionamos la ruta donde grabamos la carpeta de trabajo para nuestro sistema,
después de haber realizado esos pasos procedemos a presionar clic en el botón crear.
Prof. Jean Carlos Blanco B.

Paso 3.- Ahora en este paso presionaremos clic derecho sobre la tabla1 donde aparecerá
un menú desplegable donde seleccionaremos vista diseño para comenzar a rellenar los
campos requeridos para dicha tabla (Ver anexo Plantilla); quedando de la siguiente forma:

En esta figura colocamos el


nombre de la tabla que
deseamos crear
Prof. Jean Carlos Blanco B.

Y por último empezamos a configurar la tabla según nuestra plantilla.

Después de haber creado todas las tablas procedemos a crear las relaciones entre las
tablas. Veamos las ilustraciones para crearla:

- Seleccionamos la ficha Herramientas de base de datos

- Presionamos clic en el icono de relaciones


Prof. Jean Carlos Blanco B.

- Presionamos clic en el icono mostrar tabla

Abrimos cada una de


Las tablas disponibles
Para realizar las
Correspondientes
Relaciones

- Al visualizar todas las tablas arrastramos el campo que contenga la clave principal
sobre la clave foránea, donde aparecerá un cuadro que valida la relación entre
ambos campos; solo tenemos que activar las tres casillas para que se cumpla la
normalización en cascada de los registros que se encuentran en ambas tablas
quedando de así de la siguiente forma:
Prof. Jean Carlos Blanco B.

Con este paso ya hemos finalizado el proceso de elaboración de la base de datos ahora
procedemos abrir la aplicación de visual basic 6.0

Abrimos el
Icono EXE estándar
Prof. Jean Carlos Blanco B.

- Presionamos clic derecho en cuadro de


herramientas/Componentes

Activamos todos los componentes


CIA XP, Microsoft Masked Edit
Control 6.0, Microsoft Tabbed
Control 6.0, Microsoft Windows
Common Control 6.0 (SP6),
Shockwave Flash. Aplicamos y
Aceptamos los cambios.

Ahora empezamos a diseñar las pantallas del sistema

Pantalla #01.- Pantalla de Inicio


Prof. Jean Carlos Blanco B.

Label2

Label1

Timer1

ProgressBar 20

Objeto Propiedad Valor


Form Name frmInicio
BackColor Blanco
BorderStyle 1.- Fixed Single
Caption Pantalla de Inicio
Icon Ruta de un icono
Moveable False
Picture Ruta de Imagen
StarUpPosition 2.- Center Screen
WindowsState 0.- Normal
Label1 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Automated System of
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label2 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Medical Doctor's offices
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


Timer1 Name trmTiempo
Enabled True
Interval 1000
ProgressBar20 Name prbBarra
Min 0
Max 5

Codificación Pantalla Inicio

- Presionamos doble clic sobre el objeto timer1

- Declaramos la variable que llevará el conteo del proceso


Static Proceso As Integer
- Creamos un contador para que automáticamente avance la carga del control
progreso (prgBarra)
Proceso = Proceso + 1
- Igualamos el valor de la barra progreso (prgBarra) al contador para que el mismo
avance
Me.prgBarra.Value = Proceso
- Creamos un ciclo condicional donde verificamos si el valor del Proceso es igual a 6
segundo entonces detenemos el reloj (trmTiempo) y avanzamos a una nueva pantalla
y cerramos el formulario actual
If Proceso = 6 Then
trmTiempo.Enabled = False
frmLogin.Show
Unload Me
End If
- Quedando finalmente la codificación de la siguiente forma:
Prof. Jean Carlos Blanco B.

- Ahora regresamos a la fase de diseño y presionaremos doble clic sobre el


formulario

Cambiamos el evento
Cargar (Load) por Descargar (Unload)

- Solo escribiremos descargar (unload me), ya que al presionar el usuario sobre el


botón cerrar éste cancelará la inicialización del sistema.

Unload me

Pantalla #02.- Pantalla de Seguridad


Prof. Jean Carlos Blanco B.

Label1

Image1
Label2
XPComboBox201

XPText201

XPFrame201

XPFrame202
Label3

Label4 XPButton201 XPButton203

XPButton202

Objeto Propiedad Valor


Form Name frmLogin
BackColor Blanco
BorderStyle 1.- Fixed Single
Caption Pantalla de Seguridad
Icon Ruta de un icono
Moveable False
Picture Ruta de Imagen
StarUpPosition 2.- Center Screen
WindowsState 0.- Normal
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


Label1 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Automated System of
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label2 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Medical Doctor's offices
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label3 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption User
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label4 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Password
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
XPFrame201 Name fraMarco1
Alignment 2.- CiaRight
BackColor Blanco
Caption Information Operator of the System
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPFrame202 Name fraMarco2
Alignment 2.- CiaRight
BackColor Blanco
Caption Buttons
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPComboBox201 Name cboUser
Alignment 1.- cboCenterAlign
Font Cualquiera
ForeColor Cualquiera
Style 1.-cboDropDownList
Text Vacio
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


XPText201 Name txtPass
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Font Cualquiera
ForeColor Cualquiera
MaxLength 5
Passwordchar *
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
XPButton201 Name cmdAceptar
BackColor Cualquiera
Caption &Aceptar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton202 Name cmdNuevo
BackColor Cualquiera
Caption &Nuevo
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton203 Name cmdSalir
BackColor Cualquiera
Caption &Salir
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
Image1 Name imgFigura
Picture Cualquiera
Stretch True
Prof. Jean Carlos Blanco B.
Abrimos la base de datos creada y agregamos una nueva tabla llamada Seguridad

Nombre de la Tabla: tbSeguridad

Permitir Longitud de Cero

Indexado (IU, ICD,ISD)

Clave Principal

Clave Foránea
Requerido
Nombre del Campo Tipo de Datos Tamaño Formato Mascara Titulo / Descripción

IdPassw Texto 5 - Contraseña Contraseña X No IU X


Nom Texto 25 - - Nombre X No ICD
Ape Texto 25 - - Apellido X No ICD
Adm Sí/No - - - Administrador N/A No ICD
Ope Sí/No - - - Operador N/A No ICD
Prof. Jean Carlos Blanco B.

Después de haber realizado la modificación cerramos la base de datos y procedemos a


realizar lo siguiente:

Activación DNS del Sistema


Prof. Jean Carlos Blanco B.

Activación de la librería ADO y Módulo para conexión de base de datos

Activamos la casilla Microsoft Activex Data


Control 2,5 ó 2,6 ó 2.7 ó 2.8; buscamos la
versión más actualizada
Prof. Jean Carlos Blanco B.

Codificación Fase I Pantalla Seguridad

Private Sub cmdAceptar_Click()


On Error GoTo Depurar
Conectar_BD
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbSeguridad"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
Bu = MyRec!Nom
Bu2 = MyRec!idPassw
Bu3 = MyRec!Ope
Bu4 = MyRec!Adm
If Me.cboUser.Text = Bu And Me.txtPass.Text = Bu2 And Bu3 = True Then
MsgBox " Bienvenido al Sistema Señor(a) " & Bu & " Su Status dentro del sistema es de Usuario"
FrmMenu.Show
Status = "OPE"
Unload Me
Exit Sub
Else
If Me.cboUser.Text = Bu And Me.txtPass.Text = Bu2 And Bu4 = True Then
MsgBox " Bienvenido al Sistema Señor(a) " & Bu & " Su Status dentro del sistema es de Administrador"
FrmMenu.Show
Status = "ADM"
Unload Me
Exit Sub
End If
End If

MyRec.MoveNext
If MyRec.EOF = True Then
conterror = conterror + 1
MsgBox "Contraseña Invalida", vbCritical, "Valores de Entrada Incorrectos"
MsgBox "Te quedan " & " " & (3 - conterror) & " Intentos "
If conterror = 3 Then
End
End If
Exit Sub
End If
Loop
MyRec.Close
Desconectar_BD
Exit Sub
Depurar:
MsgBox "La información del sistema no está disponible en este momento", vbCritical
End Sub
Prof. Jean Carlos Blanco B.

Private Sub cmdCerrar_Click()


frmLogin.Width = 8760
fraMarco3.Visible = False
End Sub

Private Sub cmdNuevo_Click()


frmLogin.Width = 15360
fraMarco3.Visible = True
End Sub

Private Sub Form_Load()


frmLogin.Width = 8760
On Error GoTo solucion
Conectar_BD
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbSeguridad"

MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic


MyRec.MoveFirst
Do While MyRec.EOF = False
Bu = MyRec!Nom
Me.cboUser.AddItem (Bu)
MyRec.MoveNext
If MyRec.EOF = True Then
Exit Sub
End If
Loop
MyRec.Close
Desconectar_BD
Exit Sub
solucion:
MsgBox "No hay registros de usuarios activos. Por favor agregue nuevos usuarios ", vbExclamation
Exit Sub
End Sub
Prof. Jean Carlos Blanco B.

Image 2
XPFrame203
XPFrame205

Label7 XPText203
Label8 XPText204

Label9 XPText205
Label10 XPText206

XPOption201 XPOption202
Label5

Label6 XPComboBox202 XPFrame204 XPFrame206

XPText202
XPButton204 XPButton206

XPButton205
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


Label5 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption User
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label6 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Password
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label7 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Nombre
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label8 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Apellido
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label9 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Password
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label10 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Repetir Password
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Prof. Jean Carlos Blanco B.

XPFrame203 Name fraMarco3


Alignment 2.- CiaRight
BackColor Blanco
Caption New User
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPFrame204 Name fraMarco4
Alignment 2.- CiaRight
BackColor Blanco
Caption Information Operator of the System
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPFrame205 Name fraMarco5
Alignment 2.- CiaRight
BackColor Blanco
Caption Datos Nuevo Usuario
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
Visible False
XPFrame206 Name fraMarco6
Alignment 2.- CiaRight
BackColor Blanco
Caption Buttons
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
Visible False
XPComboBox202 Name cboUsuario
Alignment 1.- cboCenterAlign
Font Cualquiera
ForeColor Cualquiera
Style 1.-cboDropDownList
Text Vacio
XPText202 Name txtClave
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Font Cualquiera
ForeColor Cualquiera
MaxLength 5
Passwordchar *
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


XPText203 Name txtNom
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Font Cualquiera
ForeColor Cualquiera
MaxLength 25
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
XPText204 Name txtApe
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Font Cualquiera
ForeColor Cualquiera
MaxLength 25
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
XPText205 Name txtAgr_Clave
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Font Cualquiera
ForeColor Cualquiera
MaxLength 5
Passwordchar *
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
XPText206 Name txtRep_Clave
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Font Cualquiera
ForeColor Cualquiera
MaxLength 5
Passwordchar *
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
XPButton205 Name cmdGuardar
BackColor Cualquiera
Caption &Guardar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


XPButton206 Name cmdLimpiar
BackColor Cualquiera
Caption &Limpiar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton207 Name cmdCerrar
BackColor Cualquiera
Caption &Cerrar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
Image2 Name imgClinica
Picture Cualquiera
Stretch True
XPOption201 Name optAdmin
Alignment 0.- CiaLeftJustify
Caption Administrador
Style 1.- CiaTransparent
XPOption202 Name optOpera
Alignment 0.- CiaRightJustify
Caption Operador
Stretch 1.- CiaTransparent

Codificación Fase II Pantalla Seguridad

Código al cargar el formulario (Nota: solo añadimos a esa codificación lo que se encuentran en negrita)

Private Sub Form_Load()


frmLogin.Width = 8760
On Error GoTo solucion
Conectar_BD
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbSeguridad"

MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic


MyRec.MoveFirst
Do While MyRec.EOF = False
bu = MyRec!Nom
Me.cboUser.AddItem (bu)
Me.cboUsuario.AddItem (bu)
MyRec.MoveNext
If MyRec.EOF = True Then
Exit Sub
End If
Loop
MyRec.Close
Desconectar_BD
Prof. Jean Carlos Blanco B.

Exit Sub
solucion:
MsgBox "No hay registros de usuarios activos. Por favor agregue nuevos usuarios ", vbExclamation
cmdNuevo_Click
frmLogin.shwCargar.Visible = False
frmLogin.fraMarco4.Enabled = False
frmLogin.fraMarco5.Visible = True
frmLogin.fraMarco6.Visible = True
frmLogin.txtApe.Enabled = False
frmLogin.optAdmin.Enabled = False
frmLogin.optOpera.Enabled = False
frmLogin.txtAgr_Clave.Enabled = False
frmLogin.txtRep_Clave.Enabled = False
Exit Sub
End Sub

Codificación al hacer un cambio en la casilla txtclave

Private Sub txtClave_Click()


Me.shwCargar.Playing = True
Me.shwCargar.Movie = App.Path & "\carga.swf"
End Sub

Validando la casilla nombre y focalizando el cursor en la próxima casilla

Private Sub txtNom_KeyPress(KeyAscii As Integer)


Dim Enter As String
Dim strValido As String
Enter = KeyAscii
strValido = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ´ "
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii > 26 Then
If InStr(strValido, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
If Enter = 13 Then
If Me.txtNom.Text = "" Then
Me.txtNom.SetFocus
Me.txtApe.Enabled = False
Me.optAdmin.Enabled = False
Me.optOpera.Enabled = False
Me.txtAgr_Clave.Enabled = False
Me.txtRep_Clave.Enabled = False
Exit Sub
Else
Me.txtApe.Enabled = True
Me.txtApe.SetFocus
End If
End If
End Sub
Prof. Jean Carlos Blanco B.

Validando la casilla apellido y focalizando el cursor en la próxima casilla

Private Sub txtApe_KeyPress(KeyAscii As Integer)


Dim Enter As String
Dim strValido As String
Enter = KeyAscii
strValido = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ´ "
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii > 26 Then
If InStr(strValido, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
If Enter = 13 Then
If Me.txtApe.Text = "" Then
Me.txtApe.SetFocus
Me.optAdmin.Enabled = False
Me.optOpera.Enabled = False
Me.txtAgr_Clave.Enabled = False
Me.txtRep_Clave.Enabled = False
Exit Sub
Else
Me.optAdmin.Enabled = True
Me.optOpera.Enabled = True
Me.optAdmin.SetFocus
End If
End If
End Sub

Validando opción administrador

Private Sub optAdmin_Click()


Me.optOpera.Value = False
End Sub

Validando opción operador

Private Sub optOpera_Click()


Me.optAdmin.Value = False
End Sub

Validando casilla txtAgr_Clave

Private Sub txtAgr_Clave_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.txtAgr_Clave.Text = "" Then
Me.txtAgr_Clave.SetFocus
Exit Sub
Else
Me.txtRep_Clave.Enabled = True
Me.txtRep_Clave.SetFocus
Prof. Jean Carlos Blanco B.

End If
End If
End Sub

Validando casilla txtRep_Clave

Private Sub txtRep_Clave_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.txtRep_Clave.Text = "" Then
Me.txtRep_Clave.SetFocus
Exit Sub
Else
If Me.txtAgr_Clave.Text <> Me.txtRep_Clave.Text Then
MsgBox "No coinciden los password por favor vuelva a intentar", vbCritical, "Claves Incorrectas"
Me.txtAgr_Clave.Text = ""
Me.txtRep_Clave.Text = ""
Me.txtRep_Clave.Enabled = False
Me.txtAgr_Clave.SetFocus
Exit Sub
Else
Me.fraMarco6.Visible = True
Me.cmdGuardar.SetFocus
End If
End If
End If
End Sub

Codificación botón Guardar

Private Sub cmdGuardar_Click()


On Error GoTo Verificar
Conectar_BD
VAR1 = Me.txtNom.Text
VAR2 = Me.txtApe.Text
VAR3 = Me.optAdmin.Value
VAR4 = Me.optOpera.Value
VAR5 = Me.txtAgr_Clave.Text
Dim micom As ADODB.Command
Set micom = New ADODB.Command
micom.CommandType = adCmdText
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbSeguridad"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
bu = MyRec!Nom
bu1 = MyRec!Ape
Bu2 = MyRec!idPassw
If Me.txtNom.Text = bu And Me.txtApe.Text = bu1 And Me.txtAgr_Clave.Text = Bu2 Then
MsgBox "Este usuario ya se encuentra registrado en el sistema", vbCritical, "Error de Redundancia de datos"
Limpiar
Prof. Jean Carlos Blanco B.

Me.txtApe.Enabled = False
Me.optAdmin.Enabled = False
Me.optOpera.Enabled = False
Me.txtAgr_Clave.Enabled = False
Me.txtRep_Clave.Enabled = False
Me.txtNom.SetFocus
Exit Sub
End If
MyRec.MoveNext
If MyRec.EOF = True Then
1 If VAR3 = "Falso" Then
2 VAR3 = 0
3 Else
4 VAR3 = 1
5 End If
6 If VAR4 = "Verdadero" Then
7 VAR4 = 1
8 Else
9 VAR4 = 0
10 End If
11 micom.CommandText = "Insert into tbseguridad (nom,ape,adm,ope,idPassw) values ('" & VAR1 & "', '" & VAR2 &
"', '" & VAR3 & "', '" & VAR4 & "', '" & VAR5 & "')"
12 micom.ActiveConnection = MiConex
13 micom.Execute
14 Set micom = Nothing
15 MsgBox "Usuario guardado correctamente", vbInformation, "Datos agregados a la base de datos"
16 Limpiar
17 Me.txtApe.Enabled = False
18 Me.optAdmin.Enabled = False
19 Me.optOpera.Enabled = False
20 Me.txtAgr_Clave.Enabled = False
21 Me.txtRep_Clave.Enabled = False
22 Me.txtNom.SetFocus
23 Exit Sub
24 End If
Loop
MyRec.Close
Desconectar_BD
Exit Sub
Verificar:
If Error = "El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro
actual." Then
GoTo 1
Exit Sub
Else
MsgBox "Imposible realizar accion por favor consulte manual del sistema"
Exit Sub
End If
End Sub
Prof. Jean Carlos Blanco B.

Codificación Botón Limpiar

Private Sub cmdLimpiar_Click()


Limpiar
End Sub

Codificación Botón Cerrar

Private Sub cmdCerrar_Click()


frmLogin.Width = 8760
fraMarco3.Visible = False
fraMarco5.Visible = False
fraMarco6.Visible = False
Me.fraMarco4.Enabled = True
Me.shwCargar.Visible = True
Limpiar
Me.cboUser.Clear
Me.cboUsuario.Clear
Form_Load
End Sub

Subturina Limpiar

Sub Limpiar()
Me.txtApe.Text = ""
Me.txtNom.Text = ""
Me.optAdmin.Value = False
Me.optOpera.Value = False
Me.txtAgr_Clave.Text = ""
Me.txtRep_Clave.Text = ""
Me.txtClave.Text = ""
End Sub
Prof. Jean Carlos Blanco B.

Pantalla #03.- Pantalla Menú Principal

XPFrame201

XPButton201 XPButton202

Image1 Image2

Image3

XPButton203
XPButton204

Image5

Image4
XPButton205
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


Form Name frmMenu
BackColor Blanco
BorderStyle 1.- Fixed Single
Caption Pantalla Menú Principal
Icon Ruta de un icono
Moveable False
Picture Ruta de Imagen
StarUpPosition 2.- Center Screen
WindowsState 0.- Normal
XPFrame201 Name fraMarco6
Alignment 2.- CiaRight
BackColor Blanco
Caption Buttons
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPButton201 Name cmdCitas
BackColor Cualquiera
Caption &Citas
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton202 Name cmdReportes
BackColor Cualquiera
Caption &Reportes
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton203 Name cmdHistorial
BackColor Cualquiera
Caption &Historial
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton204 Name cmdSalir
BackColor Cualquiera
Caption &Salir
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton206 Name cmdPacientes
BackColor Cualquiera
Caption &Pacientes
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
Image1 Name imgFigura
Picture Cualquiera
Stretch True
Prof. Jean Carlos Blanco B.

Image2 Name imgFigura


Picture Cualquiera
Stretch True
Image3 Name imgFigura
Picture Cualquiera
Stretch True
Image4 Name imgFigura
Picture Cualquiera
Stretch True
Image5 Name imgFigura
Picture Cualquiera
Stretch True

Codificación Botón Citas

Private Sub cmdCitas_Click()


frmCitas.Show
Unload Me
End Sub

Codificación Botón Reportes

Private Sub cmdReportes_Click()


frmReportes.Show
Unload Me
End Sub

Codificación Botón Historial

Private Sub cmdHistorial_Click()


frmHisto.Show
Unload Me
End Sub

Codificación Botón Pacientes

Private Sub cmdPacientes_Click()


frmPacientes.Show
Unload Me
End Sub

Codificación Botón Salir

Private Sub cmdSalir_Click()


End
End Sub
Prof. Jean Carlos Blanco B.

Pantalla #04.- Pantalla Pacientes

XPButton203

XPButton202 XPButton205

XPButton201 XPButton206 XPFrame201

XPButton204

Image1
XPFrame202

XPMaskEdit201
Label1
XPText201
Label2 XPMaskEdit202
Label3 XPText202
Label4 XPOption202

XPOption201

Label5

Label6
Label7 XPMaskEdit203 XPText204 XPText203
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


Form Name frmPacientes
BackColor Blanco
BorderStyle 1.- Fixed Single
Caption Pantalla de pacientes
Icon Ruta de un icono
Moveable False
Picture Ruta de Imagen
StarUpPosition 2.- Center Screen
WindowsState 0.- Normal
Label1 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption N° de historia
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label2 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Nombres y Apellidos
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label3 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Fecha de Nacimiento
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label4 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Edad
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label5 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Ocupación
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Prof. Jean Carlos Blanco B.

Label6 Name lblInfo


Alignment 2.- Center
AutoSize True
Caption Dirección
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label7 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Teléfono
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
XPFrame201 Name fraMarco6
Alignment 2.- CiaRight
BackColor Blanco
Caption Buttons
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPFrame202 Name fraMarco5
Alignment 2.- CiaRight
BackColor Blanco
Caption Datos del Paciente
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPText201 Name txtNom
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Enabled False
Font Cualquiera
ForeColor Cualquiera
MaxLength 60
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
XPText202 Name txtEdad
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Enabled False
Font Cualquiera
ForeColor Cualquiera
MaxLength 3
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
Prof. Jean Carlos Blanco B.

XPText203 Name txtOcup


Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Enabled False
Font Cualquiera
ForeColor Cualquiera
MaxLength 70
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
XPText204 Name txtDir
Alignment 2.- Align Center
ButtonCaptionVAlignment 1.- btnMiddle
Enabled False
Font Cualquiera
ForeColor Cualquiera
MaxLength 0
RequiredField True
Text Vacio
TextPosition 1.- Align Middle
XPButton201 Name cmdAgregar
BackColor Cualquiera
Caption &Agregar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton202 Name cmdModificar
BackColor Cualquiera
Caption &Modificar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton203 Name cmdEliminar
BackColor Cualquiera
Caption &Eliminar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton204 Name cmdBuscar
BackColor Cualquiera
Caption &Buscar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
Prof. Jean Carlos Blanco B.

XPButton205 Name cmdRegresar


BackColor Cualquiera
Caption &Regresar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton206 Name cmdLimpiar
BackColor Cualquiera
Caption &Limpiar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPMaskEdit201 Name msk_Historia
Enabled True
Mask >?-9999
XPMaskEdit202 Name mskFN
Enabled False
Mask 99/99/9999
XPMaskEdit203 Name mskTlf
Enabled False
Mask (9999)-999-99-99
Image1 Name imgFigura
Picture Cualquiera
Stretch True
XPOption201 Name optM
Alignment 0.- CiaLeftJustify
Caption Masculino
Style 1.- CiaTransparent
XPOption202 Name optF
Alignment 0.- CiaRightJustify
Caption Femenino
Stretch 1.- CiaTransparent

Codificación de la casilla msk_Historia

Private Sub msk_Historia_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.msk_Historia.Text = "_-____" Then
Me.msk_Historia.SetFocus
Me.txtNom.Enabled = False
Me.mskFN.Enabled = False
Me.optF.Enabled = False
Me.optM.Enabled = False
Me.txtOcup.Enabled = False
Me.txtDir.Enabled = False
Me.mskTlf.Enabled = False
Exit Sub
Else
Me.txtNom.Enabled = True
Prof. Jean Carlos Blanco B.

Me.txtNom.SetFocus
End If
End If
End Sub

Codificación de la casilla txtNom

Private Sub txtNom_KeyPress(KeyAscii As Integer)


Dim Enter As String
Dim strValido As String
Enter = KeyAscii
strValido = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ´ "
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii > 26 Then
If InStr(strValido, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
If Enter = 13 Then
If Me.txtNom.Text = "" Then
Me.txtNom.SetFocus
Me.mskFN.Enabled = False
Me.optF.Enabled = False
Me.optM.Enabled = False
Me.txtOcup.Enabled = False
Me.txtDir.Enabled = False
Me.mskTlf.Enabled = False
Exit Sub
Else
Me.mskFN.Enabled = True
Me.mskFN.SetFocus
End If
End If
End Sub

Codificación de la casilla mskFN

Private Sub mskFN_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.mskFN.Text = "__/__/____" Then
Me.mskFN.SetFocus
Exit Sub
Else
If Not IsDate(Me.mskFN.Text) Then
MsgBox " Fecha Invalida...", vbCritical, "Error..."
Me.mskFN.Text = "__/__/____"
Me.mskFN.SetFocus
Me.optF.Enabled = False
Me.optM.Enabled = False
Me.txtOcup.Enabled = False
Me.txtDir.Enabled = False
Prof. Jean Carlos Blanco B.

Me.mskTlf.Enabled = False
Exit Sub
Else
Me.txtEdad.Text = Val(CalculaEdad(Me.mskFN.Text))
Me.optF.Enabled = True
Me.optM.Enabled = True
Me.optM.SetFocus
End If
End If
End If
End Sub

Codificación optM

Private Sub optM_Click()


Me.optF.Value = False
End Sub

Private Sub optM_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.optM.Value = False And Me.optF.Value = False Then
Me.optM.SetFocus
Exit Sub
Else
Me.txtOcup.Enabled = True
Me.txtOcup.SetFocus
End If
End If
End Sub

Codificación optF

Private Sub optF_Click()


Me.optM.Value = False
End Sub

Private Sub optF_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.optM.Value = False And Me.optF.Value = False Then
Me.optM.SetFocus
Exit Sub
Else
Me.txtOcup.Enabled = True
Me.txtOcup.SetFocus
End If
End If
End Sub
Prof. Jean Carlos Blanco B.

Codificación txtOcup

Private Sub txtOcup_KeyPress(KeyAscii As Integer)


Dim Enter As String
Dim strValido As String
Enter = KeyAscii
strValido = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ´ "
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii > 26 Then
If InStr(strValido, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
If Enter = 13 Then
If Me.txtOcup.Text = "" Then
Me.txtOcup.SetFocus
Me.txtDir.Enabled = False
Me.mskTlf.Enabled = False
Exit Sub
Else
Me.txtDir.Enabled = True
Me.txtDir.SetFocus
End If
End If
End Sub

Codificación txtDir

Private Sub txtDir_KeyPress(KeyAscii As Integer)


Dim Enter As String
Dim strValido As String
Enter = KeyAscii
strValido = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ´ "
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii > 26 Then
If InStr(strValido, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
If Enter = 13 Then
If Me.txtDir.Text = "" Then
Me.txtDir.SetFocus
Me.mskTlf.Enabled = False
Exit Sub
Else
Me.mskTlf.Enabled = True
Me.mskTlf.SetFocus
End If
End If
End Sub
Prof. Jean Carlos Blanco B.

Codificación mskTlf

Private Sub mskTlf_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.mskTlf.Text = "(____)-___-__-__" Then
Me.mskTlf.SetFocus
Me.cmdAgregar.Enabled = False
Exit Sub
Else
If Me.msk_Historia.Enabled = False Then
Me.cmdModificar.SetFocus
Else
Me.cmdAgregar.Enabled = True
Me.cmdAgregar.SetFocus
End If
End If
End If

End Sub

Codificación Botón Agregar

Private Sub cmdAgregar_Click()


On Error GoTo Verificar
Conectar_BD
VAR1 = Me.msk_Historia.Text
VAR2 = Me.txtNom.Text
VAR3 = Me.mskFN.Text
VAR4 = Me.txtEdad.Text
VAR5 = Me.optF.Value
VAR6 = Me.optM.Value
VAR7 = Me.txtOcup.Text
VAR8 = Me.txtDir.Text
VAR9 = Me.mskTlf.Text
Dim micom As ADODB.Command
Set micom = New ADODB.Command
micom.CommandType = adCmdText
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbPaciente"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
bu = MyRec!N_Hist
If Me.msk_Historia.Text = bu Then
MsgBox "Este paciente ya se encuentra registrado en el sistema", vbCritical, "Error de Redundancia de datos"
Limpiar
Me.txtNom.Enabled = False
Me.mskFN.Enabled = False
Me.optF.Enabled = False
Me.optM.Enabled = False
Me.txtOcup.Enabled = False
Prof. Jean Carlos Blanco B.

Me.txtDir.Enabled = False
Me.mskTlf.Enabled = False
Me.cmdAgregar.Enabled = False
Me.msk_Historia.SetFocus
Exit Sub
End If
MyRec.MoveNext
If MyRec.EOF = True Then
1 If VAR5 = "Falso" Then
2 VAR5 = 0
3 Else
4 VAR5 = 1
5 End If
6 If VAR6 = "Verdadero" Then
7 VAR6 = 1
8 Else
9 VAR6 = 0
10 End If
11 micom.CommandText = "Insert into tbpaciente (N_Hist, Nom_Ape, Fec_Nac, Edad, Sexo_Fem, Sexo_Mas,
Ocup, Dire, Telf) values ('" & VAR1 & "', '" & VAR2 & "', '" & VAR3 & "', " & VAR4 & ", '" & VAR5 & "', " & VAR6 & ", '" &
VAR7 & "', '" & VAR8 & "', '" & VAR9 & "')"
12 micom.ActiveConnection = MiConex
13 micom.Execute
14 Set micom = Nothing
15 MsgBox "Paciente guardado con exito", vbInformation, "Datos agregados a la base de datos"
16 Limpiar
17 Me.txtNom.Enabled = False
18 Me.mskFN.Enabled = False
19 Me.optF.Enabled = False
20 Me.optM.Enabled = False
21 Me.txtOcup.Enabled = False
22 Me.txtDir.Enabled = False
23 Me.mskTlf.Enabled = False
24 Me.cmdAgregar.Enabled = False
25 Me.msk_Historia.SetFocus
26 Exit Sub
27 End If
Loop
MyRec.Close
Desconectar_BD
Exit Sub
Verificar:
If Error = "El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro
actual." Then
GoTo 1
Exit Sub
Else
MsgBox "Imposible realizar accion por favor consulte manual del sistema"
Exit Sub
End If
End Sub
Prof. Jean Carlos Blanco B.

Codificación Botón Modificar

Private Sub cmdModificar_Click()


Conectar_BD
PREG$ = MsgBox("Deseas modificar este registro", vbYesNo, "Advertencia")
If PREG$ = vbYes Then
VAR1 = Me.msk_Historia.Text
VAR2 = Me.txtNom.Text
VAR3 = Me.mskFN.Text
VAR4 = Me.txtEdad.Text
VAR5 = Me.optF.Value
VAR6 = Me.optM.Value
VAR7 = Me.txtOcup.Text
VAR8 = Me.txtDir.Text
VAR9 = Me.mskTlf.Text
Dim micom As ADODB.Command
Set micom = New ADODB.Command
micom.CommandType = adCmdText
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbPaciente"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
1 If VAR5 = "Falso" Then
2 VAR5 = 0
3 Else
4 VAR5 = 1
5 End If
6 If VAR6 = "Verdadero" Then
7 VAR6 = 1
8 Else
9 VAR6 = 0
10 End If
11 micom.CommandText = "Update tbpaciente Set N_Hist='" & VAR1 & "', Nom_Ape='" & VAR2 & "', Fec_Nac='" &
VAR3 & "', Edad=" & VAR4 & ", Sexo_Fem='" & VAR5 & "', Sexo_Mas=" & VAR6 & ", Ocup='" & VAR7 & "', Dire='" &
VAR8 & "', Telf='" & VAR9 & "' Where N_Hist='" & VAR1 & "'"
12 micom.ActiveConnection = MiConex
13 micom.Execute
14 Set micom = Nothing
15 MsgBox "Registro modificado con exito", vbInformation, "Datos agregados a la base de datos"
16 Limpiar
17 Me.txtNom.Enabled = False
18 Me.mskFN.Enabled = False
19 Me.optF.Enabled = False
20 Me.optM.Enabled = False
21 Me.txtOcup.Enabled = False
22 Me.txtDir.Enabled = False
23 Me.mskTlf.Enabled = False
24 Me.cmdEliminar.Enabled = False
25 Me.cmdModificar.Enabled = False
26 Me.msk_Historia.SetFocus
27 Exit Sub
MyRec.Close
Prof. Jean Carlos Blanco B.

Desconectar_BD
Exit Sub
Else
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS"
cmdLimpiar_Click
Exit Sub
End If
End Sub

Codificación Botón Eliminar

Private Sub cmdEliminar_Click()


Conectar_BD
PREG$ = MsgBox("¿Estas seguro de querer eliminar este registro?", vbYesNo, "Pregunta")
If PREG$ = vbYes Then
VAR1 = Me.msk_Historia.Text
Dim micom As ADODB.Command
Set micom = New ADODB.Command
micom.CommandType = adCmdText
micom.CommandText = "Delete from tbPaciente Where N_Hist = '" & VAR1 & "'"
micom.ActiveConnection = MiConex
micom.Execute
Set micom = Nothing
MsgBox ("Registro eliminado de la Base de Datos"), vbInformation, "Informacion"
Me.txtNom.Enabled = False
Me.mskFN.Enabled = False
Me.optF.Enabled = False
Me.optM.Enabled = False
Me.txtOcup.Enabled = False
Me.txtDir.Enabled = False
Me.mskTlf.Enabled = False
Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Me.msk_Historia.SetFocus
Limpiar
Desconectar_BD
Else
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS"
cmdLimpiar_Click
Exit Sub
End If
End Sub

Codificación Botón Buscar

Private Sub cmdBuscar_Click()


Conectar_BD
Dim MiReg As ADODB.Recordset
Set MiReg = New ADODB.Recordset
Buscar$ = InputBox("Ingrese el número de historia del paciente a consultar")
If Buscar$ = "" Then
Prof. Jean Carlos Blanco B.

MsgBox "Debes llenar un número de historia para poder procesar esos datos", vbInformation, "Entrada Invalida"
Me.msk_Historia.Enabled = True
Exit Sub
End If
MySql = "SELECT * From tbPaciente WHERE (((tbPaciente.N_Hist)='" & Buscar & "'));"
MiReg.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
If MiReg.EOF() Then
MsgBox "No se encuentra este paciente", vbInformation, "Resultado de Busqueda"
Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Me.msk_Historia.Enabled = True
Me.msk_Historia.SetFocus
Limpiar
Else
Me.msk_Historia.Enabled = False
Me.txtNom.Enabled = True
Me.mskFN.Enabled = True
Me.optF.Enabled = True
Me.optM.Enabled = True
Me.txtOcup.Enabled = True
Me.txtDir.Enabled = True
Me.mskTlf.Enabled = True
Me.msk_Historia.Text = MiReg.Fields("N_Hist")
Me.txtNom.Text = MiReg.Fields("Nom_Ape")
Me.mskFN.Text = MiReg.Fields("Fec_Nac")
Me.txtEdad.Text = MiReg.Fields("Edad")
Me.optF.Value = MiReg.Fields("Sexo_Fem")
Me.optM.Value = MiReg.Fields("Sexo_Mas")
Me.txtOcup.Text = MiReg.Fields("Ocup")
Me.txtDir.Text = MiReg.Fields("Dire")
Me.mskTlf = MiReg.Fields("Telf")
Me.cmdEliminar.Enabled = True
Me.cmdModificar.Enabled = True
End If
MiReg.Close
Desconectar_BD
End Sub

Codificación Botón Regresar

Private Sub cmdRegresar_Click()


frmMenu.Show
Unload Me
End Sub

Codificación Botón Limpiar

Private Sub cmdLimpiar_Click()


Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Me.msk_Historia.Enabled = True
Prof. Jean Carlos Blanco B.

Me.txtNom.Enabled = False
Me.mskFN.Enabled = False
Me.optF.Enabled = False
Me.optM.Enabled = False
Me.txtOcup.Enabled = False
Me.txtDir.Enabled = False
Me.mskTlf.Enabled = False
Me.cmdAgregar.Enabled = False
Me.msk_Historia.SetFocus
Limpiar
End Sub

Subrutina Limpiar

Sub Limpiar()
Me.msk_Historia.Text = "_-____"
Me.txtNom.Text = ""
Me.mskFN.Text = "__/__/____"
Me.txtEdad.Text = ""
Me.optF.Value = False
Me.optM.Value = False
Me.txtOcup.Text = ""
Me.txtDir.Text = ""
Me.mskTlf.Text = "(____)-___-__-__"
End Sub

Función calculo de edad

Public Function CalculaEdad(Nacio As Date) As String


Dim MesesPasados As Integer
Dim Anios As Integer
Dim Meses As Integer
Dim dias As Integer
If Nacio > Now Then
'CalculaEdad = "Fecha de Nacimiento Invalida"
MsgBox "Fecha Invalida"
Me.txtEdad.Text = ""
Me.mskFN.Text = "__/__/____"
Me.mskFN.SetFocus
Exit Function
End If
MesesPasados = DateDiff("m", Nacio, Now)
Anios = Int(MesesPasados / 12)
Meses = MesesPasados Mod 12
If Day(Now) >= Day(Nacio) Then
dias = Day(Now) - Day(Nacio)
Else
Select Case Month(Now)
Case 1, 2, 4, 6, 8, 9, 11: dias = 31 - Day(Nacio) + Day(Now)
Case 5, 7, 30, 12: dias = 30 - Day(Nacio) + Day(Now)
Case 3: dias = Bisiento(Year(Now)) - Day(Nacio) + Day(Now)
Prof. Jean Carlos Blanco B.

End Select
Meses = Meses - 1
If Meses = -1 Then
Meses = 11
Anios = Anios - 1
End If
End If
If Anios = 1 Then
CalculaEdad = Anios & " año "
Else
CalculaEdad = Anios & " años "
End If
If Meses = 1 Then
CalculaEdad = CalculaEdad & Meses & " mes y "
Else
CalculaEdad = CalculaEdad & Meses & " meses y "
End If
If dias = 1 Then
CalculaEdad = CalculaEdad & dias & " dia"
Else
CalculaEdad = CalculaEdad & dias & " dias"
End If

End Function

Función biciesto

Private Function Bisiento(Anio As Integer) As Integer


If (Anio Mod 4) = 0 Then
Bisiento = 29
Else
Bisiento = 28
End If
End Function
Prof. Jean Carlos Blanco B.

Pantalla #05.- Pantalla Citas Pacientes

XPButton203

XPButton202 XPButton205

XPButton201 XPButton206 XPFrame201

XPButton204

Image1

XPFrame202

Label1

Label2 XPComboMultiCol201

Label3
XPMaskEdit201

XPMaskEdit202
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


Form Name frmCitas
BackColor Blanco
BorderStyle 1.- Fixed Single
Caption Pantalla de citas
Icon Ruta de un icono
Moveable False
Picture Ruta de Imagen
StarUpPosition 2.- Center Screen
WindowsState 0.- Normal
Label1 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption N° de historia
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label2 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Fecha de cita
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label3 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Hora de cita
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
XPButton201 Name cmdAgregar
BackColor Cualquiera
Caption &Agregar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton202 Name cmdModificar
BackColor Cualquiera
Caption &Modificar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
Prof. Jean Carlos Blanco B.

XPButton203 Name cmdEliminar


BackColor Cualquiera
Caption &Eliminar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton204 Name cmdBuscar
BackColor Cualquiera
Caption &Buscar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton205 Name cmdRegresar
BackColor Cualquiera
Caption &Regresar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton206 Name cmdLimpiar
BackColor Cualquiera
Caption &Limpiar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPMaskEdit201 Name mskFC
Enabled False
Mask 99/99/9999
XPMaskEdit202 Name mskHora
Enabled False
Mask 99:99 ??
Image1 Name imgFigura
Picture Cualquiera
Stretch True
XPComboMultiCol201 Name cbomHisto
XPFrame201 Name fraMarco6
Alignment 2.- CiaRight
BackColor Blanco
Caption Buttons
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPFrame202 Name fraMarco5
Alignment 2.- CiaRight
BackColor Blanco
Caption Datos del Paciente
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
Prof. Jean Carlos Blanco B.

Codificación al cargar el formulario

Private Sub Form_Load()


On Error Resume Next
Me.cbomHisto.ClearAll
Conectar_BD
Dim MyRec As ADODB.Recordset
Set MyRec = New ADODB.Recordset
MySql = "Select * from tbPaciente"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
bu = MyRec!N_Hist
bu1 = MyRec!Nom_Ape
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2
With Me.cbomHisto
.BeginUpdate
.Columns = 2
.ColumnHeaderCaption(1) = "N° de Historia"
.ColumnHeaderAlignment(1) = cpAlignCenter
.ColumnHeaderMinWidth(1) = 25
.ColumnHeaderCaption(2) = "Nombres y Apellidos"
.ColumnHeaderAlignment(2) = cpAlignCenter
.ColumnHeaderMinWidth(2) = 150
.AddItem Array(bu, bu1)
.EndUpdate
.ListIndex = 0
MyRec.MoveNext
If MyRec.EOF = True Then
Exit Sub
End If
End With
Loop
MyRec.Close
Desconectar_BD
End Sub

Codificación al presionar una tecla en el combo cbomHisto

Private Sub cbomHisto_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.cbomHisto.Text = "" Then
Me.cbomHisto.SetFocus
Exit Sub
Else
Me.mskFC.Enabled = True
Me.mskFC.SetFocus
End If
End If
End Sub
Prof. Jean Carlos Blanco B.

Codificación de la casilla mskFC

Private Sub mskFC_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.mskFC.Text = "__/__/____" Then
Me.mskFC.SetFocus
Exit Sub
Else
If Not IsDate(Me.mskFC.Text) Then
MsgBox " Fecha Invalida...", vbCritical, "Error..."
Me.mskFC.Text = "__/__/____"
Me.mskFC.SetFocus
Me.mskHora.Enabled = False
Exit Sub
Else
Me.mskHora.Enabled = True
Me.mskHora.Enabled = True
Me.mskHora.SetFocus
End If
End If
End If
End Sub

Codificación de la casilla mskHora

Private Sub mskHora_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.mskHora.Text = "__:__ __" Then
Me.mskHora.SetFocus
Me.cmdAgregar.Enabled = False
Exit Sub
Else
If Me.cbomHisto.Enabled = False Then
Me.cmdModificar.SetFocus
Else
Me.cmdAgregar.Enabled = True
Me.cmdAgregar.SetFocus
End If
End If
End If
End Sub

Codificación botón agregar

Private Sub cmdAgregar_Click()


On Error GoTo Verificar
Conectar_BD
VAR1 = Me.cbomHisto.Text
VAR2 = Me.mskFC.Text
VAR3 = Me.mskHora.Text
Dim micom As ADODB.Command
Prof. Jean Carlos Blanco B.

Set micom = New ADODB.Command


micom.CommandType = adCmdText
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbCitas"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
micom.CommandText = "insert into tbCitas (N_Hist_Fora, Fec_Cita, Hor_Cita) values ('" & VAR1 & "',#" & VAR2 & "#,
#" & VAR3 & "#)"
micom.ActiveConnection = MiConex
micom.Execute
Set micom = Nothing
MsgBox "Cita guardada con exito", vbInformation, "Datos agregados a la base de datos"
Limpiar
Me.mskFC.Enabled = False
Me.mskHora.Enabled = False
Me.cmdAgregar.Enabled = False
MyRec.Close
Desconectar_BD
Exit Sub
Verificar:
MsgBox Error

End Sub

Codificación botón modificar

Private Sub cmdModificar_Click()


Conectar_BD
PREG$ = MsgBox("Deseas modificar este registro", vbYesNo, "Advertencia")
If PREG$ = vbYes Then
VAR1 = Me.cbomHisto.Text
VAR2 = Me.mskFC.Text
VAR3 = Me.mskHora.Text
Dim micom As ADODB.Command
Set micom = New ADODB.Command
micom.CommandType = adCmdText
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbCitas"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
micom.CommandText = "update tbCitas Set N_Hist_Fora='" & VAR1 & "', Fec_Cita=#" & VAR2 & "#, Hor_Cita=#" &
VAR3 & "# Where tbCitas.N_Hist_Fora='" & VAR1 & "'"
micom.ActiveConnection = MiConex
micom.Execute
Set micom = Nothing
MsgBox "Cita modificada con exito", vbInformation, "Datos agregados a la base de datos"
Limpiar
Me.mskFC.Enabled = False
Me.mskHora.Enabled = False
Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False

Exit Sub
Prof. Jean Carlos Blanco B.

MyRec.Close
Desconectar_BD
Exit Sub
Else
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS"
cmdLimpiar_Click
Exit Sub
End If
End Sub

Codificación botón eliminar

Private Sub cmdEliminar_Click()


Conectar_BD
PREG$ = MsgBox("¿Estas seguro de querer eliminar este registro?", vbYesNo, "Pregunta")
If PREG$ = vbYes Then
VAR1 = Me.cbomHisto.Text
VAR2 = Me.mskFC.Text

Dim micom As ADODB.Command


Set micom = New ADODB.Command
micom.CommandType = adCmdText
micom.CommandText = "Delete from tbCitas Where tbCitas.N_Hist_Fora='" & VAR1 & "'"
micom.ActiveConnection = MiConex
micom.Execute
Set micom = Nothing
MsgBox ("Registro eliminado de la Base de Datos"), vbInformation, "Informacion"
Me.mskFC.Enabled = False
Me.mskHora.Enabled = False
Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Limpiar
Desconectar_BD
Else
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS"
cmdLimpiar_Click
Exit Sub
End If
End Sub

Codificación botón buscar

Private Sub cmdBuscar_Click()


On Error GoTo Respuesta
Conectar_BD
Dim MiReg As ADODB.Recordset
Set MiReg = New ADODB.Recordset
Buscar$ = InputBox("Ingrese el número de historia del paciente a consultar")
If Buscar$ = "" Then
MsgBox "Debes llenar un número de historia para poder procesar esos datos", vbInformation, "Entrada Invalida"
Me.cbomHisto.Enabled = True
Prof. Jean Carlos Blanco B.

Exit Sub
End If
MySql = "SELECT * From tbCitas WHERE (((tbCitas.N_Hist_fora)='" & Buscar & "'));"
MiReg.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MiReg.MoveFirst
Do While MiReg.EOF = False

If MiReg.EOF() Then
MsgBox "No hay citas registradas para este paciente", vbInformation, "Resultado de Busqueda"
Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Me.cbomHisto.Enabled = True
Me.cbomHisto.SetFocus
Limpiar
Else

Me.cbomHisto.Enabled = False
Me.mskFC.Enabled = True
Me.mskHora.Enabled = True
Me.cbomHisto.Text = MiReg.Fields("N_Hist_Fora")
Me.mskFC.Text = MiReg.Fields("Fec_Cita")
Me.mskHora.Text = Format(MiReg.Fields("Hor_Cita"), "hh:mm AM/PM")
Me.cmdEliminar.Enabled = True
Me.cmdModificar.Enabled = True
End If
MiReg.MoveNext
Loop
MiReg.Close
Desconectar_BD
Exit Sub
Respuesta:
MsgBox "No hay citas registradas para este paciente", vbInformation, "Resultado de Busqueda"
End Sub

Codificación botón Regresar

Private Sub cmdRegresar_Click()


frmMenu.Show
Unload Me
End Sub

Codificación botón limpiar

Private Sub cmdLimpiar_Click()


Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Me.cbomHisto.Enabled = True
Me.mskFC.Enabled = False
Me.mskHora.Enabled = False
Me.cmdAgregar.Enabled = False
Me.cbomHisto.SetFocus
Prof. Jean Carlos Blanco B.

Limpiar
End Sub

Subrutina limpiar

Sub Limpiar()
Me.mskFC.Text = "__/__/____"
Me.mskHora.Text = "__:__ __"
End Sub
Prof. Jean Carlos Blanco B.

Pantalla #06.- Pantalla Historial

XPButton203

XPButton202 XPButton205

XPButton201 XPButton206 XPFrame201

XPButton204

Image1

XPFrame202

Label1

Label2 XPComboMultiCol201

Label3
XPMaskEdit201

Textbox1
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


Form Name frmHisto
BackColor Blanco
BorderStyle 1.- Fixed Single
Caption Pantalla Historial
Icon Ruta de un icono
Moveable False
Picture Ruta de Imagen
StarUpPosition 2.- Center Screen
WindowsState 0.- Normal
Label1 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption N° de historia
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label2 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Fecha de atención
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
Label3 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption Indicaciones
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
XPButton201 Name cmdAgregar
BackColor Cualquiera
Caption &Agregar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton202 Name cmdModificar
BackColor Cualquiera
Caption &Modificar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
Prof. Jean Carlos Blanco B.

XPButton203 Name cmdEliminar


BackColor Cualquiera
Caption &Eliminar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton204 Name cmdBuscar
BackColor Cualquiera
Caption &Buscar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton205 Name cmdRegresar
BackColor Cualquiera
Caption &Regresar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton206 Name cmdLimpiar
BackColor Cualquiera
Caption &Limpiar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPMaskEdit201 Name mskFA
Enabled False
Mask 99/99/9999
TextBox1 Name txtIndica
Enabled False
Multiline True
Scrollbars 2.- Vertical
Text Vacio
Image1 Name imgFigura
Picture Cualquiera
Stretch True
XPComboMultiCol201 Name cbomHisto
XPFrame201 Name fraMarco6
Alignment 2.- CiaRight
BackColor Blanco
Caption Buttons
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPFrame202 Name fraMarco5
Alignment 2.- CiaRight
BackColor Blanco
Caption Datos del Paciente
CaptionPicture Ruta de un icono
Font / ForeColor Cualquiera
Prof. Jean Carlos Blanco B.

Codificación al cargar el formulario

Private Sub Form_Load()


On Error Resume Next
Me.cbomHisto.ClearAll
Conectar_BD
Dim MyRec As ADODB.Recordset
Set MyRec = New ADODB.Recordset
MySql = "Select * from tbPaciente"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
bu = MyRec!N_Hist
bu1 = MyRec!Nom_Ape
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2
With Me.cbomHisto
.BeginUpdate
.Columns = 2
.ColumnHeaderCaption(1) = "N° de Historia"
.ColumnHeaderAlignment(1) = cpAlignCenter
.ColumnHeaderMinWidth(1) = 25
.ColumnHeaderCaption(2) = "Nombres y Apellidos"
.ColumnHeaderAlignment(2) = cpAlignCenter
.ColumnHeaderMinWidth(2) = 150
.AddItem Array(bu, bu1)
.EndUpdate
.ListIndex = 0
MyRec.MoveNext
If MyRec.EOF = True Then
Exit Sub
End If
End With
Loop
MyRec.Close
Desconectar_BD
End Sub

Codificación al presionar una tecla en el combo cbomHisto

Private Sub cbomHisto_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.cbomHisto.Text = "" Then
Me.cbomHisto.SetFocus
Exit Sub
Else
Me.mskFA.Enabled = True
Me.mskFA.SetFocus
End If
End If
End Sub
Prof. Jean Carlos Blanco B.

Codificación de la casilla mskFA

Private Sub mskFA_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.mskFA.Text = "__/__/____" Then
Me.mskFA.SetFocus
Exit Sub
Else
If Not IsDate(Me.mskFA.Text) Then
MsgBox " Fecha Invalida...", vbCritical, "Error..."
Me.mskFA.Text = "__/__/____"
Me.mskFA.SetFocus
Me.txtIndica.Enabled = False
Exit Sub
Else
Me.txtIndica.Enabled = True
Me.txtIndica.Enabled = True
Me.txtIndica.SetFocus
End If
End If
End If
End Sub

Codificación casilla txtIndica

Private Sub txtIndica_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If Me.txtIndica.Text = "" Then
Me.txtIndica.SetFocus
Me.cmdAgregar.Enabled = False
Exit Sub
Else
If Me.cbomHisto.Enabled = False Then
Me.cmdModificar.SetFocus
Else
Me.cmdAgregar.Enabled = True
End If
End If
End If

End Sub

Codificación botón agregar

Private Sub cmdAgregar_Click()


On Error GoTo Verificar
Conectar_BD
VAR1 = Me.cbomHisto.Text
VAR2 = Me.mskFA.Text
VAR3 = Me.txtIndica.Text
Dim micom As ADODB.Command
Prof. Jean Carlos Blanco B.

Set micom = New ADODB.Command


micom.CommandType = adCmdText
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM TbCitas"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
micom.CommandText = "insert into tbHistoria_Clinica (N_Hist_Fora, Fec_At, Indicac) values ('" & VAR1 & "',#" &
VAR2 & "#, '" & VAR3 & "')"
micom.ActiveConnection = MiConex
micom.Execute
Set micom = Nothing
MsgBox "Diagnosis guardada con exito", vbInformation, "Datos agregados a la base de datos"
Limpiar
Me.mskFA.Enabled = False
Me.txtIndica.Enabled = False
Me.cmdAgregar.Enabled = False
MyRec.Close
Desconectar_BD
Exit Sub
Verificar:
MsgBox Error
End Sub

Codificación botón modificar

Private Sub cmdModificar_Click()


Conectar_BD
PREG$ = MsgBox("Deseas modificar este registro", vbYesNo, "Advertencia")
If PREG$ = vbYes Then
VAR1 = Me.cbomHisto.Text
VAR2 = Me.mskFA.Text
VAR3 = Me.txtIndica.Text
Dim micom As ADODB.Command
Set micom = New ADODB.Command
micom.CommandType = adCmdText
Set MyRec = New ADODB.Recordset
MySql = "SELECT * FROM tbHistoria_Clinica"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
micom.CommandText = "update tbHistoria_Clinica Set N_Hist_Fora='" & VAR1 & "', Fec_At=#" & VAR2 & "#,
Indicac='" & VAR3 & "' Where tbHistoria_Clinica.N_Hist_Fora='" & VAR1 & "'"
micom.ActiveConnection = MiConex
micom.Execute
Set micom = Nothing
MsgBox "Diagnosis modificada con exito", vbInformation, "Datos agregados a la base de datos"
Limpiar
Me.mskFA.Enabled = False
Me.txtIndica.Enabled = False
Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Exit Sub
MyRec.Close
Desconectar_BD
Prof. Jean Carlos Blanco B.

Exit Sub
Else
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS"
cmdLimpiar_Click
Exit Sub
End If

End Sub

Codificación botón eliminar

Private Sub cmdEliminar_Click()


Conectar_BD
PREG$ = MsgBox("¿Estas seguro de querer eliminar este registro?", vbYesNo, "Pregunta")
If PREG$ = vbYes Then
VAR1 = Me.cbomHisto.Text

Dim micom As ADODB.Command


Set micom = New ADODB.Command
micom.CommandType = adCmdText
micom.CommandText = "Delete from tbHistoria_Clinica Where tbHistoria_Clinica.N_Hist_Fora='" & VAR1 & "'"
micom.ActiveConnection = MiConex
micom.Execute
Set micom = Nothing
MsgBox ("Registro eliminado de la Base de Datos"), vbInformation, "Informacion"
Me.mskFA.Enabled = False
Me.txtIndica.Enabled = False
Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Limpiar
Desconectar_BD
Else
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS"
cmdLimpiar_Click
Exit Sub
End If

End Sub

Codificación botón buscar

Private Sub cmdBuscar_Click()


On Error GoTo Respuesta
Conectar_BD
Dim MiReg As ADODB.Recordset
Set MiReg = New ADODB.Recordset
Buscar$ = InputBox("Ingrese el número de historia del paciente a consultar")
If Buscar$ = "" Then
MsgBox "Debes llenar un número de historia para poder procesar esos datos", vbInformation, "Entrada Invalida"
Me.cbomHisto.Enabled = True
Exit Sub
Prof. Jean Carlos Blanco B.

End If
MySql = "SELECT * From tbHistoria_Clinica WHERE (((tbHistoria_Clinica.N_Hist_fora)='" & Buscar & "'));"
MiReg.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MiReg.MoveFirst
Do While MiReg.EOF = False

If MiReg.EOF() Then
MsgBox "No hay diagnosis registradas para este paciente", vbInformation, "Resultado de Busqueda"
Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Me.cbomHisto.Enabled = True
Me.cbomHisto.SetFocus
Limpiar
Else

Me.cbomHisto.Enabled = False
Me.mskFA.Enabled = True
Me.txtIndica.Enabled = True
Me.cbomHisto.Text = MiReg.Fields("N_Hist_Fora")
Me.mskFA.Text = MiReg.Fields("Fec_At")
Me.txtIndica.Text = MiReg.Fields("Indicac")
Me.cmdEliminar.Enabled = True
Me.cmdModificar.Enabled = True
End If
MiReg.MoveNext
Loop
MiReg.Close
Desconectar_BD
Exit Sub
Respuesta:
MsgBox "No hay diagnosis registradas para este paciente", vbInformation, "Resultado de Busqueda"

End Sub

Codificación botón regresar

Private Sub cmdRegresar_Click()


frmMenu.Show
Unload Me
End Sub

Codificación botón limpiar

Private Sub cmdLimpiar_Click()


Me.cmdEliminar.Enabled = False
Me.cmdModificar.Enabled = False
Me.cbomHisto.Enabled = True
Me.mskFA.Enabled = False
Me.txtIndica.Enabled = False
Me.cmdAgregar.Enabled = False
Me.cbomHisto.SetFocus
Prof. Jean Carlos Blanco B.

Limpiar
End Sub

Subrutina limpiar

Sub Limpiar()
Me.txtIndica.Text = ""
Me.mskFA.Text = "__/__/____"
End Sub
Prof. Jean Carlos Blanco B.

Pantalla #07.- Pantalla Reportes

XPButton201 XPButton203

XPFrame201
XPButton202

Image1

XPFrame202
XPButton204

Label1
XPComboMultiCol201

XPListView201
Prof. Jean Carlos Blanco B.

Objeto Propiedad Valor


Form Name frmReportes
BackColor Blanco
BorderStyle 1.- Fixed Single
Caption Pantalla Reportes
Icon Ruta de un icono
Moveable False
Picture Ruta de Imagen
StarUpPosition 2.- Center Screen
WindowsState 0.- Normal
Label1 Name lblInfo
Alignment 2.- Center
AutoSize True
Caption N° de historia
BackStyle 0.- Transparent
Font Cualquiera
ForeColor Cualquiera
XPButton201 Name cmdImprimir
BackColor Cualquiera
Caption &Imprimir
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton202 Name cmdBuscar
BackColor Cualquiera
Caption &Buscar Todos
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton203 Name cmdRegresar
BackColor Cualquiera
Caption &Regresar
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPButton204 Name cmdLimpiar
BackColor Cualquiera
Caption &Limpiar
Enabled False
Font Cualquiera
ForeColor Cualquiera
XPDefaultColors False
XPFrame201 Name fraMarco6
Alignment 2.- CiaRight
BackColor Blanco
Caption Buttons
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
Prof. Jean Carlos Blanco B.

XPFrame202 Name fraMarco5


Alignment 2.- CiaRight
BackColor Blanco
Caption Datos del Paciente
CaptionPicture Ruta de un icono
Font Cualquiera
ForeColor Cualquiera
XPComboMultiCol201 Name cbomHisto
XPListView201 Name lvReporte
Image1 Name imgFigura
Picture Cualquiera
Stretch True

Codificación al cargar el formulario

Private Sub Form_Load()


On Error Resume Next
Dim encab As cColumn
With Me.lvReporte
Set encab = .Columns.Add("N° Historia")
encab.MinWidth = 50
Set encab = .Columns.Add("Nombres y Apellidos")
encab.Width = 350
Set encab = .Columns.Add("Fecha de Cita")
encab.MinWidth = 50
Set encab = .Columns.Add("Hora de Cita")
encab.MinWidth = 50
.FullRowSelect = True
.MultiSelect = True
.View = LVViewReport
End With

Me.cbomHisto.ClearAll
Conectar_BD
Dim MyRec As ADODB.Recordset
Set MyRec = New ADODB.Recordset
MySql = "Select * from tbPaciente"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
bu = MyRec!N_Hist
bu1 = MyRec!Nom_Ape
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2
With Me.cbomHisto
.BeginUpdate
.Columns = 2
.ColumnHeaderCaption(1) = "N° de Historia"
.ColumnHeaderAlignment(1) = cpAlignCenter
.ColumnHeaderMinWidth(1) = 25
.ColumnHeaderCaption(2) = "Nombres y Apellidos"
Prof. Jean Carlos Blanco B.

.ColumnHeaderAlignment(2) = cpAlignCenter
.ColumnHeaderMinWidth(2) = 150
.AddItem Array(bu, bu1)
.EndUpdate
.ListIndex = 0
MyRec.MoveNext
If MyRec.EOF = True Then
Exit Sub
End If
End With
Loop
MyRec.Close
Desconectar_BD
End Sub

Codificación al presionar una tecla en el combo cbomHisto

Private Sub cbomHisto_KeyPress(KeyAscii As Integer)


On Error Resume Next
Me.lvReporte.ClearItems
If KeyAscii = 13 Then
If Me.cbomHisto.Text = "" Then
Me.cbomHisto.SetFocus
Exit Sub
Else
Dim subencab As cListItem
With Me.lvReporte
Conectar_BD
Dim MyRec As ADODB.Recordset
Set MyRec = New ADODB.Recordset
MySql = "SELECT tbPaciente.N_Hist, tbPaciente.Nom_Ape, tbCitas.Fec_Cita, tbCitas.Hor_Cita FROM tbPaciente
INNER JOIN tbCitas ON tbPaciente.N_Hist = tbCitas.N_Hist_Fora WHERE (((tbPaciente.N_Hist)='" &
Me.cbomHisto.Text & "'));"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
Set subencab = .ListItems.Add(MyRec!N_Hist)
subencab.SubItems(1).Text = MyRec!Nom_Ape
subencab.SubItems(2).Text = MyRec!Fec_Cita
subencab.SubItems(3).Text = MyRec!Hor_Cita
MyRec.MoveNext
If MyRec.EOF = True Then
Exit Sub
End If
Loop
End With
MyRec.Close
Desconectar_BD
End If
End If
End Sub
Prof. Jean Carlos Blanco B.

Codificación botón buscar

Private Sub cmdBuscar_Click()


On Error Resume Next
Me.lvReporte.ClearItems
Dim subencab As cListItem
With Me.lvReporte
Conectar_BD
Dim MyRec As ADODB.Recordset
Set MyRec = New ADODB.Recordset

MySql = "SELECT tbPaciente.N_Hist, tbPaciente.Nom_Ape, tbCitas.Fec_Cita, tbCitas.Hor_Cita FROM tbPaciente


INNER JOIN tbCitas ON tbPaciente.N_Hist = tbCitas.N_Hist_Fora;"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
Set subencab = .ListItems.Add(MyRec!N_Hist)
subencab.SubItems(1).Text = MyRec!Nom_Ape
subencab.SubItems(2).Text = MyRec!Fec_Cita
subencab.SubItems(3).Text = MyRec!Hor_Cita
MyRec.MoveNext
If MyRec.EOF = True Then
Exit Sub
End If
Loop
End With
MyRec.Close
Desconectar_BD
End Sub

Codificación botón Limpiar

Private Sub cmdLimpiar_Click()


Me.lvReporte.ClearItems
End Sub

Codificación botón Regresar

Private Sub cmdRegresar_Click()


frmMenu.Show
Unload Me
End Sub
Prof. Jean Carlos Blanco B.

Pasos para finalizar la codificación Imprimir

1.- Estando en el menú proyecto/referencias/ agregamos la librería Microsoft Word 10.0 ó 11.0 ó 12.0 object library
dependiendo de la versión de office que tenga instalada en su computadora
Prof. Jean Carlos Blanco B.

2.- Abrimos la aplicación de Microsoft Word

3.- Como en este caso solo queremos es imprimir los siguientes campos (N° de historia, Nombre y Apellidos, Fecha de la
Cita y Hora de la Cita) creamos etiquetas de enlaces con visual identificándolos para hacer la referencia
correspondiente.

3.1- Primero diseñamos como queremos que quede el aspecto del informe
Prof. Jean Carlos Blanco B.

Como se puede apreciar en la figura anterior tenemos un encabezado y luego una tabla de 4 columnas * 2 filas

4.- Guardamos los cambios en la carpeta de trabajo con el nombre de reporte_Citas y finalizamos la aplicación de Word

Codificación del botón imprimir

Private Sub cmdImprimir_Click()


Dim Co As Integer
Dim Encontrar As String
Encontrar = App.Path & "\Reporte_Citas.docx"
Dim MSWord As New Word.Application
Dim Documento As Word.Document
Set Documento = _
MSWord.Documents.Open(Encontrar)
Co = 2
Conectar_BD
Dim MyRec As ADODB.Recordset
Set MyRec = New ADODB.Recordset
MySql = "SELECT tbPaciente.N_Hist, tbPaciente.Nom_Ape, tbCitas.Fec_Cita, tbCitas.Hor_Cita FROM tbPaciente
INNER JOIN tbCitas ON tbPaciente.[N_Hist] = tbCitas.[N_Hist_Fora];"
MyRec.Open MySql, MiConex, adOpenDynamic, adLockOptimistic
MyRec.MoveFirst
Do While MyRec.EOF = False
Documento.Tables(1).Cell(Co, 1).Range.Text = MyRec!N_Hist
Documento.Tables(1).Cell(Co, 2).Range.Text = MyRec!Nom_Ape
Documento.Tables(1).Cell(Co, 3).Range.Text = MyRec!Fec_Cita
Prof. Jean Carlos Blanco B.

Documento.Tables(1).Cell(Co, 4).Range.Text = MyRec!Hor_Cita


Documento.Tables(1).Rows.Add
Co = Co + 1
MyRec.MoveNext
If MyRec.EOF = True Then
Co = 0
Exit Sub
End If
Loop
MSWord.Visible = True
MyRec.Close
Desconectar_BD
End Sub

You might also like