Manual Práctico VB6 ADO
-
Upload
sergio-duque -
Category
Documents
-
view
43 -
download
3
Transcript of Manual Práctico VB6 ADO
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
- 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
Mi_Sistema_Version_1.0 Unidad de Almacenamiento
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
Nombre del Campo Tipo de Datos Tamaño Formato Mascara Titulo / Descripción
Requ
erido
Perm
itir L
ongitu
d d
e C
ero
Ind
exado
(IU,
ICD,I
SD)
Clave
Princ
ipal
Clave
For
áne
a
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
Nombre del Campo Tipo de Datos Tamaño Formato Mascara Titulo / Descripción
Requ
erido
Perm
itir L
ongitu
d d
e C
ero
Ind
exado
(IU,
ICD,I
SD)
Clave
Princ
ipal
Clave
For
áne
a
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
Nombre del Campo Tipo de Datos Tamaño Formato Mascara Titulo / Descripción
Requ
erido
Perm
itir L
ongitu
d d
e C
ero
Ind
exado
(IU,
ICD,I
SD)
Clave
Princ
ipal
Clave
For
áne
a
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
N_Hist (Clave Primaria)
Nom_Ape
Fech_Nac
Edad
Sexo_Mas
Sexo_Fem
Ocup
Dire
Telf
TbPacientes DS01
Id_Hist_Cli (Clave Primaria)
Indica
Fech_Act
N_Hist (Clave Foránea)
TbHistoria_Clinica DS02
Id_Citas (Clave Primaria)
Fec_Cita
Hor_Cita
N_Hist (Clave Foránea)
TbCitas DS03
Se
Asigna
Solicita
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.
Objeto Propiedad Valor
Form Name
BackColor
BorderStyle
Caption
Icon
Moveable
Picture
StarUpPosition
WindowsState
frmInicio
Blanco
1.- Fixed Single
Pantalla de Inicio
Ruta de un icono
False
Ruta de Imagen
2.- Center Screen
0.- Normal
Label1 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Automated System of
0.- Transparent
Cualquiera
Cualquiera
Label2 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Medical Doctor's offices
0.- Transparent
Cualquiera
Cualquiera
Label1
Label2
Timer1
ProgressBar 20
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Timer1 Name
Enabled
Interval
trmTiempo
True
1000
ProgressBar20 Name
Min
Max
prbBarra
0
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.
Pantalla #02.- Pantalla de Seguridad
Unload me
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Form Name
BackColor
BorderStyle
Caption
Icon
Moveable
Picture
StarUpPosition
WindowsState
frmLogin
Blanco
1.- Fixed Single
Pantalla de Seguridad
Ruta de un icono
False
Ruta de Imagen
2.- Center Screen
0.- Normal
Label2
Label1
XPFrame201
XPComboBox201
XPText201
XPButton201
XPButton202
XPButton203
XPFrame202
Label3
Label4
Image1
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Label1 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Automated System of
0.- Transparent
Cualquiera
Cualquiera
Label2 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Medical Doctor's offices
0.- Transparent
Cualquiera
Cualquiera
Label3 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
User
0.- Transparent
Cualquiera
Cualquiera
Label4 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Password
0.- Transparent
Cualquiera
Cualquiera
XPFrame201 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco1
2.- CiaRight
Blanco
Information Operator of the System
Ruta de un icono
Cualquiera
Cualquiera
XPFrame202 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco2
2.- CiaRight
Blanco
Buttons
Ruta de un icono
Cualquiera
Cualquiera
XPComboBox201 Name
Alignment
Font
ForeColor
Style
Text
cboUser
1.- cboCenterAlign
Cualquiera
Cualquiera
1.-cboDropDownList
Vacio
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
XPText201 Name
Alignment
ButtonCaptionVAlignment
Font
ForeColor
MaxLength
Passwordchar
RequiredField
Text
TextPosition
txtPass
2.- Align Center
1.- btnMiddle
Cualquiera
Cualquiera
5
*
True
Vacio
1.- Align Middle
XPButton201 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdAceptar
Cualquiera
&Aceptar
Cualquiera
Cualquiera
False
XPButton202 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdNuevo
Cualquiera
&Nuevo
Cualquiera
Cualquiera
False
XPButton203 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdSalir
Cualquiera
&Salir
Cualquiera
Cualquiera
False
Image1
Name
Picture
Stretch
imgFigura
Cualquiera
True
Prof. Jean Carlos Blanco B.
Abrimos la base de datos creada y agregamos una nueva tabla llamada Seguridad
Nombre de la Tabla: tbSeguridad
Nombre del Campo Tipo de Datos Tamaño Formato Mascara Titulo / Descripción
Requ
erido
Perm
itir L
ongitu
d d
e C
ero
Ind
exado
(IU,
ICD,I
SD)
Clave
Princ
ipal
Clave
For
áne
a
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.
XPFrame203
XPFrame204
XPFrame205
XPFrame206 XPComboBox202
XPText202
Label5
Label6
Image 2
Label7
Label8
Label9
Label10
XPText203
XPText204
XPText205
XPText206
XPOption201 XPOption202
XPButton204
XPButton205
XPButton206
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Label5 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
User
0.- Transparent
Cualquiera
Cualquiera
Label6 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Password
0.- Transparent
Cualquiera
Cualquiera
Label7 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Nombre
0.- Transparent
Cualquiera
Cualquiera
Label8 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Apellido
0.- Transparent
Cualquiera
Cualquiera
Label9 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Password
0.- Transparent
Cualquiera
Cualquiera
Label10 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Repetir Password
0.- Transparent
Cualquiera
Cualquiera
Prof. Jean Carlos Blanco B.
XPFrame203 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco3
2.- CiaRight
Blanco
New User
Ruta de un icono
Cualquiera
Cualquiera
XPFrame204 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco4
2.- CiaRight
Blanco
Information Operator of the System
Ruta de un icono
Cualquiera
Cualquiera
XPFrame205 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
Visible
fraMarco5
2.- CiaRight
Blanco
Datos Nuevo Usuario
Ruta de un icono
Cualquiera
Cualquiera
False
XPFrame206 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
Visible
fraMarco6
2.- CiaRight
Blanco
Buttons
Ruta de un icono
Cualquiera
Cualquiera
False
XPComboBox202 Name
Alignment
Font
ForeColor
Style
Text
cboUsuario
1.- cboCenterAlign
Cualquiera
Cualquiera
1.-cboDropDownList
Vacio
XPText202 Name
Alignment
ButtonCaptionVAlignment
Font
ForeColor
MaxLength
Passwordchar
RequiredField
Text
TextPosition
txtClave
2.- Align Center
1.- btnMiddle
Cualquiera
Cualquiera
5
*
True
Vacio
1.- Align Middle
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
XPText203 Name
Alignment
ButtonCaptionVAlignment
Font
ForeColor
MaxLength
RequiredField
Text
TextPosition
txtNom
2.- Align Center
1.- btnMiddle
Cualquiera
Cualquiera
25
True
Vacio
1.- Align Middle
XPText204 Name
Alignment
ButtonCaptionVAlignment
Font
ForeColor
MaxLength
RequiredField
Text
TextPosition
txtApe
2.- Align Center
1.- btnMiddle
Cualquiera
Cualquiera
25
True
Vacio
1.- Align Middle
XPText205 Name
Alignment
ButtonCaptionVAlignment
Font
ForeColor
MaxLength
Passwordchar
RequiredField
Text
TextPosition
txtAgr_Clave
2.- Align Center
1.- btnMiddle
Cualquiera
Cualquiera
5
*
True
Vacio
1.- Align Middle
XPText206 Name
Alignment
ButtonCaptionVAlignment
Font
ForeColor
MaxLength
Passwordchar
RequiredField
Text
TextPosition
txtRep_Clave
2.- Align Center
1.- btnMiddle
Cualquiera
Cualquiera
5
*
True
Vacio
1.- Align Middle
XPButton205 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdGuardar
Cualquiera
&Guardar
Cualquiera
Cualquiera
False
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
XPButton206 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdLimpiar
Cualquiera
&Limpiar
Cualquiera
Cualquiera
False
XPButton207 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdCerrar
Cualquiera
&Cerrar
Cualquiera
Cualquiera
False
Image2
Name
Picture
Stretch
imgClinica
Cualquiera
True
XPOption201 Name
Alignment
Caption
Style
optAdmin
0.- CiaLeftJustify
Administrador
1.- CiaTransparent
XPOption202
Name
Alignment
Caption
Stretch
optOpera
0.- CiaRightJustify
Operador
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
Image1
XPButton203
Image4
Image2
XPButton204
Image3
XPButton205
Image5
XPButton202
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Form Name
BackColor
BorderStyle
Caption
Icon
Moveable
Picture
StarUpPosition
WindowsState
frmMenu
Blanco
1.- Fixed Single
Pantalla Menú Principal
Ruta de un icono
False
Ruta de Imagen
2.- Center Screen
0.- Normal
XPFrame201 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco6
2.- CiaRight
Blanco
Buttons
Ruta de un icono
Cualquiera
Cualquiera
XPButton201 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdCitas
Cualquiera
&Citas
Cualquiera
Cualquiera
False
XPButton202 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdReportes
Cualquiera
&Reportes
Cualquiera
Cualquiera
False
XPButton203 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdHistorial
Cualquiera
&Historial
Cualquiera
Cualquiera
False
XPButton204 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdSalir
Cualquiera
&Salir
Cualquiera
Cualquiera
False
XPButton206 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdPacientes
Cualquiera
&Pacientes
Cualquiera
Cualquiera
False
Image1
Name
Picture
Stretch
imgFigura
Cualquiera
True
Prof. Jean Carlos Blanco B.
Image2
Name
Picture
Stretch
imgFigura
Cualquiera
True
Image3
Name
Picture
Stretch
imgFigura
Cualquiera
True
Image4
Name
Picture
Stretch
imgFigura
Cualquiera
True
Image5
Name
Picture
Stretch
imgFigura
Cualquiera
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
Image1
Label1
Label2
Label3
Label4
XPOption201
Label5
Label6 Label7
XPOption202
XPMaskEdit203
XPText204
XPText203
XPText202
XPMaskEdit202
XPText201
XPMaskEdit201
XPFrame201
XPButton204
XPButton201
XPButton202
XPButton206
XPButton205
XPButton203
XPFrame202
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Form Name
BackColor
BorderStyle
Caption
Icon
Moveable
Picture
StarUpPosition
WindowsState
frmPacientes
Blanco
1.- Fixed Single
Pantalla de pacientes
Ruta de un icono
False
Ruta de Imagen
2.- Center Screen
0.- Normal
Label1 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
N° de historia
0.- Transparent
Cualquiera
Cualquiera
Label2 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Nombres y Apellidos
0.- Transparent
Cualquiera
Cualquiera
Label3 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Fecha de Nacimiento
0.- Transparent
Cualquiera
Cualquiera
Label4 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Edad
0.- Transparent
Cualquiera
Cualquiera
Label5 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Ocupación
0.- Transparent
Cualquiera
Cualquiera
Prof. Jean Carlos Blanco B.
Label6 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Dirección
0.- Transparent
Cualquiera
Cualquiera
Label7 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Teléfono
0.- Transparent
Cualquiera
Cualquiera
XPFrame201 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco6
2.- CiaRight
Blanco
Buttons
Ruta de un icono
Cualquiera
Cualquiera
XPFrame202 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco5
2.- CiaRight
Blanco
Datos del Paciente
Ruta de un icono
Cualquiera
Cualquiera
XPText201 Name
Alignment
ButtonCaptionVAlignment
Enabled
Font
ForeColor
MaxLength
RequiredField
Text
TextPosition
txtNom
2.- Align Center
1.- btnMiddle
False
Cualquiera
Cualquiera
60
True
Vacio
1.- Align Middle
XPText202 Name
Alignment
ButtonCaptionVAlignment
Enabled
Font
ForeColor
MaxLength
RequiredField
Text
TextPosition
txtEdad
2.- Align Center
1.- btnMiddle
False
Cualquiera
Cualquiera
3
True
Vacio
1.- Align Middle
Prof. Jean Carlos Blanco B.
XPText203 Name
Alignment
ButtonCaptionVAlignment
Enabled
Font
ForeColor
MaxLength
RequiredField
Text
TextPosition
txtOcup
2.- Align Center
1.- btnMiddle
False
Cualquiera
Cualquiera
70
True
Vacio
1.- Align Middle
XPText204 Name
Alignment
ButtonCaptionVAlignment
Enabled
Font
ForeColor
MaxLength
RequiredField
Text
TextPosition
txtDir
2.- Align Center
1.- btnMiddle
False
Cualquiera
Cualquiera
0
True
Vacio
1.- Align Middle
XPButton201 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdAgregar
Cualquiera
&Agregar
False
Cualquiera
Cualquiera
False
XPButton202 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdModificar
Cualquiera
&Modificar
False
Cualquiera
Cualquiera
False
XPButton203 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdEliminar
Cualquiera
&Eliminar
False
Cualquiera
Cualquiera
False
XPButton204 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdBuscar
Cualquiera
&Buscar
Cualquiera
Cualquiera
False
Prof. Jean Carlos Blanco B.
XPButton205 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdRegresar
Cualquiera
&Regresar
Cualquiera
Cualquiera
False
XPButton206 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdLimpiar
Cualquiera
&Limpiar
Cualquiera
Cualquiera
False
XPMaskEdit201 Name
Enabled
Mask
msk_Historia
True
>?-9999
XPMaskEdit202 Name
Enabled
Mask
mskFN
False
99/99/9999
XPMaskEdit203 Name
Enabled
Mask
mskTlf
False
(9999)-999-99-99
Image1
Name
Picture
Stretch
imgFigura
Cualquiera
True
XPOption201 Name
Alignment
Caption
Style
optM
0.- CiaLeftJustify
Masculino
1.- CiaTransparent
XPOption202
Name
Alignment
Caption
Stretch
optF
0.- CiaRightJustify
Femenino
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
Image1
XPFrame201
XPButton204
XPButton201
XPButton202
XPButton206
XPButton205
XPButton203
Label1
Label2
Label3
XPMaskEdit202
XPMaskEdit201
XPFrame202
XPComboMultiCol201
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Form Name
BackColor
BorderStyle
Caption
Icon
Moveable
Picture
StarUpPosition
WindowsState
frmCitas
Blanco
1.- Fixed Single
Pantalla de citas
Ruta de un icono
False
Ruta de Imagen
2.- Center Screen
0.- Normal
Label1 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
N° de historia
0.- Transparent
Cualquiera
Cualquiera
Label2 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Fecha de cita
0.- Transparent
Cualquiera
Cualquiera
Label3 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Hora de cita
0.- Transparent
Cualquiera
Cualquiera
XPButton201 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdAgregar
Cualquiera
&Agregar
False
Cualquiera
Cualquiera
False
XPButton202 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdModificar
Cualquiera
&Modificar
False
Cualquiera
Cualquiera
False
Prof. Jean Carlos Blanco B.
XPButton203 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdEliminar
Cualquiera
&Eliminar
False
Cualquiera
Cualquiera
False
XPButton204 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdBuscar
Cualquiera
&Buscar
Cualquiera
Cualquiera
False
XPButton205 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdRegresar
Cualquiera
&Regresar
Cualquiera
Cualquiera
False
XPButton206 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdLimpiar
Cualquiera
&Limpiar
Cualquiera
Cualquiera
False
XPMaskEdit201 Name
Enabled
Mask
mskFC
False
99/99/9999
XPMaskEdit202 Name
Enabled
Mask
mskHora
False
99:99 ??
Image1
Name
Picture
Stretch
imgFigura
Cualquiera
True
XPComboMultiCol201 Name cbomHisto
XPFrame201 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco6
2.- CiaRight
Blanco
Buttons
Ruta de un icono
Cualquiera
Cualquiera
XPFrame202 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco5
2.- CiaRight
Blanco
Datos del Paciente
Ruta de un icono
Cualquiera
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
Image1
XPFrame201
XPButton204
XPButton201
XPButton202
XPButton206
XPButton205
XPButton203
Label1
Label2
Label3
Textbox1
XPMaskEdit201
XPFrame202
XPComboMultiCol201
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Form Name
BackColor
BorderStyle
Caption
Icon
Moveable
Picture
StarUpPosition
WindowsState
frmHisto
Blanco
1.- Fixed Single
Pantalla Historial
Ruta de un icono
False
Ruta de Imagen
2.- Center Screen
0.- Normal
Label1 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
N° de historia
0.- Transparent
Cualquiera
Cualquiera
Label2 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Fecha de atención
0.- Transparent
Cualquiera
Cualquiera
Label3 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
Indicaciones
0.- Transparent
Cualquiera
Cualquiera
XPButton201 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdAgregar
Cualquiera
&Agregar
False
Cualquiera
Cualquiera
False
XPButton202 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdModificar
Cualquiera
&Modificar
False
Cualquiera
Cualquiera
False
Prof. Jean Carlos Blanco B.
XPButton203 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdEliminar
Cualquiera
&Eliminar
False
Cualquiera
Cualquiera
False
XPButton204 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdBuscar
Cualquiera
&Buscar
Cualquiera
Cualquiera
False
XPButton205 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdRegresar
Cualquiera
&Regresar
Cualquiera
Cualquiera
False
XPButton206 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdLimpiar
Cualquiera
&Limpiar
Cualquiera
Cualquiera
False
XPMaskEdit201 Name
Enabled
Mask
mskFA
False
99/99/9999
TextBox1 Name
Enabled
Multiline
Scrollbars
Text
txtIndica
False
True
2.- Vertical
Vacio
Image1
Name
Picture
Stretch
imgFigura
Cualquiera
True
XPComboMultiCol201 Name cbomHisto
XPFrame201 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco6
2.- CiaRight
Blanco
Buttons
Ruta de un icono
Cualquiera
Cualquiera
XPFrame202 Name
Alignment
BackColor
Caption
CaptionPicture
Font / ForeColor
fraMarco5
2.- CiaRight
Blanco
Datos del Paciente
Ruta de un icono
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
Image1
XPFrame201
XPButton202
XPButton201
XPButton204
XPButton203
Label1
XPFrame202
XPListView201
XPComboMultiCol201
Prof. Jean Carlos Blanco B.
Objeto Propiedad Valor
Form Name
BackColor
BorderStyle
Caption
Icon
Moveable
Picture
StarUpPosition
WindowsState
frmReportes
Blanco
1.- Fixed Single
Pantalla Reportes
Ruta de un icono
False
Ruta de Imagen
2.- Center Screen
0.- Normal
Label1 Name
Alignment
AutoSize
Caption
BackStyle
Font
ForeColor
lblInfo
2.- Center
True
N° de historia
0.- Transparent
Cualquiera
Cualquiera
XPButton201 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdImprimir
Cualquiera
&Imprimir
Cualquiera
Cualquiera
False
XPButton202 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdBuscar
Cualquiera
&Buscar Todos
False
Cualquiera
Cualquiera
False
XPButton203 Name
BackColor
Caption
Font
ForeColor
XPDefaultColors
cmdRegresar
Cualquiera
&Regresar
Cualquiera
Cualquiera
False
XPButton204 Name
BackColor
Caption
Enabled
Font
ForeColor
XPDefaultColors
cmdLimpiar
Cualquiera
&Limpiar
False
Cualquiera
Cualquiera
False
XPFrame201 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco6
2.- CiaRight
Blanco
Buttons
Ruta de un icono
Cualquiera
Cualquiera
Prof. Jean Carlos Blanco B.
XPFrame202 Name
Alignment
BackColor
Caption
CaptionPicture
Font
ForeColor
fraMarco5
2.- CiaRight
Blanco
Datos del Paciente
Ruta de un icono
Cualquiera
Cualquiera
XPComboMultiCol201 Name cbomHisto
XPListView201 Name lvReporte
Image1
Name
Picture
Stretch
imgFigura
Cualquiera
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