Herramienta VBasic
Herramienta VBasic
Herramienta VBasic
Bienvenidos a Visual Basic 6.0; este texto presenta la mejor manera de aplicar Visual
Basic al desarrollo de bases de datos. Durante mucho tiempo los usuarios han estado
tratando con textos donde al finalizar su lectura no tienen las herramientas para
desarrollar aplicaciones para bases de datos, lo cual viene a engrosar las filas de
decepcionantes en lo que se refiere a textos.
Con este texto usted aprender los conceptos necesarios para desarrollar aplicaciones
para bases de datos; desde el primer captulo se definen las pautas a seguir, y se va
desarrollando un ejercicio , la Ficha de datos de los empleados de una empresa, que
inicia con la captura de datos con sus diferentes conceptos de mantenimiento como ser
agregar un registro a una tabla, as como la edicin del mismo; eliminacin de un registro
y modificacin de datos. Contina con el concepto de consulta de datos, bsqueda de
informacin en la tabla. Luego se entra al concepto de reportes, utilizando como
herramienta de generacin de reportes Cristal report 7.0. En los ltimos captulos se
desarroll un ejercicio complejo sobre tablas cuyo ndice est compuesto por mas de un
campo, como es la planilla de una empresa.
El escritor de este texto, el Sr. Roger Pavn es un Analista de Sistemas de Informtica
desde hace un poco mas de veinte aos; y con su amplia experiencia como programador
y desarrollador de aplicaciones para bases de datos, pone a su disposicin todos sus
conocimientos para ayudarle en la fascinante tarea del desarrollo de sistemas.
El Sr. Pavn es escritor de otros textos como Macromedia MX, SQL para programadores,
Programacin Estructurada y otros; en cada unos de sus diferentes textos encontrar el
mismo principio: aprender desarrollando.
Al final de cada captulo encontrar una serie de ejercicios que usted debe desarrollar
para poder aplicar lo aprendido en el captulo. Tiene usted en sus manos uno de los
textos mas apreciados en el mercado por los desarrolladores de aplicaciones; son
muchos los programadores en otras herramientas que han aprendido con este texto.
Agradecemos a todos aquellos que hicieron posible la publicacin de este texto, en
especial a Berenice,Diego y Anita, y a usted amable lector por tener esta obra en sus
manos.
INDICE
Captulo No. 1 Introduccin al Visual Basic
1. Generalidades del Visual Basic
2. Entrando al Visual Basic
3. Pantalla de trabajo de Visual Basic
4. Iniciando un nuevo proyecto
5. Partes de la Pantalla de Visual Basic
6. Controles y componentes
7. Gua de trabajo Captulo No.1
1
1
1
1
2
3
4
6
7
7
7
8
8
9
12
13
14
15
16
16
16
18
20
21
21
22
26
27
29
30
30
30
33
33
37
40
40
40
41
42
43
6. Evento Gotfocus
7. Evento keyprees
8. Efecto de iluminado Sendkeys
9. Gua de trabajo Captulo No. 6
43
46
47
48
49
49
52
53
55
57
59
59
60
64
67
68
69
69
71
72
76
77
77
78
81
82
86
87
90
90
92
93
98
99
100
103
103
107
109
111
112
112
2. Primer Registro
3. Ultimo Registro
4. Registro anterior
5. Registro siguiente
6. Gua de trabajo Captulo No. 13
113
114
115
116
118
119
119
119
120
121
122
123
127
128
128
133
134
134
136
140
141
141
143
144
146
147
147
148
149
153
155
156
156
156
161
162
162
163
165
167
168
169
170
170
172
173
175
176
176
177
179
180
Captulo 1
Introduccin al Visual Basic 6.0
I.
Objetivo General
Conocer los conceptos bsicos del Visual Basic; cmo es su presentacin, la pantalla
de trabajo y sus secciones.
II.
Objetivos especficos
Conocer de manera detallada las secciones de Visual Basic, y poder identificar
las diferentes componentes y controles que se ofrecen.
III.
Contenido
1.
2.
3.
4.
5.
6. Controles y Componentes
7. Gua de trabajo
1. Generalidades de Visual Basic
Visual Basic es una herramienta para desarrollo de aplicaciones en ambiente Windows.
Pertenece a la familia de Microsoft, y es una de las herramientas de programacin ms
populares en todo el mundo. Al igual que la mayora de las herramientas visuales est
orientada a objetos y eventos, conceptos que sern explicados mas adelante. Visual Basic
ha experimentado cambios de versiones, mejorando algunos aspectos en cada una de
ellas; entre las versiones mas destacadas se encuentran la 4.0, 5.0, 6.0 y Net, que es la
mas reciente; en este texto estudiaremos la versin 6.0
VB, como lo llamaremos de aqu en adelante, tiene la ventaja de poder trabajar con
cualquier base de datos, entre las cuales mencionaremos: Acces(MS), Oracle, SQL Server
(MS), SQL Base, Informix, Pradox, DB2 del AS-400, y otros. Lo anterior nos conduce a
elegir VB como nuestra herramienta de desarrollo. En aos anteriores, los programadores
desarrollaban aplicaciones en lenguajes que quedaban amarrados a la plataforma de
manejo de datos; si la institucin cambiaba de plataforma de datos tambin tena que
cambiar de aplicacin; con VB la institucin puede iniciar manejando sus datos con una
plataforma no muy robusta o pequea, como el caso de Access, y si mas adelante cambia
a una plataforma mas robusta como Oracle, siempre le sirve la misma aplicacin de VB.
2. Entrando al Visual Basic
En cada computadora habr una forma peculiar de hacerlo; dependiendo de la forma en
que se ha instalado, as ser de diferente la forma de entrar, pero en su mayora ser de la
siguiente forma:
Inicio (Windows) / Programas / Visual Studio 6.0 / Visual Basic 6.0
Figura 1.1
Haga clic en el botn Cancelar
4. Iniciando un Nuevo Proyecto
Para poder ver la pantalla de trabajo con todas sus secciones debemos decirle a VB que
inicie un nuevo proyecto; note que en la parte superior de su pantalla hay un men de
opciones con las siguientes opciones: File, Edit, View, Project, Format, Debug, Run,
Query, Diagram, Tools, Add-ins, Windows, Help
Para crear un nuevo proyecto haga clic en la opcin del men que dice File; le aparecer
otro men del cual debe seleccionar la opcin que dice Project; le aparecer la siguiente
pantalla:
Figura 1.2
En esta pantalla le aparecen las diferentes opciones para crear un nuevo proyecto;
tenemos una gran variedad, entre ellas Standard EXE, Actives EXE, Activex EXE, Actives
EXE Control, VB Application Wizard y otras. Cada una de ellas tiene su propia funcin ,
pero la que usaremos en este texto como plataforma de trabajo ser la opcin o cono que
dice Standard EXE; debe asegurarse que esta opcin este seleccionada; en caso
contrario haga clic una vez sobre este cono.
Estando seguro que se encuentra seleccionado Standard EXE, haga clic en el botn OK y
le aparecer la siguiente pantalla
Figura 1.3
A partir de este momento usted est listo para desarrollar un sistema en VB; esto es lo que
llamamos Pantalla de trabajo de VB o Formulario; esta es la parte donde se pegan todos
los objetos a utilizar en el diseo de un sistema; es nuestra plataforma de diseo.
5. Partes de la Pantalla de Visual Basic
La pantalla de VB tiene bsicamente cuatro partes o secciones
a. Seccin de Controles
Figura 1.4
Esta es la parte donde se encuentran los diferentes objetos que se pueden usar en un
diseo; no son todos, mas adelante veremos cmo incluir en esta seccin otros controles;
la puede ver en la parte izquierda de su pantalla.
Para pegar un control en el formulario haga clic en cualquier control, luego haga clic en
cualquier parte del formulario y teniendo presionado el mouse haga un remarcado sobre el
formulario, luego suelte el botn del mouse; intente pegar varios componentes; para borrar
un componente del formulario, haga clic sobre el componente que desea borrar, y presione
la tecla Supr o delete.
Figura 1.5
Es la parte donde se encuentran las opciones del men principal, as como los botones de
acceso rpido; se encuentra en la parte inferior de la pantalla. Esta seccin como puede
ver tiene dos partes: la lnea donde estn las opciones del men y la lnea con los
botones de acceso rpido; un botn de acceso rpido tiene la misma funcin de una
opcin del men, solo que si ejecuta la tarea con el men posiblemente har mas de dos
pasos, mientras que con el botn de acceso rpido har un solo paso. No todas las
opciones del men tienen su botn de acceso rpido, solo las de mayor uso.
c. Seccin del Explorador
Figura 1.6
Es la parte donde se encuentran los diferentes formularios de nuestro proyecto; esta
seccin est usualmente por la derecha de su pantalla.
d. Seccin de Atributos o Propiedades
Figura 1.7
Es la parte donde podemos elegir algunas propiedades que queremos dar a un
determinado control u objeto como ser color, altura, anchura, textura, etc. Usualmente se
encuentra en la parte inferior derecha de su pantalla.
6. Controles y Componentes
Regresemos al concepto de Controles; los controles que se pueden ver en la seccin de
controles no son todos los controles que se pueden utilizar en VB; de hecho no son todos
los que utilizaremos en este texto.
Figura 1.8
c. Todos los controles de esta pantalla estn ordenados en orden alfabtico para que
de esa manera sea mas fcil localizar el control sabiendo su nombre; con la flechas
de direccin de su teclado usted puede desplazarse por esta pantalla; al ubicar el
control que desea incorporar a la seccin de controles haremos clic en la casilla
(cuadrito blanco) del control que queremos incorporar a la seccin de controles; al
hacer clic le aparece sobre la casilla un chequeo; puede seleccionar varios
controles si lo desea.
d. Ya finalizado el proceso haga clic en el botn Aceptar.
Cada control incorporado puede generar una o varias figuras de objetos; haremos el
siguiente ejercicio: Incorpore a la seccin de controles un control llamado: Microsoft
Windows Common Controls 5.0 (SP2)
Cuntas figuras de objetos le gener este nuevo Control? ______
Cul sera el proceso para quitar las figuras de objetos que gener la incorporacin de un
nuevo control?
Podemos quitar las figuras de un objeto de un nuevo control de la seccin de controles
siempre y cuando no hayamos pegado una de estas figuras en el formulario. El proceso
sera el mismo que el que se hizo para incorporarlo con la diferencia de que en el inciso c
del proceso lo que debemos hacer es quitarle el chequeo de la casilla que se encuentra a
la izquierda del nombre del control.
Captulo 2
Formularios
I.
Objetivo General
Conocer la funcin de los Formularios
II.
Objetivos especficos
Disear formularios y conocer las propiedades de los mismos
III.
Contenido
1.
2.
3.
4.
5.
6.
7.
8.
Qu es un formulario
Cmo agrandar el tamao de un formulario
Cmo correr o ejecutar un formulario
Salvar el formulario dentro de un proyecto nuevo
Propiedades
Creacin de nuevos formularios en un proyecto
Cambiando de un formulario a otro
Eliminar un formulario
9. Gua de trabajo
1. Qu es un formulario
Como se indic en el captulo 1, el formulario es donde se pegan los diferentes componentes a
usar en nuestro diseo de pantalla. Al entrar a VB, y crear un proyecto nuevo, la imagen que le
aparece es la del Formulario:
Figura 2.1
Si tuvisemos que dar una descripcin jerrquica al formulario, diramos que es la unidad bsica
de un proyecto; sin el formulario no es posible desarrollar nada en VB.
2. Como agrandar el tamao del formulario
Note usted que tanto por debajo como a la derecha del formulario se ven unos puntos o cuadritos
azules; haga clic en cualquiera de estos puntos, y teniendo presionado el botn del mouse
arrstrelo en la direccin deseada. Por favor agrande su formulario tanto hacia la derecha como
hacia abajo, de tal manera que le quede en forma rectangular, mas ancho que alto.
Figura 2.2
Nuestro proyecto lo salvaremos en el subdirectorio Winsystem as que cambie de subdirectorio.
d. Primero nos dice que salvar el formulario; escriba el nombre del formulario: Frmemple
y si ya est simplemente djelo as
e. Haga clic sobre el botn Guardar
f. Ahora le aparece una pantalla pidiendo el nombre del proyecto; escriba como
nombre: Sistema
g. Haga clic sobre el botn Guardar
h. Si le aparecer lo siguiente:
Figura 2.3
Haga clic en el botn: No
Este proceso tan largo se hace solo una vez; de aqu en adelante para salvar haga clic en la
figura de un diskette (ver parte superior)
5. Propiedades
Las propiedades del formulario estn en la seccin de las propiedades; a continuacin
conoceremos las diferentes propiedades que se aplican a los formulario, y su funcin; si nota las
propiedades en la seccin de propiedades, ver las siguientes:
Figura 2.4
a. (Name)
Esta propiedad es para dar nombre al formulario; note que VB le asign como nombre al
formulario: Form1; usted puede cambiar este nombre en la propiedad (Name); a este formulario
que estamos trabajando le daremos como nombre: Frmemple; este ser el formulario para los
datos de empleados de la aplicacin que desarrollaremos.
b. Backcolor
Esta propiedad sirve para darle color al formulario; dele al formulario un color amarillo, el mas
claro que encuentre. Ubquese en la propiedad Backcolor; por la derecha ver un combo o lista
men donde debe hacer clic; le aparecer lo siguiente:
Figura 2.5
Haga clic sobre la gua que dice Palette y le aparecer la paleta de colores:
Figura 2.6
Elija un color amarillo, el amarillo mas suave que encuentre.
Corra su formulario (ctrl. F5)
c. Propiedad moveable
Esta propiedad sirve para que el usuario pueda darle al formulario la caracterstica de poderse
mover con el mouse o para quitarle tal caracterstica; si usted corre su formulario podr moverlo
haciendo clic sobre el ttulo del formulario y arrastrarlo en cualquier direccin.
Corra su formulario y compruebe lo anterior.
Ahora ubquese en la propiedad moveable y ver que est en True; True significa que el
formulario tiene la caracterstica de poder moverse; se recomienda que los formularios estn
estticos, as que entre al combo lista men y seleccione la opcin False.
d. Propiedad Borderstyle
Esta propiedad sirve para habilitar o inhabilitar la condicin de minimizar y maximizar el
formulario; al correr su formulario usted habr notado que en el formulario por la esquina superior
derecha tiene lo siguiente:
Figura 2.7
Si usted hace clic sobre el guin, el formulario se minimiza; si usted hace clic sobre el rectngulo,
Figura 2.8
Vamos a cambiar este cono que propone VB por otra mas llamativa; vaya a esta propiedad y
haga clic en el botn que le aparece por la derecha; le aparece lo siguiente:
Figura 2.9
Debe seleccionar el subdirectorio donde se encuentra la figura que va a pegar en el
formulario; ubquese en el subdirectorio: C:\winsystem\imgenes; usted encontrar varios
archivos de imgenes; haga doble clic sobre el archivo: icono
Corra su formulario
Por ahora estas sern todas las propiedades del formulario que veremos en este captulo.
6. Creacin de nuevos formularios en un proyecto
Una de las actividades que el programador de visual Basic tendr que realizar es crear nuevos
formularios, ya que no es posible hacer toda una aplicacin en un solo formulario; una aplicacin
completa llevar entre 20 a 30 formularios como mnimo, y en otras aplicaciones se podra
duplicar este nmero. Para crear un nuevo formulario debe hacer clic en el men en la opcin:
Project y le aparecer el siguiente men:
Figura 2.10
De este nuevo men debe seleccionar la opcin: Add Form y le aparecer la siguiente pantalla:
Figura 2.11
En esta pantalla ya le aparece seleccionada la opcin: Form; haga clic sobre el botn Abrir.
De nuevo regresamos al formulario que de inicio nos present VB. Ahora bien, note lo que pasar
ahora: corra su formulario.
Si bien es cierto que en pantalla tiene el nuevo formulario, el que corri VB fue el anterior; esto se
debe al hecho de que hay una manera de indicarle a VB qu formulario debe correr.
7. Cambiando de un formulario a otro
Usted tiene dos formularios en este momento: frmemple y el formulario nuevo; para indicar a VB
qu formulario debe correr debe hacer lo siguiente: haga clic en el men en la opcin: Project y en
el men que le aparezca seleccione la opcin: Project 1 Properties y le aparecer lo siguiente:
Figura 2.12
Note que en el combo lista men, ya le aparece el nombre del formulario Frmemple; entre a esta
lista y seleccione el formulario nuevo; inmediatamente despus haga clic en el botn Aceptar
(OK).
Corra su formulario
Note que ahora se corre el formulario que tiene en pantalla; usted siempre debe tener en pantalla
el formulario de desea correr; haga los pasos necesarios para correr el formulario frmemple.
Ahora tenemos el inconveniente de que se corre el formulario que no tenemos en pantalla; en la
seccin del explorer de VB haga doble clic sobre el formulario Frmemple.
8. Eliminar un formulario
Eliminaremos el formulario nuevo; en el explorer haga clic sobre el formulario nuevo; presione el
clic derecho del mouse y le aparecer lo siguiente:
Figura 2.13
Haga clic sobre la opcin Remove Form2
Corra su formulario
Captulo 3
Tabbed Dialog
I.
Objetivo General
Conocer la funcin de los Tabbed dialog
II.
Objetivos especficos
Disear en los formularios los Tabbed dialog necesarios y conocer sus propiedades
III.
Contenido
1. Cmo abrir un proyecto
2. Qu es un Tabbed dialog
3. Propiedades de un Tabbed dialog
Figura 3.1
Debe ubicarse en el subdirectorio winsystem, que es donde salv el proyecto Sistema; cuando se
ubique en el subdirectorio winsystem, haga clic en el archivo Sistema. Vbp.
d. Haga clic en el botn Abrir
2. Qu es un Tabbed dialog
Un tabbed dialog es un control que nos ayuda a aprovechar el espacio del formulario, pues en el
mismo espacio del formulario puedo crear dos o mas pantallas para trabajar; en cualquier
aplicacin de Windows se estila usar este tipo de control; para que lo podamos identificar
vayamos a una parte del Visual Basic donde se usa este control; haga clic en el men en la opcin
Project, y luego en la opcin Project Properties; le aparecer esta pantalla:
Figura 3.2
Si usted hace clic en las diferentes guas o tabuladores (General, Make, Compile, Component,
debugging), notar que le aparecen distintas pantallas en el mismo espacio, sin tener que cambiar
de pantalla. En cada pantalla de cada gua o tabulador hay diferentes cosas o actividades que se
pueden hacer; este mismo control podemos utilizar en nuestro diseo de nuestra aplicacin.
El control Tabbed dialog no se encuentra disponible en la seccin de controles, as que hay que
insertarlo; en el captulo 1 aprendimos cmo insertar un nuevo control a la seccin de controles,
as que bastar con pedirle que inserte un nuevo control llamado: Microsoft Tabbed Dialog
Control 6.0. (ver captulo 1 pgina 4).
Si hizo correctamente el proceso de la insercin del control Microsoft Tabbed Dialog Control
6.0, debe aparecerle en la seccin de controles la siguiente figura:
Note que el nombre para este control es SStab; Pegue un SStab en el formulario y hgalo tan
grande que cubra casi todo el espacio del formulario, dejando un espacio por la derecha, y otro
por debajo. Debe quedarle de la siguiente manera:
Figura 3.3
d) Propiedad Caption
Esta propiedad es para asignarle un determinado texto a cada tabulador; note que el primer
tabulador tiene como texto: Tab 0 y el segundo Tab1; para cambiar texto a un tabulador primero
debe hacer clic sobre l, y luego ir a la propiedad Caption y escribir el texto que se desea. Haga
que los tabuladores tengan lo siguientes textos:
Primer tabulador: Datos Generales
Segundo tabulador: Consulta
Al cambiar los textos de los tabuladores deben verse de la siguiente manera:
e) Propiedad Backcolor
Esta propiedad es para cambiar el color de la parte del Sstab que contiene tabuladores (ver parte
superior); no es posible cambiar el color del Sstab; usted siempre lo tendr de color gris; se
acostumbra a dejar el color de la parte que no tiene guas o tabuladores del mismo color que el
formulario; vaya a la propiedad backcolor y asigne el mismo color del formulario, el amarillo mas
suave que encuentre; la forma de manejar este color es igual que la forma que lo hizo en el
captulo 2 cuando le cambi color al formulario ( ver captulo 2 pgina 9). Al cambiar color debe
verse de la siguiente manera:
Corra su formulario
Debe verse de la siguiente manera:
Figura 3.4
Captulo 4
Command Button
I.
Objetivo General
Conocer la funcin de los Command Button
II.
Objetivos especficos
Disear en los formularios los Botones necesarios y conocer las
propiedades del Command Button
III.
Contenido
1. Qu es un Command Button
2. Propiedades de los Command Button
3. Programando dentro de un botn
4. Imgenes para botnes creadas en programas grficos
1. Qu es un Command Button
En toda aplicacin en ambiente Visual (Windows) se requieren de objetos llamados
botones que llaman procedimientos o ejecutan acciones como salvar informacin,
imprimir, eliminar datos, etc. En Visual Basic los botones se hace con el control Command
Button y puede identificarlo por la siguiente figura en la seccin de controles:
Antes le pedimos que ample por la derecha el espacio entre el Tabbed Dialog y el
formulario, de tal manera que le quede as.
Ahora pegue un Command Button en la parte superior del espacio dejado por la derecha:
c. Propiedad Style
Esta propiedad sirve para indicar el estilo del botn; vaya a esta propiedad y entre al
combo que le aparece:
Usted notar que le aparecen dos opciones:
Si usted selecciona Graphical podr por medio de la propiedad Picture asignar una
imagen al botn.
Si usted selecciona Standard no podr asignar ninguna imagen al botn.
Le pedimos que seleccione Graphical
Usted no notar ningn cambio, el efecto se mira hasta que asignamos una imagen con la
propiedad picture.
c. Propiedad Picture
Esta propiedad sirve para pegar una imagen en un botn; no tiene caso trabajar esta
propiedad si en la propiedad Style no se seleccion Graphical; vaya a esta propiedad y
haga clic en el botn que le aparece en la propiedad:
En esta pantalla usted debe buscar la imagen que desea pegar en el botn; en la parte superior
de esta pantalla (Buscar en), usted debe entrar al combo y ubicarse en el subdirectorio donde se
encuentran las imgenes; las imgenes que necesitamos se encuentran en el subdirectorio
C:\Winsystem\imagenes.
En nuestro caso seleccionaremos la imagen: Grabar; haga clic sobre esta imagen y luego haga
clic sobre el botn Abrir (ver parte inferior derecha de la pantalla).
d. Propiedad Tooltiptext
Esta propiedad sirve para asignar al botn un texto de etiqueta; al correr la aplicacin,
esta etiqueta se mostrar al sobreponer el puntero del mouse sobre el botn sin tener que
hacer clic.
Vaya a esta propiedad y escriba lo siguiente: Agregar registro
Al correr su aplicacin y sobreponer el puntero del mouse sobre el botn notar lo
siguiente:
EJERCICIO
Haga lo siguientes botones:
1.Name:
Caption:
Style:
Picture:
Tooltiptext:
Modificar
Modificar
Graphical
Grabar
Modificar registro
2.Name:
Caption:
Style:
Picture:
Tooltiptext:
Cancelar
Cancelar
Graphical
Cancelar
Cancelar operacin
3.Name:
Caption:
Style:
Picture:
Tooltiptext:
Eliminar
Eliminar
Graphical
Eliminar
Eliminar registro
4.Name:
Caption:
Style:
Picture:
Tooltiptext:
Salirse
Salirse
Graphical
Salirse
Salirse de esta pantalla
e. Propiedad Enabled
Esta propiedad sirve para habilitar o inhabilitar un botn; al ir a esta propiedad usted
puede entrar al combo que le aparece y ver dos opciones:
El resto de propiedades del command button se vern en la medida que se usen, lo cual
ser en captulos siguientes
3. Programando dentro de un botn
La idea de hacer botones es que al hacer clic en ellos se ejecute una determinada accin;
en tal caso es necesario crear lneas de programacin (lneas de cdigo); para el caso
vamos a programar que al hacer clic en el botn salir; el programa haga una salida; los
pasos serian los siguientes:
1. Ubquese en el botn salirse
2. Haga doble clic
3. Debe aparecerle lo siguiente
Esto es lo que se llama subrutina; la subrutina inicia con la palabra Private y termina
con las palabras: End Sub; en el espacio que hay entre el inicio y fin de la subrutina se
escriben las lneas de programacin que sern ejecutadas:
Como lo que queremos es hacer una salida, utilizaremos la frase: Unload me
Esta frase significa: Salirse del formulario donde actualmente me encuentro
4. Escriba: Unload me
5. Slgase de esta pantalla
Nota: para salirse de la pantalla de cdigo, presione el clic derecho del mouse y le
aparecer la siguiente pantalla:
Este procedimiento es mas atractivo desde el punto de vista que podemos hacer mas
personalizado nuestro sistema.
Captulo 5
Label y Textbox
I.
Objetivo General
Conocer la funcin de los Label y Textbox
II.
Objetivos especficos
Disear en los formularios los Label y Textbox necesarios y conocer las
propiedades
III.
Contenido
1. Qu es un Label
2. Propiedades de los Label
3. Qu es un textbox
4. Propiedades de los textbox
1. Qu es un Label
Sirve para hacer etiquetas o simular contenedores de controles; puede identificar este
control porque su dibujo es una letra A
En nuestro caso los label o etiquetas las haremos sobre el tabbed dialog (tabla); pegue un
Label en la pantalla, exactamente en la parte superior del tabbed dialog, de la siguiente
manera:
los label no sern cambiados, al menos ese es el criterio en nuestro curso; pero usted
puede asignarle un nombre como a cualquier otro objeto.
b. Propiedad Caption
Esta propiedad sirve para cambiar el texto del label; Vaya a la propiedad caption, y
escriba: Cdigo del empleado; debe quedarle as:
c. Propiedad Borderstyle
Esta propiedad sirve para darle al label una apariencia de hundimiento; vaya a la
propiedad borderstyle; entre al combo que le aparece y ver dos opciones:
Despus de indicar las caractersticas que le desea dar al texto debe presionar el botn
aceptar. Esta opcin de la propiedad Font la usaremos cuando manejemos ttulos u otros
textos; por ahora dejaremos los textos sin ninguna caracterstica que nos proporciona esta
pantalla, excepto el label: Cdigo del empleado; dele a este label la caracterstica de letra
negrita.
Ejercicio
Haga las siguientes etiquetas; recuerde que no debe cambiar el nombre de la etiqueta
que es asignado por Visual Basic:
-
Direccin
Fecha de Ingreso
Sueldo Mensual
Telfono
Sexo (F,M)
Departamento
Sucursal
Sindicato
3. Qu es un Textbox
Sirve para hacer casillas de entrada de datos; puede identificar este control porque su
dibujo es el siguiente:
Los textbox se harn a la par de cada label o etiqueta, siempre sobre el tabbed dialog
(tabla); pegue un textbox en la pantalla, exactamente a la par de la etiqueta: Cdigo del
empleado, de la siguiente manera:
Esta propiedad sirve para dar nombre al textbox; vaya a la propiedad Name, y encontrar
que el nombre asignado por visual Basic es: Text1; los nombres de los textbox que
usaremos sern los mismos que tiene en la tabla de datos de nuestra base de datos, la
cual conoceremos en captulos siguientes; agregaremos al nombre las letras TXT; el
texbox para el cdigo del empleado le llamaremos: TXTCODIGO.
b. Propiedad Text
Esta propiedad sirve para asignar al textbox un rtulo previo; en nuestro caso los textbox
irn en blanco; vaya a la propiedad Text y borre el rtulo o palabra que encuentre:
Corra su aplicacin e ingrese datos a la casilla del cdigo del empleado; si ya lo hizo
usted notar que necesitamos de una propiedad que nos permita limitar el No. de
caracteres a ingresar.
c. Propiedad Maxlen
Esta propiedad sirve para indicar el No. caracteres permitidos en un textbox; vaya a la
propiedad Maxlen y encontrar que tiene el No. 0, lo cual indica que no tiene lmite de
caracteres; usted escriba el No. 10 (esta es la longitud del campo nombre en la tabla
Empleados)
Corra su aplicacin y trate de ingresar al cdigo del empleado mas de 10 caracteres:
d. Propiedad Appearance
Esta propiedad sirve para indicar el tipo de casilla (plana o 3D); vaya a esta propiedad y
entre al combo lista y le aparece lo siguiente:
0 Alineamiento a la izquierda
1 Alineamiento a la derecha
2 Centrado
Nota: los datos de tipo numrico deben alinearse a la derecha
EJERCICIO
Para cada etiqueta menos Fecha, haremos los siguientes texbox:
Direccin
Sueldo Mensual
Telefono
Estado civil
Propiedad
Nombre:
Maxlen
Tabindex
Nombre
Maxlen
Tabindex
Nombre
Maxlen
Tabindex
Nombre
Maxlen
Tabindex
Nombre
Maxlen
Tabindex
TXTNOMBRE
40
1
TXTDIRECCION
150
2
TXTSUELDO
10
3
TXTTELEFONO
20
4
TXTESTADOCIVIL
1
5
Sexo
Departamento
Sucursal
Sindicato
Nombre
Maxlen
Tabindex
Nombre
Maxlen
Tabindex
Nombre
Maxlen
Tabindex
Nombre
Maxlen
Tabindex
TXTSEXO
1
6
TXTDEPARTAMENTO
2
7
TXTSUCURSAL
2
8
TXTSINDICATO
1
9
Name
TXTCODCLI
TXTNOMCLI
TXTCONTACTO
Maxlen
10
50
50
Tabindex
0
1
2
Direccin
Fecha
Crdito Mximo
Tipo de cliente
Telfono
Paga impuesto S/N
Vendedor
Categora
Area
TXTDIRECCION
150
TXTCREDITOMAX
TXTTIPOCLIENTE
TXTTELEFONO
TXTPAGAIMPUESTO
TXTVENDEDOR
TXTCATEGORIA
TXTAREA
10
1
20
1
10
1
1
5
6
7
8
9
10
11
(N)
Name
TXTCODIGO
TXTNOMBRE
Maxlen
10
100
Tabindex
0
1
TXTEXISTENCIA
TXTMAXIMO
TXTMINIMO
TXTPRECIO
TXTCOSTO
TXTPAGAIMPUESTOP
TXTLINEA
TXTUNIDAD
TXTTIPOPRODUCTO
TXTTIPOPROVEEDOR
10
10
10
10
10
1
4
4
1
1
3
4
5
6
7
8
9
10
11
12
(N)
(N)
(N)
(N)
(N)
(N)
No. Factura
Fecha
Cliente
Vendedor
Sucursal
Tipo de Factura
Paga Impuesto S/N
Subtotal
Descuento
Impuesto
Total
Plazo
Tarjeta de crdito
Name
TXTFACTURA
Maxlen
10
Tabindex
0
TXTCLIENTE
TXTVENDEDOR
TXTSUCURSAL
TXTTIPOFACTURA
TXTPAGAIMPUESTO
TXTSUBTOTAL
TXTDESCUENTO
TXTIMPUESTO
TXTTOTALNETO
TXTPLAZO
TXTTARJETACREDITO
10
10
2
2
1
10
10
10
10
10
1
2
3
4
5
6
7
8
9
10
11
12
(N)
(N)
(N)
(N)
(N)
Captulo 6
Fechas, Barras de Estado y Eventos
I.
Objetivo General
Conocer la funcin de los Masked edit, Statusbar y Eventos
II.
Objetivos especficos
Disear en los formularios los Masked edit para las casillas de fechas,
las barras de estado necesarios y conocer las propiedades de ambos
as como iniciar el estudio del concepto de eventos.
III.
Contenido
1. Qu es un Masked edit
2. Propiedades de los Masked edit
3. Qu es un Statuslbar
4. Propiedades de los Statusbar
5. Eventos
6. Evento Gotfocus
7. Evento Keyprees
8. Efecto de iluminado - Sendkeys
1. Qu es un Masked edit
Este control sirve para manejar casillas con determinado formato; en nuestro caso lo
usaremos para manejar las fechas. No est disponible en la seccin de controles por lo
tanto es necesario integrarlo a la seccin de controles: haga los pasos pertinentes para
integrar el componente Microsoft Masked edit Control 6.0
Al estar este control en la seccin de controles usted lo puede reconocer por la siguiente
figura:
b. Propiedad Mask
Esta propiedad sirve para dar un formato a la casilla; como se trata de una fecha le
daremos un formato de fecha larga; vaya a esta propiedad y escriba lo siguiente: ##/##/
#### (no hay espacios intercalados). Al escribir el formato presione la tecla enter; la
casilla debe verse as:
c. Propiedad Heigth
Esta propiedad sirve para dar una anchura determinada a la casilla; si usted nota la casilla
de la fecha de ingreso no tiene la misma anchura que las otras casillas; para dejar la
misma anchura a la casilla Fecha de ingreso, vaya a la propiedad Height de cualquier otra
casilla y anote el No. que encuentre, y ese mismo No. introdzcalo en la propiedad Height
de la casilla Fecha de inghreso.
3. Qu es un Statusbar
Este control sirve para crear barras de estado. En toda aplicacin para Windows se tiene
barras de estado para indicar mensajes, la hora, la fecha y otros. Este control no est
disponible en la seccin de controles por lo tanto es necesario integrarlo a la seccin de
controles: haga los pasos pertinentes para integrar el componente Microsoft Windows
common controls 6.0; este componente genera varias figuras y entre ellas est el
Statusbar; usted puede reconocerlo por la siguiente figura:
Pegue un Statusbar en la parte inferior de su formulario (no sobre el tabbed dialog); basta
con que haga un pequeo remarcado y automticamente cubre a lo largo del formulario;
al correr su aplicacin debe quedarle as:
Ejercicio: queremos que cuando el cursor est en la casilla TXTCODIGO (Cdigo del
empleado) aparezca en la barra de estado el siguiente mensaje:
Cdigo del empleado: teclee 10 caracteres como mximo
Siga los siguientes pasos:
a. Haga doble clic sobre la casilla Cdigo del empleado; le aparecer la siguiente
pantalla:
b. Escriba lo siguiente:
BARRAESTADO.PANELS(1).TEXT= Cdigo del empleado: teclee 10 caracteres como mximo
Esta instruccin lo que hace es poner el rtulo: Cdigo del empleado: teclee 10
caracteres como mximo, en la propiedad text del primer panel del statusbar llamado
BARRAESTADO.
Slgase de esta pantalla y corra su aplicacin; al estar el cursor en la casilla Cdigo del
empleado, la barra de estado mostrar lo siguiente:
Ejercicio: queremos que cuando el cursor est en la casilla TXTNOMBRE (Nombre del
empleado) aparezca en la barra de estado el siguiente mensaje:
Nombre del empleado: teclee 40 caracteres como mximo; primero nombres, luego
apellidos
Siga los siguientes pasos:
a. Haga doble clic sobre la casilla Nombre del empleado del empleado; le
aparecer la siguiente pantalla:
b. Escriba lo siguiente:
BARRAESTADO.PANELS(1).TEXT= Nombre del empleado: teclee 40 caracteres como mximo; primero
nombres, luego apellidos
Esta instruccin lo que hace es poner el rtulo: Nombre del empleado: teclee 40
caracteres como mximo; primero nombres, luego apellidos, en la propiedad text del
primer panel del statusbar llamado BARRAESTADO.
Slgase de esta pantalla y corra su aplicacin; al estar el cursor en la casilla Nombre del
empleado, la barra de estado mostrar lo siguiente:
Nota: Haga para cada textbox o casilla de datos un mensaje en el evento Gotfocus; usted
elija qu mensaje desea escribir.
7. Evento Keyprees
Se activa cuando se teclea cualquier carcter en la casilla de datos (textbox); necesitamos
de este evento para lograr nuestro siguiente objetivo: queremos que en ninguna casilla se
acepte el apstrofe o comillas simples ni las comillas dobles; esto es porque ambos son
caracteres reservados de Visual Basic.
Ejercicio: queremos que la casilla TXTCODIGO (cdigo del empleado no permita el
apstrofe o comillas simples ni las comillas dobles.
Siga los siguientes pasos:
a. Abra el evento Keyprees de la casilla Cdigo del empleado; le aparecer la siguiente
pantalla:
b. Escriba lo siguiente:
If Keyascii = 39 or Keyascii = 34 then
Keyascii = 0
End If
Note que el dato del cdigo del empleado tiene el efecto de iluminado; este efecto es muy
importante pues de querer eliminar el dato bastara con presionar la tecla Delete; o si
queremos cambiar el dato bastara con escribir sobre el dato iluminado.
Para conseguir nuestro objetivo debemos trabajar en el evento GotFocus; abra el evento
gotfocus de cada casilla, y agregue la siguiente lnea:
SendKeys {Home}+{End}
Cuando abra el evento gotfocus ya encontrar una lnea de cdigo; puede escribir la
nueva lnea de cdigo antes o despus de la que encuentre.
Captulo 7
Combobox, OptionButton y Checkbox
I.
Objetivo General
Conocer la funcin de los ComboBox, OptionButton y CheckBox
II.
Objetivos especficos
Disear en los formularios los combobox, Optionbox y Checkbox
necesarios y conocer sus propiedades
III.
Contenido
1. ComboBox
2. Frame
3. OptionButton
4. CheckBox
COMBOESTADOCIVIL
2-DROPDOWN
La propiedad Style con el valor 2 DropDown es para que los elementos de la lista del
combo no puedan modificarse ni borrarse.
Lista de elementos en un combobox
Corra su formulario
Ahora programaremos que al seleccionar un item del combo, la seleccin aparezca
reflejada en el textbox TXTESTADOCIVIL, es decir si seleccionamos Soltero, debe
aparecer un 1, si seleccionamos Casado, debe aparecer un 2 y as sucesivamente.
Entre al evento clic del combo (COMBOESTADOCIVIL) y escriba lo siguiente:
Select case COMBOESTADOCIVIL.listindex
Case 0
Txtestadocivil= 1
Case 1
Txtestadocivil= 2
Case 2
Txtestadocivil= 3
Case 3
Txtestadocivil= 4
Case 4
Txtestadocivil= 5
End Select
En este momento cabe explicar cmo se manejan los item en un combobox; Listindex
indica el elemento de la lista, y el primer elemento de la lista corresponde al listindex = 0;
esto indica que nuestros item tienen la siguiente asignacin:
Listindex = 0 Soltero
Listindex = 1 Casado
Listindex = 2 Divorciado
Listindex = 3 Viudo
Listindex = 4 Otro
Soltero = S
Casado = C
Divorciado = D
Viudo = V
Otro = O
La estructura de la programacin de los eventos no cambia, pero hay una pequea
diferencia.
La programacin del evento clic del combo sera la siguiente:
Select case COMBOESTADOCIVIL.listindex
Case 0
Txtestadocivil= S
Case 1
Txtestadocivil= C
Case 2
Txtestadocivil= D
Case 3
Txtestadocivil= V
Case 4
Txtestadocivil= O
End Select
3. Optionbutton
Este control sirve para manejar una lista de opciones visibles; a veces queremos que el
usuario pueda ver las diferentes opciones de las cuales dispone, y en tal caso el
combobox no nos ayuda; en nuestro caso el dato del sexo ser manejado con este
control, el cual puede reconocer en la seccin de controles por la siguiente figura:
Pegue un optionbutton a la par del textbox TXTSEXO, dentro del frame; debe quedarle
as:
OPCIONM
Masculino
Pegue otro optionbuttom a la par del option que ya est puesto; debe quedarle as:
OPCIONF
Femenino
4. Checkbox
Este control sirve para hacer una caja de chequeo; puede reconocerlo en la seccin de
controles por la siguiente figura:
Lo utilizaremos para aquellos casos cuando la respuesta sea SI o NO; en nuestro caso lo
usaremos para Sindicato S/N.
Pegue un checkbox a la par del textbox TXTSINDICATO; debe quedarle as:
CHSINDICATO
Dejarlo en Blanco
==>
==>
OpcionM
OpcionD
==>
==>
OpcionN
OpcionE
==>
==>
OpcionCR
OpcionCO
Captulo 8
ODBC
I.
Objetivo General
Conocer el concepto de ODBC
II.
Objetivos especficos
Crear la conexin ODBC y conectar los programas de nuestra aplicacin con
una base de datos
III.
Contenido
1. Qu es un ODBC
2. Creacin de un ODBC
3. Referencias (Remote Data Object); DLL
4. Variables de Conexin y Mdulos
5. Conexin a una base de datos
1. Qu es un ODBC
Un ODBC es la conexin a una base de datos; su nombre tiene el siguiente significado:
O
D
B
C
Object
Data
Base
Conexin
ODBC
Base de Datos
Nunca nuestros programas se conectan con la base de datos, siempre lo hace por medio
del ODBC.
Esto tiene la gran ventaja de que el mismo programa (Visual Basic) puede trabajar con
cualquier base de datos si se tiene el ODBC adecuado; existe un ODBC distinto para
cada base de datos (Oracle, SQL Server, DB2 AS 400, Access, etc.)
Cada base de datos tiene una instalacin para el Servidor y otra para los clientes
(computadoras conectadas al servidor); cuando se instala la base de datos en el cliente,
se instala el ODBC de esa base de datos por si queremos usar un programa para
conectarse a la base de datos.
La programacin que se haga en Visual Basic debe ser una programacin con
instrucciones de SQL para que pueda trabajar en cualquier base de datos.
En nuestro caso nuestra base de datos en la que trabajaremos se encuentra en Access, y
el ODBC de Access se instala desde que se instala en la computadora cualquier versin
de Windows.
Debe tener bien claro que el concepto moderno de conexin es ODBC; los enlaces de
internet a bases de datos se hacen por medio de ODBC.
2. Creacin de un ODBC
Crearemos un ODBC para Access al que llamaremos Sistema el cual se conectar a una
base de datos llamada tambin Sistema que se encuentra en el subdirectorio Winsystem.
El nombre del ODBC no tiene que ser igual al nombre de la Base de Datos.
Para una mejor comprensin acerca de la creacin de un ODBC enumeraremos los
pasos:
a. Haga clic en Inicio (Windows)
b. Seleccione: Configuracin
c. Seleccione Panel de Control
d. Busque una lnea o cono que tenga la siguiente frase:
Fuente de Datos ODBC y haga doble clic sobre este cono
Nota: debe saber que si usted tiene un Windows 2000 profesional o XP,
Habr un paso antes del inciso d; debe entrar a una opcin que dice:
Herramientas de Administracin
Despus de hacer doble clic sobre el cono que dice Fuente de ODBC (ODBC Data
Sources), le aparecer la siguiente pantalla:
Figura 8.1
e. Debe presionar el botn Add (Agregar) para crear un ODBC; le aparecer la
siguiente pantalla
Figura 8.2
Note usted todos los tipos de ODBC que puede crear; el ODBC que crearemos es un ODBC de
Access, as que haga doble clic en la lnea que dice: Microsoft Access Driver.
Figura 8.3
En esta pantalla tenemos dos casillas a las que introduciremos datos:
Figura 8.4
Figura 8.5
Ahora debe hacer dos cosas:
Haga clic sobre la base de datos para que quede seleccionada (no doble clic)
Presione el botn OK
Figura 8.6
Note que se regresa a la pantalla anterior, pero ya puede ver la base de datos con la
quedar conectada nuestro ODBC.
A partir de este momento presione cualquier botn que diga: OK o Aceptar
Nota: para crear un ODBC para otra base de datos algunos pasos cambiarn; cuando le
toque trabajar con otra base de datos debe investigar los pasos para crear el ODBC,
aunque debe saber que en una empresa grande donde se usa una base de datos robusta,
la creacin dl ODBC no le corresponde al programador sino al DBA (Administrador del
sistema).
Figura 8.7
En esta lista se encuentran todos los DLL de los que podemos disponer; busque en la
lista el archivo: Microsoft Remote Data Object 2.0; al encontrarlo mrquelo para
seleccin de la misma manera que selecciona un componente; luego presione el botn
Ok.
Lo que hemos activado, realmente es un tipo de conexin a un ODBC llamado RDO.
Existen otros dos tipos de conexin (DAO y ADO) pero son de menor efectividad.
4. Variables de Conexin y Mdulos
Una vez incorporado el DLL para trabajar con ODBC es necesario crear un par de
variables con las cuales haremos nuestra conexin. Para crear las variables de conexin
debemos crear un mdulo.
Qu es un mdulo
Es un archivo donde se crean las variables que sern usadas por la aplicacin desde
cualquier formulario (Globales).
En este punto debemos explicar el concepto de variables globales; las variables globales
a diferencia de la variables locales, pueden ser usadas desde cualquier punto de la
aplicacin; mientras que las variables locales (creadas en cada formulario) solo pueden
ser usadas en el formulario donde son creadas.
Cmo crear un Mdulo
Figura 8.8
c. Presione el botn Abrir (open) y le aparecer una pantalla en blanco; ya en este
momento el mdulo ha sido creado.
Para salirse de esta pantalla en blanco presione clic derecho y del men que le aparece
seleccione Hide.
Si usted nota, en la seccin del explorer ya le aparece el mdulo con el nombre: Module1
Ya creado el mdulo entramos a l (presione doble clic sobre el nombre del mdulo: Module1)
Captulo 9
Lectura de Tablas de Datos
I.
Objetivo General
Conocer el concepto de Lectura de Tablas de datos
II.
Objetivos especficos
Leer una tabla de datos y manipular sus datos dentro de un formulario
III.
Contenido
1. Lectura de una tabla (Intruccin Select)
2. Variables RdoResultset
3. Lectura de tablas usando parmetros
Artculos:
Clientes:
Facturas:
El asterisco indica que se estn leyendo todas las columnas de la tabla. Tambin
podemos leer de la tabla solo ciertas columnas:
Select codigo,nombre from empleados
En esta instruccin solo estamos leyendo de la tabla las columnas o campos: codigo y
nombre.
Si queremos leer los datos slo del empleado con cdigo 006 escribimos:
Select * from Empleados where codigo=006
Nosotros podemos usar estas instrucciones e incorporarlas en Visual Basic; para
conseguir tal objetivo debemos conocer las variables de tipo RdoResultset
2. Variables RdoResultset
Una variable de tipo RdoResultset es una variable que sirve para leer tablas de datos;
este tipo de variables se crea de la siguiente manera:
Dim ZZ As RdoResultset
En donde ZZ es el nombre de la variable; una variable de tipo Rdoresultset es un arreglo
en dos dimensiones, columnas y filas; el No. de columnas que tendr ser de acuerdo a
las columnas que ha ledo de determinada tabla, y el No. filas depender de las filas o
registros ledos de la tabla.
Cmo indicamos qu tabla queremos que lea nuestra variable; para esto hacemos uso de
la clusula Set.
Si queremos que nuestra variable lea el codigo y nombre de la tabla empleados
escribimos lo siguiente:
Set ZZ = Con.Openresultset(Select codigo,nombre from Empleados, rdopenDynamic )
Siempre tendra dos columnas, y si encontr datos del empleado 006 tendra una fila.
Para hacer referencia a una u otra columna lo hacemos de la siguiente manera:
ZZ!codigo hace referencia al dato codigo
ZZ!Nombre hace referencia al dato nombre
Podemos hacer una lectura y no recibir como respuesta informacin; para el caso en la
instruccin del Set anterior, si no hubiese ningn empleado con codigo 006, la variable ZZ
estara vaca. Para preguntar si la variable ZZ est vaca (sin datos) lo haramos de la
siguiente manera:
If ZZ.Eof Then
Otro aspecto muy importante es el hecho que al final de un proceso siempre hay que
dejar cerrada una variable Rdoresultset, pues la clusula Set la abre ( Openresultset); para
cerrar una variable de tipo Rdoresultset lo hacemos as:
ZZ.Close
3. Lectura de tablas usando parmetros
Notemos de nuevo la siguiente instruccin:
Set ZZ = Con.Openresultset(Select codigo,nombre from Empleados where codigo=006 ,
rdopenDynamic)
Como dijimos anteriormente esta instruccin lee los datos del empleado con codigo 006.
Ahora imagnese que tenemos un textbox llamado TXTCODIGO y otro llamado
TXTNOMBRE.
Queremos leer los datos del empleado cuyo codigo est en el texbox TXTCODIGO; esto
sera una lectura parametrizada; la instruccin sera la siguiente:
Pareciera que hay un espacio entre el apstrofe (comilla simple) y la doble comilla, pero
no es as, tenga el cuidado de no dejar dicho espacio cuando le toque usar esta
instruccin.
Dependiendo de lo que tenga el textbox TXTCODIGO, ese ser el empleado ledo.
Cul sera la instruccin para asignar al textbox el dato del nombre desde la variable ZZ;
al tener los datos del empleado cuyo codigo est en el textbox TXTCODIGO, la
asignacin del nombre en el textbox TXTNOMBRE sera de la siguiente manera:
TXTNOMBRE = ZZ!nombre
Esta instruccin anterior tiene un serio problema; si el empleado fue encontrado pero el
nombre est vaco (sin datos), la instruccin anterior truncara el programa; as que antes
de hacer la asignacin debemos preguntar si ZZ!nombre est vacio (nulo); lo correcto es
hacer la asignacin de la siguiente manera:
If Not Isnull(ZZ!nombre) then
TXTNOMBRE = ZZ!nombre
End if
Lo anterior se explica de la siguiente manera:
Si ZZ!nombre no es nulo entonces asigne el nombre a txtnombre; en caso de que
ZZ!nombre es nulo la asignacin no se hara.
Ya estamos listos para aplicar todo este conocimiento en un ejercicio prctico;
programaremos en el formulario Frmemple, que al introducir el cdigo del departamento
aparezca el nombre del departamento; si no encuentra el departamento debe aparecerle
un rtulo que diga: NO EXISTE
Necesitamos que primero pegue un nuevo textbox (TXTNOMDEPARTAMENTO) a la par
del textbox TXTDEPARTAMENTO; debe quedarle de la siguiente manera:
Nota: La instruccin Set ZZ debe ir en una sola lnea; por cuestin de espacio en nuestro
texto lo hacemos en dos lneas. Pero si usted desea hacerlo en dos lneas, debe indicar la
continuacin con el guin largo ( _ ) as:
Set ZZ = Con.Openresultset(Select codigo,nombre from Departamentos where codigo= & _
TXTDEPARTAMENTO & , rdopenDynamic)
Nota: La instruccin Set ZZ debe ir en una sola lnea; por cuestin de espacio en nuestro
texto lo hacemos en dos lneas. Pero si usted desea hacerlo en dos lneas, debe indicar la
continuacin con el guin largo ( _ ) as:
Set ZZ = Con.Openresultset(Select codsuc,nomsuc from Sucursales where codsuc= & _
TXTSUCURSAL & , rdopenDynamic)
Captulo 10
Subrutinas, Inicializar Datos y Agregar Registro
I.
Objetivo General
Conocer el concepto de Subrutinas y Agregar Registro en una Tabla de datos
II.
Objetivos especficos
Crear subrutinas; crear la subrutina para limpiar los datos de la pantalla de
captura de datos; programar el botn Cancelar y el botn Agregar de la
aplicacin de empleados
III.
Contenido
1. Crear subrutinas (Private Sub)
2. Subrutina Inicializar datos
3. Programacin Botn Cancelar
4. Programacin Botn Agregar (Insert)
5. Instruccin Con.Committrans
End Sub
En donde:
Y le deja el espacio para escribir las instrucciones que desee; escriba las siguientes
instrucciones: (R001)
Txtnombre=empty
TxtDireccion=Empty
TxtFechaingreso=__/__/____
TxtSueldo=Empty
TxtTelefono=Empty
TxtEstadoCivil=1
TxtSexo=M
TxtDepartamento=Empty
TxtNomDepartamento=Empty
TxtSucursal=Empty
TxtNomSucursal=Empty
TxtSindicato=S
Ahora slgase de esta pantalla
En este momento cabe hacerse varias preguntas:
a.- Por qu TXTCODIGO no la incluimos en la rutina DATOSINICIALES
Porque los datos de la llave principal no se borran desde una rutina, sino en forma
separada. Aunque la razn prctica de no incluirlo en la rutina DATOSINICIALES se ver
en el captulo siguiente, cuando se mire la modificacin de un registro o la eliminacin del
mismo.
b.-Por qu TXTESTADOCIVIL=1
Porque de esta manera conseguimos que se ejecute el evento Change de
TXTESTADOCIVIL, lo cual har que en el combo COMBOESTADOCIVIL se ubique en el
index que dice: Soltero. Como regla general diremos lo siguiente: En un Textbox que est
amarrado a un combobox, siempre le daremos el valor que corresponda al primer
elemento de la lista del combo.
1= Soltero, 2=Casado.........
si usted quisiera que el combo muestre la palabra Soltero por default, qu hara?
c.-Por qu TXTSEXO= M
Porque de esta manera conseguimos que se ejecute el evento Change de TXTSEXO, lo
cual har que cualquiera de los Optionbutton se active; en este caso se activar el
optionbutton que corresponde a Masculino. Como regla general diremos lo siguiente: En
un textbox que est amarrado a varios optionbutton, siempre daremos el valor que
corresponda a cualquiera de los optionbutton.
M=Masculino, F=Femenino
Si usted quisiera que apareciera activo el optionbutton de Femenino por default, qu
hara?
d.-Por qu TXTSINDICATO=S
Haga clic sobre el nombre de la rutina donde desea ubicarse, e inmediatamente visual
Basic lo ubica en la rutina seleccionada.
3. Programacin Botn Cancelar
Hacer una rutina no tiene ningn sentido si no se le llama desde algn punto del
programa; un buen lugar para llamar la rutina es el botn cancelar; haga doble clic sobre
el botn cancelar, y le aparecer el espacio para programar:
Para resolver estos dos puntos anteriores, haga clic de nuevo sobre el botn Cancelar, y
agregue las siguientes instrucciones despus de llamar la subrutina DATOSINICIALES:
TXTCODIGO = EMPTY
TXTCODIGO.SetFocus
Corra su aplicacin y haga la prueba de nuevo
Explicaremos las instrucciones que fueron agregadas:
a. TXTCODIGO = EMPTY; limpia la casilla del cdigo del empleado
Con.execute(MstrSql)
Entre al botn Salvar y sustituya las instrucciones que encuentre por las anteriores y corra
su aplicacin:
Ahora entre a la base de datos (Access) y verifique que el registro se grab; tambin
borre el registro grabado despus de comprobada su grabacin.
Ahora queremos grabar en la tabla los datos de la pantalla; hagamos una referencia a
cada dato:
1002
Rosa Mayrena
01/01/2003
12500
=
=
=
=
TXTCODIGO
TXTNOMBRE
TXTFECHAINGRESO
TXTSUELDO
sera un grave error sencillamente sustituir los valores por las casillas, as:
MstrSql=Insert into empleados(codigo,nombre,fechaingreso,sueldo) Values ('txtcodigo' ,
'txtnombre', 'txtfechaingreso',txtsueldo)
Con.execute(MstrSql)
Lo que queremos hacer es grabacin parametrisada; la instruccin correcta sera la
siguiente (R004):
MstrSql=Insert into empleados(codigo,nombre,fechaingreso,sueldo) Values ( _
& & txtcodigo & ' ,
_
& & txtnombre & ' , _
& & txtfechaingreso & ' , _
& txtsueldo & )
Con.execute(MstrSql)
Entre al botn Salvar y sustituya las instrucciones que encuentre por las anteriores y corra
su aplicacin: Introduzca los siguientes datos:
1002
=
TXTCODIGO
Rosa Mayrena
=
TXTNOMBRE
01/01/2003
=
TXTFECHAINGRESO
12500
=
TXTSUELDO
Verifique que el registro se grab; luego borre el registro grabado; le sugerimos que nunca
escriba instrucciones demasiado largas, mejor acrtelas; para el caso, cuando la lista de
campos que recibirn informacin es muy larga, divida la instruccin en varias partes, as
(R005):
MstrSql=Insert into empleados(codigo,nombre, _
& fechaingreso,sueldo) Values ( _
& & txtcodigo & ' ,
_
& & txtnombre & ' , _
& & txtfechaingreso & ' , _
& txtsueldo & )
Con.execute(MstrSql)
Consideremos algunos aspectos de la instruccin para grabar datos:
a. Elementos para cada variable o casilla si no es el ltimo dato a grabar
a.1 Si es una casilla Alfanumrica (text) o fecha
& & casilla & , _
No va espacio entre la Doble comilla y el apstrofe (comilla sencilla)
o la coma
Antes del guin de continuacin va un espacio
Antes y despus del signo aspersan (&) va un espacio
Corra su aplicacin y grabe un Nuevo empleado de cdigo = 032; los dems datos
invnteselos con el cuidado de introducir una fecha correcta.
Nos hace falta un detalle muy importante: despus de grabar, la pantalla debe quedar
limpia y el cursor en la casilla del cdigo del empleado; esto nos indica que al grabar el
registro hay que escribir las siguientes lneas:
DATOSINICIALES
TXTCODIGO=EMPTY
TXTCODIGO.SetFocus
Pero estas lneas se encuentran en la rutina del Botn cancelar:
Private Sub Cancelar_Click()
DATOSINICIALES
txtcodigo = Empty
txtcodigo.SetFocus
End Sub
Por lo tanto, para no repetir estas instrucciones podemos llamar la rutina: Cancelar_click
Entre de nuevo al Botn Salvar y al final (antes de End Sub) escriba lo siguiente:
Cancelar_click
Corra su aplicacin y grabe un Nuevo empleado de cdigo = 033; los dems datos
invnteselos con el cuidado de introducir una fecha correcta.
5. Instruccin Con.Committrans
Esta es una instruccin que le indica al Visual Basic que debe ejecutar la instruccin
tambin en el proceso de trasladar las transacciones a la copia de espaldo automtica
que hace una base de datos robusta como Oracle, SQL Server y cualquier otra; en
Access no existe esa copia de respaldo, as que la instruccin Con.Committrans no tiene
ningn efecto.
Tipo
Text
Fecha
Numrico
Text
10-20
20/01/2003
4700
02
Captulo 11
Datos numricos, programacin de teclas
Y validacin de datos
I.
Objetivo General
Conocer el concepto de Datos numricos, programacin de teclas; Edicin y
Modificacin de datos
II.
Objetivos especficos
Programar casillas numricas; evento Keyprees para saltar a otra casilla con la
tecla enter; validacin de datos de tipo texto, numricos y fechas
III.
Contenido
1. Casillas numricas
2. Salto de una casilla a otra con la tecla enter
3. Validaciones
4. Datos numricos no pueden grabarse en blanco (empty)
5. Datos numricos no pueden grabarse con comas (,)
6. Validar la repeticin del registro a grabarse
Corra su aplicacin y ver que la casilla del Sueldo ya no permite letras y otros caracteres
que no son numricos.
Explicaremos detalladamente la rutina en un captulo mas adelante que trata sobre
funciones y teclas de funcin, pero daremos algunos detalles a continuacin:
La idea de esta rutina es inhabilitar el teclado cuando se ha presionado determinada tecla;
si se presiona cualquier letra o carcter especial, que se inhabilite el teclado; no as si se
presiona algunas teclas como enter, F1 F10, Backspace,Delete, etc.pues estas podran
ejecutar una rutina:
If KeyAscii >= 32 Then
Solo las teclas cuyo carcter ascii sea mayor o igual a 32 entrarn al proceso de inhabilitacin de
teclado (barra espaciadora = 32), antes del 32 tenemos por ejemplo backspace = 8, enter = 13,
shift = 16, etc.; estas teclas no las queremos inhabilitar
If Not IsNumeric(Chr(KeyAscii)) Then
De las teclas cuyo cdigo ascii son mayores de 32, entrarn al proceso de inhabilitacin de
teclado las que no son numricas (0 9)
If Chr(KeyAscii) <> "." Then
Como le hemos dicho, mas adelante se explicar mas detalladamente esta rutina; por ahora usted
debe saber que debe escribirse en el evento Keypress de cualquier casilla numrica, y lo nico
que debe cambiar es el nombre de la casilla.
if Keyascii=13 Then
La tecla enter es el caracter ascii 13; esta tecla no est inhabilitada en los
casos cuando se trata de una casilla numrica; si estando en la casilla
TXTCODIGO se ha presionado la tecla enter, entonces enviamos el cursor a la
casilla TXTNOMBRE.
TXTNOMBRE.Set.focus
End If
Despus de hacer la programacin anterior en su aplicacin crrala y notar el cambio.
Si queremos que al estar en la casilla TXTNOMBRE al presionar la tecla enter, salte a la
casilla TXTDIRECCION hacemos lo siguiente:
a. Ubquese en la casilla TXTNOMBRE y entre al evento Keypress
b. Agregue la siguiente programacin
if Keyascii=13 Then
TXTDIRECCION.Set.focus
End If
En nuestro curso trabajaremos con el entendido que el salto de una casilla a otra se haga
con la tecla enter (siempre queda habilitado que se salte con la tecla Tab tomando como
base la propiedad Tabindex)
Ejercicio:
Vbcritical genera el crculo rojo con la equis blanca, que es el convencional de Windows cuando
se ha producido un error; otros signos de expresin seran los siguientes:
Vbexclamation
Vbinformation
Vbquestion
Existen otros que usted puede investigar mas adelante. Al hacer las validaciones
comprenderemos mejor el uso de la funcin Msgbox. Programaremos las siguientes
validaciones:
a. El nombre no debe ir en blanco
If Txtnombre=Empty Then
Msgbox Nombre del Empleado no debe ir en blanco, vbcritical, ERROR
Txtnombre.setfocus
Exit Sub
End If
Escriba esta validacin va al inicio del evento clic del botn SALVAR; corra su aplicacin y
presione el botn Salvar sin escribir el nombre del empleado
Txtnombre.setfocus
Escriba esta validacin al inicio del evento clic del botn SALVAR antes de la validacin del
nombre; corra su aplicacin y presione el botn Salvar escribiendo un sueldo como 1300.
Explicaremos las instrucciones adicionales en este caso de una validacin de una casilla
numrica.
Txtsueldo= format(txtsueldo, ######.00)
Esta lnea es muy importante cuando se trata de una casilla numrica; format es una
funcin que establece un formato (el que est entre comillas); este formato (#####.00)
lo que hace es quitarle comas (,) si la casilla viniera con comas (mas adelante veremos
que as ser), la evaluacin de la funcin Val (convertir a numrico) no es exacta; para el
caso si TXTSUELDO tiene el valor 1,500.00, la funcin Val lo convierte en uno (1), pues
evala hasta donde encuentra un carcter extrao.
If val(txtsueldo)<1500 then
Se usa val para convertir a numrico, ya que todo textbox es de tipo texto.
c. El nombre del departamento no debe ir en blanco o debe existir en la tabla
departamentos
If txtnomdepartamento=empty or txtnomdepartamento=NO EXISTE then
MsgboxDepartamento incorrecto, vbcritial, error
Txtdepartamento.setfocus
Exit sub
End If
Esta validacin es de mucha importancia y no debe ser dejada sin comentar en forma especial; de
no hacerla se corre el riesgo de tener registros de empleados sin departamento donde trabaja, o
un departamento que no existe.
Escriba esta validacin al inicio del evento clic del botn SALVAR antes de la validacin del
sueldo; corra su aplicacin y presione el botn Salvar escribiendo un departamento incorrecto
(10).
Ahora pruebe grabar un registro sin departamento
Escriba esta validacin al inicio del evento clic del botn SALVAR antes de la validacin del
Departamento; corra su aplicacin y presione el botn Salvar escribiendo una sucursal incorrecta
(10).
Ahora pruebe grabar un registro sin sucursal
Termina la validacin
Lo anterior significa que lo que se grabar en la tabla ya no ser TXTFECHAINGRESO, sino
TXTFECHAINGRESO2, lo provocara el siguiente cambio en la rutina de grabacin del registro:
MstrSql = "Insert into empleados(codigo,nombre,direccion,fechaingreso," _
& "sueldo,telefono,estadocivil,sexo,departamento,sucursal," _
& "sindicato) Values (" _
& " ' " & txtcodigo & " '," _
& " ' " & TXTNOMBRE & " '," _
& " ' " & TXTDIRECCION & " '," _
& TXTFECHAINGRESO2 & " ," _
& TXTSUELDO & "," _
& " ' " & TXTTELEFONO & " '," _
Haga usted este cambio a su programa, pues esta rutina fue hecha en el captulo anterior:
Case False
MsgBox "Este cdigo acaba de ser ingr. por otro usuario", vbCritical, "ERROR"
TXTNOMBRE.SetFocus
Exit Sub
End Select
Sustituya la rutina de grabacin por esta nueva rutina y trate de grabar un empleado que
ya existe (Cdigo=001)
Tabla: Articulos
Tabla Clientes
Captulo 12
Edicin de datos, Eliminacin y Modificacin
I.
Objetivo General
Manipulacin de los datos
II.
Objetivos especficos
Programar los programas para editar datos, eliminar registros de las tablas y
modificar su informacin
III.
Contenido
1. Edicin de datos
2. Eliminacin de registro
3. Modificacin de registro
1. Edicin de datos
Editar datos es la accin de ir a la tabla a buscar un registro y mostrarlo por pantalla; el
concepto que manejaremos ser el siguiente:
a. Introducimos el cdigo del empleado
b. Si el cdigo del empleado existe en la tabla, el resto de sus datos se deben
mostrar por pantalla.
c. Si el cdigo del empleado no existe en la tabla, nos debe dejar lista la pantalla (limpia)
para agregar el empleado.
Usaremos una forma dinmica de trabajar, por lo tanto trabajaremos en el evento change
del cdigo del empleado. Antiguamente se proceda a pedir por pantalla el cdigo del
registro a buscar; si se encontraba mostraba los datos; si el registro no se encontraba se
enviaba por pantalla un mensaje de que no se encontraba el registro buscado; pero esto
ya no se estila.
A partir de este momento manejaremos el concepto siguiente: Solo uno de los botones,
SALVAR o MODIFICAR debe estar habilitado (Enabled = true) ya que no es posible hacer
las dos actividades al mismo tiempo; de entrada el botn SALVAR debe estar habilitado y
el botn Modificar debe estar Inhabilitad (Enabled = False)
Entre al evento Change del cdigo del empleado (TXTCODIGO) y escriba la siguiente
rutina (R010):
Dim ZZ As rdoResultset
Set ZZ = Con.OpenResultset("Select * from Empleados where codigo=' " & txtcodigo & " ' ", rdOpenDynamic)
Corra su programa y luego trabajemos explicando la rutina; llame el empleado con cdigo
001
La mayora de los elementos individuales de esta rutina ya se han considerado en este
texto:
Dim ZZ As rdoResultset
Set ZZ = Con.OpenResultset("Select * from Empleados where codigo=' " & txtcodigo & " ' ", rdOpenDynamic)
Codigo
Codigo
Codcli
Factura
TXTCODIGO
TXTCODIGO
TXTCODCLI
TXTFACTURA
Tomando en cuenta estos tres puntos anteriores, cual sera la asignacin a la variable ZZ
en el caso de la aplicacin de clientes:
Respuesta:
Set ZZ = Con.OpenResultset("Select * from clientes where codcli=' " & txtcodcli & " ' ", rdOpenDynamic)
A la hora de hacer los ejercicios de este captulo debe considerar estos aspectos
anteriores
Select Case ZZ.EOF
Si el registro no fue encontrado entonces ZZ estar vaco, y por lo tanto estamos en el fin
de archivo.
Salvar.Enabled = True
Modificar.Enabled = False
Eliminar.Enabled = False
DATOSINICIALES
Si el registro fue encontrado entonces ZZ no estar vaco, y por lo tanto es falso que
estamos en el fin de archivo.
Salvar.Enabled = False
Modificar.Enabled = True
Eliminar.Enabled = True
DATOSINICIALES
TXTNOMBRE.SetFocus
En este momento los datos del empleado estn disponibles, as que procedemos a hacer
la asignacin de los datos de la tabla a las casillas del formulario; en este caso solo
hemos hecho la asignacin del nombre del empleado.
Despus el programa pasa a ejecutar lo que est despus de la instruccin: End Select,
lo cual es fin de la rutina.
End Select
Ahora solo resta completar la edicin de datos; para poder completar la edicin de datos
debemos estar bien seguros de los nombres de los campos en la tabla de datos, as como
los nombres de las casillas en el formulario; es en este momento que cabe recordar que
en captulos anteriores, se recomend que en los nombres de las casillas en el formulario,
tuviesen el mismo nombre que el de la tabla de datos con el agregado TXT
anteponindolo al nombre, para facilitar la tarea de la edicin del dato; echemos una
mirada a la estructura de la tabla:
Conteste No.
Corra su aplicacin y llame de nuevo el empleado 9999-99; al ver la informacin en
pantalla presione de nuevo el botn Eliminar; cuando le aparezca la pregunta si desea
Eliminar el registro conteste afirmativamente.
Al tratar de llamar de nuevo el empleado de cdigo 9999-99 notar que ya no aparece,
pues el registro ha sido eliminado.
Ahora explicaremos las instrucciones de Eliminacin de registro:
If Msgbox(Seguro que quiere Eliminar, vbQuestion + vbYesNo)= vbYes Then
Msgbox como hemos visto es para enviar un mensaje a pantalla por medio de un cuadro de
dilogo; en este cuadro de dilogo o pequea pantalla debe aparecer el signo de interrogacin
(Vbquestion) y los botones Yes y No (VbyesNo); pero aqu tenemos una nueva modalidad, y es
evaluar de un solo la posible respuesta, y en nuestro caso lo que queremos es evaluar si la
respuesta es Yes.
Con.Execute(Delete from EMPLEADOS where CODIGO= & TXTCODIGO & )
Con.Committrans
Elimina de la tabla Empleados el empleado cuyo campo Codigo sea igual al dato que se
introdujo en la casilla TTXTCODIGO. De un solo lo elimina de los datos de respaldo en
caso de que estemos trabajando con una base de datos que maneje copias de respaldo
(Oracle, SQL Server, etc.)
Debe tenerse el cuidado de saber qu cambiar cuando se trata de otra tabla; para el caso,
si la rutina se aplicara a la tabla clientes, la instruccin de eliminacin sera la siguiente:
Con.Execute(Delete from Clientes where CODcli= & TXTCODcli & )
End If
Fin de rutina
CANCELAR_Click
Despus de eliminar queremos que la pantalla quede en blanco, y que el codigo del
empleado quede limpio con el cursor posicionado en l; las instrucciones que hacen estas
tareas estn en el botn Cancelar.
3. Modificacin de registro
En una aplicacin seria debe existir la posibilidad de modificar datos que han sido
grabados. La rutina de modificacin la haremos en el botn Modificar.
En este botn programamos la rutina para salvar los datos del registro que vemos en
pantalla; antes debemos decir que las mismas validaciones que estn en el botn Salvar ,
deben estar en el botn Modificar, as como las instrucciones para trasformar datos
numricos de blanco a cero, y las instrucciones para cambiar el formato de los datos
numricos; as que copiaremos estas instrucciones del botn Salvar al botn modificar.
Antes de conocer la instruccin para modificar un registro queremos hablar un poco sobre
la instruccin Update de Sql.
La instruccin Update de SQL modifica un registro o conjunto de registros; su formato es
el siguiente:
Update Tabla set campo1=dato1,campo2=dato2
Pero si lo que queremos es modificar el sindicato solo del empleado de cdigo 006, lo
hacemos de la siguiente manera:
Update Empleados set sindicato =N where codigo=006
Probemos con una modificacin a mas de un campo de la tabla; modificar el nombre por
el nombre Juan Garca, el sueldo por 8600, la fecha de ingreso por 01/10/2003 y el
departamento por 02 siempre del empleado de cdigo 006; la instruccin la haremos en
varias lneas para una mayor comprensin:
Update Empleados set nombre=Juan Garca,
Sueldo = 8600,
Fechaingreso=01/10/2003,
Departamento=02
where codigo=006
Si tuvisemos que hacer la modificacin usando las casillas del formulario como
parmetros , metiendo toda la instruccin Update en una variable (MstrSql) lo haramos
de la siguiente manera:
MstrSql=Update Empleados set nombre= & TXTNOMBRE & , _
& Sueldo = & TXTSUELDO & ,
_
& Fechaingreso= & TXTFECHAINGRESO & , _
& Departamento= & TXTDEPARTAMENTO & _
& where codigo= & TXTCODIGO &
Debe recordar el punto que hemos visto en captulos anteriores, y es que entre el
apstrofe (comillas simples) y las comillas dobles no va espacio, y que antes y despus
del smbolo Aspersan (&) debe ir espacio.
Corra su aplicacin y modifique los datos de varios empleados.
Un detalle mas para este captulo; en los tres botones de Salvar,Modificar y Eliminar
agregaremos unas instrucciones que controlen lo siguiente: solo se pueda entrar a estas
rutinas si se ha introducido un cdigo de empleado; entre a estos botones y agregue las
siguientes instrucciones:
IF TXTCODIGO=EMPTY THEN
EXIT SUB
END IF
Captulo 13
Navegacin en una Tabla de datos
I.
Objetivo General
Conocer el concepto de navegacin
II.
Objetivos especficos
Programar en los formularios los botones Ir a primer registro, Siguiente, ltimo
registro y anterior
III.
Contenido
1. Navegacin
2. Primer Registro
3. Ultimo registro
4. Siguiente Registro
5. Registro Anterior
1. Navegacin
Se le llama navegacin dentro de una tabla a la actividad de poder ir hacia el registro
adelante, al registro anterior, al inicio o al final.
Este mecanismo le permite al usuario poder examinar los datos de una manera dinmica,
pues pude ver la informacin de un empleado sin tener que estar introduciendo cada vez
el cdigo del empleado.
Para poder trabajar con estos conceptos le pedimos que cree cuatro botones a los cuales
llamar de la siguiente manera:
Inicio
Siguiente
Anterior
Ultimo
A cada uno de estos botones debe pegarle una imagen con el mismo nombre; estas
imgenes las puede encontrar en la carpeta c:\winsystem\imagenes
Estos botones deben estar dispuestos en la parte inferior de su Tabbed Dialog (tabla) de
la siguiente forma:
2. Primer Registro
Programaremos que al presionar el botn inicio le aparezca por pantalla el primer registro
de la tabla (primer cdigo segn sea el orden). Entre a este botn al evento clic y escriba
la siguiente rutina: (R012)
Dim ZZ As rdoResultset
Set ZZ = Con.OpenResultset("SELECT * FROM EMPLEADOS ORDER BY CODIGO", rdOpenDynamic)
ZZ.MoveFirst
If ZZ.EOF Then
Else
txtcodigo = ZZ!CODIGO
End If
Preguntamos si hay registros ledos , es decir si ZZ esta vaca (ZZ.EOF); si est vaco no
habra registro qu presentar
Else
txtcodigo = ZZ!CODIGO
Si hay informacin el programa entrar a esta parte, exactamente al primer registro, por
tanto hacemos la asignacin del dato codigo a la casilla TXTCODIGO, que a la vez
llamar el resto de datos por la programacin que hicimos en su evento Change.
End If
2. Ultimo Registro
Programaremos que al presionar el botn ultimo le aparezca por pantalla el ltimo registro
de la tabla (ltimo cdigo segn sea el orden). Entre a este botn al evento clic y escriba
la siguiente rutina: (R013)
Dim ZZ As rdoResultset
Set ZZ = Con.OpenResultset("SELECT * FROM EMPLEADOS ORDER BY CODIGO", rdOpenDynamic)
ZZ.Movelast
If ZZ.EOF Then
Else
txtcodigo = ZZ!CODIGO
End If
Preguntamos si hay registros ledos , es decir si ZZ esta vaca (ZZ.EOF); si est vaco no
habra registro qu presentar
Else
txtcodigo = ZZ!CODIGO
Si hay informacin el programa entrar a esta parte, exactamente al ltimo registro, por
tanto hacemos la asignacin del dato codigo a la casilla TXTCODIGO, que a la vez
llamar el resto de datos por la programacin que hicimos en su evento Change.
End If
3. Registro anterior
Corra su programa y ubquese en el ltimo registro, y a partir del ltimo registro presione
el botn anterior
Explicaremos la rutina:
Dim ZZ As rdoResultset
Preguntamos si hay registros ledos , es decir si ZZ esta vaca (ZZ.EOF); si est vaco no
habra registro qu presentar
Else
txtcodigo = ZZ!CODIGO
Si hay informacin el programa entrar a esta parte, exactamente al ltimo registro, por
tanto hacemos la asignacin del dato codigo a la casilla TXTCODIGO, que a la vez
llamar el resto de datos por la programacin que hicimos en su evento Change.
End If
4. Registro Siguiente
Corra su programa y ubquese en el primer registro, y a partir del primer registro presione
el botn siguiente
Explicaremos la rutina:
Dim ZZ As rdoResultset
ZZ.Movefirst
Preguntamos si hay registros ledos , es decir si ZZ esta vaca (ZZ.EOF); si est vaco no
habra registro qu presentar
Else
txtcodigo = ZZ!CODIGO
Si hay informacin el programa entrar a esta parte, exactamente al primer registro, por
tanto hacemos la asignacin del dato codigo a la casilla TXTCODIGO, que a la vez
llamar el resto de datos por la programacin que hicimos en su evento Change.
End If
Captulo 14
Presentacin de Datos por Columnas
I.
Objetivo General
Conocer el concepto de Consulta Global de Datos
II.
Objetivos especficos
Conocer el control VsFlexGrid y Remote Data Control, y la Interface entre SQL
y Visual Basic
III.
Contenido
1. Consulta de datos
2. Control VsFlexGrid
3. Control Remote Data Control
4. Conexin entre el VsFlexGrid y el Remote Data Control
5. Seleccionando un registro de la Pantalla de Datos en columnas
6. Ttulos y Anchuras de columnas
1. Consulta de datos
En este captulo manejaremos por primera vez el concepto de presentacin de datos en
forma de columnas; una de las ventajas que tienen programas como Excel es que nos
permite ver la informacin total en diferentes columnas, y de esa manera tener una visin
de varios registros a la vez.
En Visual Basic podemos tener una presentacin de los datos en una pantalla donde
podamos ver tambin un conjunto de registros, y a la vez poder seleccionar entre ellos
uno, al cual podamos dar un tratamiento individual.
2. Control VsFlexGrid
Para poder hacer una presentacin de los datos en columnas necesitamos de dos nuevos
componentes: VsFlexGrid y Remote Data Control; estos componentes no estn
disponibles en la seccin de controles de Visual Basic, as que tendr que integrarlos a la
seccin de controles; pero antes debe entender que la presentacin de datos en
columnas la haremos en la gua o tabulador de su tabbed dialog (tabla) denominada:
Consulta.
Agregue el control VideoSoft Vsflex 6.0 Control (DAO); no lo busque por orden
alfabtico, lo encontrar al inicio de la lista de componente del cuadro de componentes;
este control le generar varias figuras, pero el que usaremos ser el siguiente:
Pegue un VsFlexGrig en el tabbed dialog de tal manera que cubra todo el espacio de la
gua o tabulador Consulta; debe quedarle as:
Pegue un Remote Data Control (MSRDC) en el tabbed dialog de tal manera que quede
por debajo del VsFlexGrid; debe quedarle de la siguiente manera:
Note que le aparece el nombre del MSRDC que hemos hecho en pantalla (Datos); debe
seleccionarlo
c. Vaya a la propiedad Datamode y abra el combo que le aparece:
TXTCODIGO=Vs.Text
Asignamos a la casilla TXTCODIGO, el texto de la columna cero (0) que es el cdigo del
empleado
Tabla.Tab=0
Nos ubicamos en la gua o tabulador Cero del tabbed dialog, que es donde est la parte
de los datos generales; recuerde que nuestro tabbed dialog tiene dos guas o tabuladores:
Tab=0 Datos Generales
Tab=1 Consulta
Aqu cabe solucionar un problema que se ha dado al trabajar la parte de Consulta del
tabbed dialog, y es el hecho de que si al correr su aplicacin usted en la pantalla est en
la parte del tabbed dialog de Consulta, le aparece de entrada la pantalla de Consulta, y la
que siempre debe salir es la parte de: Datos Generales; esto lo solucionamos agregando
a la rutina: DATOSINICIALES la instruccin:
Tabla.Tab = 0
Haga este ltimo cambio y corra su aplicacin:
6. Ttulos y Anchuras de columnas
En este inciso trabajaremos en la definicin de ttulos y anchura de las columnas de la
consulta; de entrada usted puede notar que los ttulos de las columnas en la consulta son
los nombres de los campos de la tabla de datos, y que la anchura no corresponde al dato
que aparece, para el caso, la anchura de la direccin es muy pequea.
Para definir ttulos y columnas lo haremos en el evento clic del tabbed dialog; haga doble
clic sobre cualquiera de las guas del tabbed dialog (Datos personales o Consulta); le
aparecer el evento Dobleclic:
Private Sub tabla_DblClick()
End Sub
Abra el evento Clic y escriba la siguiente rutina:(R016)
Select Case tabla.Tab
Case 1
Datos.Refresh
With Vs
.Row = 0
.Col = 0
.Text = "Cdigo"
.Col = 1
.Text = "Nombre del Empleado"
.Col = 2
.Text = "Direccion"
.Col = 3
.Text = "Fecha"
.Col = 4
.Text = "Sueldo"
.Col = 5
.Text = "Telefono"
.Col = 6
.Text = "Est.Civil"
.Col = 7
.Text = "Sexo"
.Col = 8
.Text = "Depto."
.Col = 9
.Text = "Sucursal"
.Col = 10
.Text = "Sindicato"
.ColWidth(0) = 800
.ColWidth(1) = 2300
.ColWidth(2) = 4200
.ColWidth(3) = 1000
.ColWidth(4) = 1200
.ColWidth(5) = 800
.ColWidth(6) = 800
.ColWidth(7) = 800
.ColWidth(8) = 800
.ColWidth(9) = 800
.ColWidth(10) = 800
End With
Vs.SetFocus
End Select
Escriba esta rutina en el lugar que se le ha indicado y corra su aplicacin:
Explicaremos esta rutina:
Select Case tabla.Tab
Case 1
Esta rutina solo se ejecutar cuando se haga clic en la gua No. 1 del tabded dialog
(Consulta)
Datos.Refresh
Esta instruccin actualiza cualquier cambio que se haya hecho a la tabla de datos; esto es
muy importante, pues si no usamos esta instruccin se dar el siguiente fenmeno: si
usted agrega un nuevo registro, no lo ver en la consulta a menos que vuelva a correr su
aplicacin.
With Vs
End With
Esto indica que todo lo se haga entre la instruccin With Vs y la instruccin End With
debe agregarse el nombre Vs; para el caso note las siguientes instrucciones:
.Row = 0
.Col = 0
.Text = "Cdigo"
Estas tres instrucciones deberan escribirse de la siguiente manera:
Vs.Row = 0
Vs.Col = 0
Vs.Text = "Cdigo"
Esta forma anterior se abrevia utilizando With Vs y End With
.Row = 0
Ubica el cursor en la Fila 0
.Col = 0
.Text = "Cdigo"
Ubica el cursor en la columna 0 y escribe como texto el rtulo: Cdigo
.Col = 1
.Text = "Nombre del Empleado"
Ubica el cursor en la columna 1 y escribe como texto el rtulo: Nombre del Empleado.
Nota: se est trabajando siempre en la Fila 0
Los otros rtulos siguen la misma explicacin.
.ColWidth(0) = 800
.ColWidth(1) = 2300
Captulo 15
Pantallas de ayuda para enlace con Tablas
1.
Objetivo General
Conocer el concepto de Formularios de ayuda
II.
Objetivos especficos
Crear un sistema de que permita llamar una lista de elementos de donde se
pueda seleccionar un determinado registro no conociendo su cdigo
III.
Contenido
1. Creando formulario de ayuda
Vs
0
Data
1 flexDMbound
With Vs
.Row = 0
.Col = 0
.Text = "Cdigo"
.Col = 1
.Text = "Descripcin"
.ColWidth(0) = 1000
.ColWidth(1) = 8000
End With
j. Ahora vaya al formularario Frmemple
k. Si la anchura de su textbox es pequea, ampliar un poco mas, as:
Nota: para que el botn quede bien incrustado dentro de la casilla auxliese de las
propiedades Heigth, Top , Width y Left
m. Entre al evento clic del botn Boton1 y escriba lo siguiente: (R1402)
ListaSql=Select codigo,nombre from departamentos
Cadena=Nombre
Tituloform=Lista de Departamentos
Mstexto=empty
Mstexto2=empty
Frmlis.Show 1
If Mstexto=empty then
Else
Txtdepartamento=Mstexto
Txtnomdepartamento=Mstexto2
End if
n. Cree a nivel de mdulo las siguientes variables de tipo String: cadena,
Tituloform
Public Cadena as String
Public Tituloform as String
Estamos listos para probar nuestra aplicacin; el formulario que debe correr es Frmemple.
Pregunta:
Qu tenemos que hacer para que funcione para sucursal
Nota: para que el botn quede bien incrustado dentro de la casilla auxliese de las
propiedades Heigth, Top , Width y Left
b. Entre al evento clic del botn Boton2 y escriba lo siguiente:
ListaSql=Select codsuc,nomsuc from sucursales
Cadena=Nomsuc
Tituloform=Lista de Sucursales
Mstexto=empty
Mstexto2=empty
Frmlis.Show 1
If Mstexto=empty then
Else
Txtsucursal=Mstexto
Txtnomsucursal=Mstexto2
End if
Captulo 16
Manejo de Fotografa
I.
Objetivo General
Conocer el concepto de Manejo de imgenes
II.
Objetivos especficos
Crear un sistema de que permita llamar buscar un imagen y grabarla en el
registro de un empleado; control PictureBox
III.
Contenido
1. Agregar un campo (textbox) a la captura de datos
2. Sistema buscador de fotografa
La casilla TXTFOTOGRAFIA debe tener una longitud mxima de 250; ahora vaya a la base de
datos y en la tabla Empleados agregue un campo llamado Fotografia,
tipo text y una longitud 250; recuerde que en access debe indicar que permita longitud cero (0).
Ahora debe incluir este nuevo textbox en la programacin de los siguientes lugares:
a. Rutina Datosiniciales
TXTFOFOGRAFIA=EMPTY
b. Botn Salvar (lo que est en negrita es lo que debe agregar a la instruccin Insert)
MSTRSQL = "Insert into empleados(fotografia,codigo,nombre,direccion,fechaingreso," _
& "sueldo,telefono,estadocivil,sexo,departamento,sucursal," _
& "sindicato) Values (" _
& "'" & TXTFOTOGRAFIA & "'," _
& "'" & txtcodigo & "'," _
c. Botn modificar (lo que est en negrita es lo que debe agregar a la instruccin Update)
MSTRSQL = "Update Empleados set nombre='" & TXTNOMBRE & " '," _
& "fotografia='" & TXTFOTOGRAFIA & "'," _
& "Direccion='" & TXTDIRECCION & "'," _
C. Evento Change del textbox TXTCODIGO (lo que est en negrita es lo que debe
agregar )
If Not IsNull(ZZ!sindicato) Then
TXTSINDICATO = ZZ!sindicato
End If
If Not IsNull(ZZ!FOTOGRAFIA) Then
TXTFOTOGRAFIA = ZZ!FOTOGRAFIA
End If
End Select
Lo que sigue es preparar un sistema que nos permita ver las fotografas de los empleados en una
lista y a la vez poder seleccionar una fotografa de esta lista:
b. Pegue un DriverListbox (
)y llamarlo: CONTROL1
) y llamarlo
) y llamarlo:
CONTROL2.path = CONTROL1.Drive
i. Entre al evento Change de CONTROL2 y escriba:
CONTROL3.path = CONTROL2.path
j. Entre al evento clic de CONTROL3 y escriba lo siguiente:
If Mid$(Control3.Path, Len(Control3.Path), 1)=\ Then
RUTA=CONTROL3.Path + CONTROL3.FileName
Else
RUTA=CONTROL3.Path + \ +CONTROL3.FileName
End If
CUADRO.Picture = LoadPicture(RUTA)
MSFILE=Empty
Frmlisd.Show 1
TXTFOTOGRAFIA = MSFILE
Dim FOTO As String
FOTO = TXTFOTOGRAFIA
MX = Dir(FOTO)
If MX <> Then
CUADRO.Picture = LoadPicture(FOTO)
Else
CUADRO.Picture = LoadPicture()
End if
Nos hace falta un ltimo detalle muy importante; entre al evento Change de TXTCODIGO
ubquese en la parte que donde est el siguiente bloque:
If Not IsNull(ZZ!FOTOGRAFIA) Then
TXTFOTOGRAFIA = ZZ!FOTOGRAFIA
End If
Sustituya este bloque por el siguiente:
Captulo 17
Mejorando la consulta
I.
Objetivo General
Crear un ambiente de consulta mas dinmico
II.
Objetivos especficos
Poder buscar dentro de la tabla cualquier dato en cualquier campo;
ordenamiento de los datos e interface entre Visual Basic y SQL
III.
Contenido
1. Busca de datos en la consulta
2. Ordenar datos
3. Interface entre Visual Basic y SQL
Ahora haga una rutina llamada Cargarconsulta y que tenga las siguientes instrucciones:
(R1701)
With Vs
.Row = 0
.Col = 0
.Text = "Cdigo"
.Col = 1
.Text = "Nombre del Empleado"
.Col = 2
.Text = "Direccion"
.Col = 3
.Text = "Fecha"
.Col = 4
.Text = "Sueldo"
.Col = 5
.Text = "Telefono"
.Col = 6
.Text = "Est.Civil"
.Col = 7
.Text = "Sexo"
.Col = 8
.Text = "Depto."
.Col = 9
.Text = "Sucursal"
.Col = 10
.Text = "Sindicato"
.ColWidth(0) = 800
.ColWidth(1) = 2300
.ColWidth(2) = 4200
.ColWidth(3) = 1000
.ColWidth(4) = 1200
.ColWidth(5) = 800
.ColWidth(6) = 800
.ColWidth(7) = 800
.ColWidth(8) = 800
.ColWidth(9) = 800
.ColWidth(10) = 800
End With
Vs.SetFocus
Ahora pegue por debajo de su Vsflexgrid un combobox al que llamaremos ComboList;
este combo debe tener las propiedades de siempre y en la lista de elementos debe tener
todos los campos de la tabla Empleados (el primer elemento de la lista que sea el campo
nombre):
Entre al evento clic del tabbed dialog (tabla) y agregue la siguiente instruccin:
ComboLIst.ListIndex = 0 (inmediatamente despus de la instruccin: Datos.refresh
Ahora corra su aplicacin y haga las pruebas de consulta variando los campos donde se
desea consultar.
2. Ordenar datos
Ahora haremos una rutina que nos permita poder ordenar los dataos de consulta por
cualquier campo de la tabla. Pegue por debajo de su Vsflexgrid un combobox al que
llamaremos ComboOrdenar; este combo debe tener las propiedades de siempre y en la
lista de elementos debe tener todos los campos de la tabla Empleados (el primer
elemento de la lista que sea el campo Codigo):
Debe verse de la siguiente manera:
Datos.SQL = SQL
Datos.Refresh
Cargarconsulta
End If
Ahora entre al evento clic del combobox ComboOrdenar y escriba lo siguiente:
Ordenar = ComboOrdenar.Text
ListaSql = "Select * from empleados order by " & Ordenar
Datos.SQL = ListaSql
Datos.Refresh
Cargarconsulta
Entre al evento clic del tabbed dialog (tabla) y agregue la siguiente instruccin:
Comboordenar.ListIndex = 0 (inmediatamente despus de la instruccin:
Datos.refresh; corra su aplicacin y ordene la consulta por los capos que desee
3. Interface entre Visual Basic y SQL
Ahora le daremos a nuestra consulta una de las herramientas mas poderosas en toda
consulta, y es hacer una interface con Sql, es decir, que nos permita ejecutar
instrucciones de SQL desde Visual Basic; claro est que esta herramienta solo le servir
al usuario que conoce de SQL.
Cuando tenemos necesidad de hacer una consulta por medio del lenguaje SQL
usualmente entramos a la base de datos (Access, Oracle, Sql Server u otra) y desde all
ejecutamos las instrucciones; esto resulta a veces molesto pues se tiene que cambiar de
ambiente; lo mejor es poder hacer esta tarea desde el ambiente de Visual Basic.
Pegue por debajo del Tabbed dialog (Tabla) en la parte de consulta un textbox al cual
llamaremos: TextSQL; debe quedarle de la siguiente manera:
Este textbox debe tener programado que no se puedan introducir las camillas dobles,
pero si los apstrofes; entre al evento keypress y escriba lo siguiente:
If KeyAscii = 34 Then
KeyAscii = 0
End If
En este mismo evento agregue la siguiente programacin: (R1702)
If KeyAscii = 13 Then
If UCase(Mid(TextSql, 1, 6)) <> "SELECT" Then
MsgBox "Solo se aceptan sentencia SELECT; REVISE", vbCritical
Exit Sub
End If
On Error GoTo Errores
Datos.SQL = TextSql
Datos.Refresh
Exit Sub
Errores:
MsgBox "Existe un error en su sentencia SQL; REVISE", vbCritical
TextSql.SetFocus
End If
Para probar esta nueva rutina pruebe con las siguientes instrucciones de SQL:
a. Select codigo,nombre from empleados
Muestra la informacin del codigo y el nombre del empleado
b. Select count(codigo) from empleados
Muestra el No. registros en la tabla Empleados
c. select departamento,sum(sueldo) as Sueldos from empleados group by departamento
Muestra la sumatoria de salarios por departamento
Corra su aplicacin
Insistimos en que esta herramienta solo le servir al usuario que conoce de SQL.
Esta herramienta presenta un serio problema; despus de hacer cualquiera de las
consultas de Sql propuestas, regrese a la pantalla de Datos generales y vuelva a la
pantalla de Consulta; qu problema nota?
Entre al evento clic del Tabbed dialog (tabla) y antes de la instruccin: Datos.Refresh
escriba: Datos.Sql=Select * from Empleados
A continuacin explicaremos la rutina de interface de SQL:
If UCase(Mid(TextSql, 1, 6)) <> "SELECT" Then
Solo debemos permitir al usuario hacer consultas; el usuario no debe eliminar datos
(Delete), ni modificar datos (Update); note que todos estos commandos tienen 6 letras; la
funcin Mid nos ayuda a extraer un determinado string a partir de una determinada
posicin; en ente caso queremos saber si el usuario en las primeras 6 letras ha escrito
algo diferente a la palabra Select (SELECT)
Captulo 18
Programa Men
I.
Objetivo General
Crear un Men
II.
Objetivos especficos
Poder crear los diferentes mens de la aplicacin; barra de estado del men,
hora dinmica en el men; correr programas desde un men
III.
Contenido
1. Programa Men
2. Hora dinmica en un menu
3. Menu Editor
4. Comando Shell
1. Programa Men
Ahora haremos un programa men, el cual nos permitir integrar las diferentes opciones
de una aplicacin. Iniciaremos con el men de Recursos Humanos; necesitamos agregar
un nuevo formulario al que llamaremos: MENUREC
Por favor ampliar este formulario tanto a la derecha como hacia abajo hasta llegar al limite. Por
ahora el programa que queremos correr es Menupr, haga lo pertinente para que ste sea el
programa que se corra cuando presione Control + F5
3. Menu Editor
Para crear un men y sus diferentes opciones entraremos al menu editor de Visual Basic;
en cualquier punto del formulario presione el clic derecho; le aparecer una pantalla con
varias opciones:
Exell
Word
Salirse
Name
M12
M13
M14
Name
M21
M22
M31
M32
M41
M42
M43
M44
M45
M46
M47
M48
M49
Corra su programa
Queremos complicar un poquito mas nuestro men:
Debajo de la opcin Listado de Empleados debe aparecer las siguientes opciones.
Caption
Ordenado por Cdigo
Ordenado por Nombre
Por de Fecha de Ingreso
Name
M411
M412
M413
Debajo de la opcin Sueldos por Departamento debe aparecer las siguientes opciones.
Caption
Name
Detallado
Totalizado o agrupado
Grfica
Por Departamento especfico
M421
M422
M423
M424
Debajo de la opcin Sueldo por Sucursal debe aparecer las siguientes opciones
Caption
Name
Detallado
Totalizado o agrupado
Grfica
Por Sucursal especfica
M431
M432
M433
M434
El picture en un men
Se acostumbra que el men debe tener un picture o figura, usualmente es el logo de la
empresa.
Busque un control que se llama PictureBox y pguelo en el centro del formulario
MENUREC; cambie el nombre del Picturebox por: LOGO
Vaya a la propiedad Picture y asigne cualquier imagen que encuentre.
Amarrar un programa en un men
Finalmente queremos que desde el men podamos correr el programa FRMEMPLE.
Siga estos pasos:
a. Haga clic en la opcin de su men que dice: Movimiento
b. Haga clic en Datos de Empleados
c. Le aparecer lo siguiente:
Private sub M21_clic()
End sub
Escriba lo siguiente:
Frmemple.show 1
Corra su programa y desde el men entre al programa de Datos de Empleados
El uno (1) indica la modalidad de bloqueo a lo que queda atrs
4. Comando Shell
Con el comando Shell ejecutamos desde Visual Basic cualquier archivo con extensin
Exe o Com.
En nuestra pantalla de Menurec entre a la opcin Generales Word; le aparecer lo
siguiente:
Private Sub M12_Click()
End Sub
Escriba lo siguiente
File = "C:\Archivos de programa\Microsoft Office\Office\winword.exe"
MX = Dir(File)
Movimientos
Tablas
Reportes
Calculadora
Word
Excel
Salirse
Datos Artculos
Datos Clientes
Facturacin
Compras
Sucursales
Vendedores
Lista de Artculos
Ordenado por cdigo
Ordenado por nombre
Lista de Clientes
Ordenado por cdigo
Ordenado por nombre
Lista de Sucursales
Lista de Vendedores
Lista de Lneas
Lista de Unidades de medida
Lista de productos Costeados
Listados de Ventas
Listado General de Ventas
Ventas por Sucursal y rango de fecha
Detalladas
Agrupadas
Por Sucursal Especfica
Grfica
Ventas por Vendedor y rango de fecha
Detalladas
Agrupadas
Por Vendedor Especfico
Grfica
Ventas por Cliente y rango de fecha
Detalladas
Agrupadas
Por Cliente Especfico
Ventas por Tipo factura (Co-Cr), rango de fecha
Detalladas
Agrupadas
Por Tipo Especfico
Grfica
Listado de clientes por categora
Captulo 19
Cristal report Parte I
I.
Objetivo General
Crear reportes de una sola tabla
II.
Objetivos especficos
Conocer los conceptos bsicos de Cristal Report para generar reportes
sencillos
III.
Contenido
1. Qu es Cristal Report
2. Generando nuestro primer reporte
1. Qu es Cristal Report
Cristal Report es un generador de reportes de bases de datos; de los diferentes
generadores de reportes que existen en el mercado, Cristal Report es de los mejores. La
versin con la que trabajaremos en este libro es la versin 7.0. Cristal report le puede
generar reportes de cualquier base de datos como Access, Oracle, Sql Server, DB2 del
AS 400, etc.
2. Generando nuestro primer reporte
En este captulo trabajaremos generando reportes de una sola tabla; a la vez
conoceremos gran parte de las opciones de Cristal report.
Cmo entramos a Cristal Report
Siga los siguientes pasos:
a. \Inicio-Windows \ Programas \ Seagate Cristal Report \ 32-bit Cristal Repor Designer
b. Le aparecer una pantalla donde le pide registrarse; presione el botn que dice:
Register later
c. Le aparece una pantalla dndole la bienvenida; presione el botn Cancel
Usted debe seleccionar los campos que desea aparezcan en el reporte; haga clic sobre el
campo que desee seleccionar y presione el botn Add; repita el proceso para cada
campo que desee seleccionar.
h. Ahora presione en esta misma pantalla el botn Preview report (ver parte
inferior)
i. Finalmente llegamos a la pantalla de trabajo de Cristal report; usted ver el
reporte que se genera; haga clic en el tabulador Design
Page Footer
Todo lo que se disee en esta seccin saldr al pie de pgina de todas las pginas del
reporte
Seccin del diseo
Es la pantalla donde se disea propiamente
Barra de botones
Por debajo de las opciones del men tenemos la barra de botones de acceso rpido, la
cual es la siguiente:
Si desea corregir el texto haga doble clic sobre el texto; si desea seleccionar el texto haga
clic una vez; seleccione el texto que acaba de hacer
Botones para tratamiento de textos
Son una serie de botones y listas de opciones que permiten dar propiedades al texto al
igual que cualquier programa de manejo de texto como Word de Microsoft; estos botones
son los siguientes:
Dele al texto las siguientes propiedades: Letra Arial, tamao 14, negrita y subrayado; al
cambiar tamao posiblemente tendr que estirar los lmites de la casilla del texto; ahora
tenemos lo siguiente:
Correr un reporte
Para correr un reporte para ver cmo se ver al imprimirlo haga clic en el tabulador que
dice Preview (a la par de Design); usted tendr el siguiente resultado:
Guardar un reporte
Antes de dar el proceso para guardar un reporte le pedimos que cree el subdirectorio
Reportes, dentro del subdirectorio Winsystem.
Ya creado el subdirectorio Reportes siga estos pasos:
a. \menu-file \ Save as; le aparece un cuadro de dilogo para indicar el
subdirectorio donde desea guardar su reporte (ubquese en C:\winsystem\Reportes)
b. Indique el nombre del reporte: REPO-01 ; luego presione OK
A partir de este momento cada vez que desee guardar solo presione el botn que tiene la
figura de un diskette
Lneas y Box
Para insertar lneas que le permitan subrayar los subttulos por ejemplo active el Line
(lnea); \menu-insert \ line; si desea usar un box (caja) en lugar de una lnea entonces
active el box; \menu-insert \box
Save data with report
Esta es una opcin que debe ser desactivada; en la opcin men file desactive esta
opcin; indica que el reporte debe guardarse con los datos que se tenga en ese momento,
lo cual es contraproducente pues las tablas estn cambiando a cada momento.
Gua de trabajo Captulo No. 19
1.
2.
3.
4.
Captulo 20
Cristal report Parte II
I.
Objetivo General
Interface entre Cristal report y Visual Basic; crear reportes con mas de una tabla
II.
Objetivos especficos
Conocer los comandos de Visual Basic para correr un reporte de Cristal report;
subtotales en reportes; Condicionales
III.
Contenido
1. Cmo correr un reporte de Cristal Report desde Visual basic
2. Reportes con mas de una tabla
3. Variables y Clculos
4. Condicionales simples
5. Condicionales anidados
Pegue un cristal report control en cualquier punto del formulario; vaya a la propiedada
Name y cambie el nombre por: CRTREPORTE. Para correr un reporte de cristal report en
visual Basic se requieren de varias lneas de instrucciones. Entre a Visual Basic y
trabajemos con el formulario Menurec; haga clic en la opcin: Reportes Listado de
departamentos; le aparece lo siguiente:
Private Sub M46_Click()
End Sub
Escriba las siguientes instrucciones:(R2001)
CRTREPORTE.WindowState = crptMaximized
CRTREPORTE.Destination = crptToWindow
CRTREPORTE.ReportFileName = "C:\WINSYSTEM\REPORTES\REPO-01.RPT"
CRTREPORTE.DiscardSavedData = 1
CRTREPORTE.Action = 1
Corra su programa men y ejecute la opcin: Reportes Listado de Departamentos
Explicaremos las instrucciones anteriores
CRTREPORTE.WindowState = crptMaximized
Indica que el reporte se vea con la pantalla maximizada (toda la pnatalla)
CRTREPORTE.Destination = crptToWindow
Indica que el reporte debe ir a Pantalla, desde donde usted podr enviarlo a la impresora
CRTREPORTE.ReportFileName = "C:\WINSYSTEM\REPORTES\REPO-01.RPT"
A diferencia del reporte que se hizo en el captulo anterior, usted debe agregar tres tablas:
Empleados, Departamentos y Sucursales; haga clic en cada una de estas tablas y
presione el botn Add; cuando ya estn seleccionadas las tres tablas presione el botn
Done y le aparecer la siguiente pantalla:
Primero debe borrar cualquier relacin que le aparezca (haga clic sobre las lneas de
direccin negras y presione la tecla Delete). Para hacer la relacin de la tabla Empleados
a la tabla Departamentos haga clic en el campo departamento de la tabla Empleados y sin
soltar el botn del mouse arrastre el mouse hasta estar sobre el campo Codigo de la tabla
Departamentos. Para hacer la relacin de la tabla Empleados a la tabla Sucursales haga
clic en el campo Sucursal de la tabla Empleados y sin soltar el botn del mouse arrastre el
mouse hasta estar sobre el campo Codsuc de la tabla Sucursales; debe quedarle de la
siguiente manera:
Ahora Presione clic derecho y seleccione la opcin que dice: Insert Grand Total; le
aparece una pantalla donde por default le dice que sacar una sumatoria, pero usted
puede cambiar para sacar un promedio, valor mnimo o valor mximo; debe presionar el
botn Aceptar; obtendr lo siguiente:
Note que el total le aparece en la seccin Report Footer; con sus conocimientos hasta
este momento queremos que consiga lo siguiente en la seccin Report Footer:
Para ordenar el reporte por Codigo del empleado seleccione esta combinacin: \menu
report \ Sort Records ; le aparecer la siguiente pantalla:
Haga clic en el campo: Empleados.Codigo y luego presione el botn Add; en este caso
ordenaremos los datos por un solo campo, pero usted puede ordenar por mas de un
campo; tambin puede indicar si desea un ordenamiento Ascendente o Descendente;
finalmente debe presionar el botn OK.
Al correr su reporte notar los resultados; salve el reporte
Este mismo reporte usted puede salvarlo con otro nombre: \menu-file \ Save as; de hecho
slvelo con otro nombre: REPO-06.
Ya con otro nombre haga los siguientes dos cambios:
a. El subttulo debe decir: Listado de Empleados Ordenado por Nombre
b. Cambie el ordenamiento que est por codigo a ordenamiento por nombre
Haremos un parntesis para que entre a Visual Basic y enlace los reportes REPO-05
(Ordenado por codigo) y REPO-06 (ordenado por nombre) en el programa Menurec.
3. Variables y Clculos
Una de las necesidades mas grandes en los reportes es hacer clculos en la lnea de
detalle; se necesitan hacer clculos en los casos cuando no se dispone del dato en la
tabla. Para ilustrar este tema le pedimos que llame el reporte REPO-05. Aplique los
siguientes cambios:
a. Gurdelo con el nombre: REPO-07
b. Agregue un subttulo que diga: Sueldos anuales
c. Agregue un texto de columna que diga: Sueldo anual
Debe verse as:
Necesitamos hacer el siguiente clculo: Sueldo anual = sueldo * 12; crearemos una
variable llamada Sanual; para crear una variable siga los siguientes pasos:
a. \menu insert \ Formula fields ; le aparecer la siguiente pantalla:
Con el mouse arratre la variable hasta dejarla ubicada en la lnea de detalle a la par del
sueldo; tendr que borrar el nombre de la variable, que se le asigna como ttulo de la
columna, pues ya habamos puesto como ttulo de la columna el texto: Sueldo anual. De
la misma forma que definimos un total para el sueldo, obtenga el total del Sueldo Anual;
Amarre este reporte en el programa Menurec.
4. Condicionales simples
Otra de las necesidades en un reporte es poder construir condicionales que permitan
convertir cdigo en descripciones; para el caso, tenemos un listado de los empleados por
sexo; en la tabla lo que tenemos es F o M como sexo, pero nosotros queremos un reporte
con la descripcin del sexo; de la tabla de Empleados prepare el siguiente reporte:
Haremos una variable llamada NOMSEXO; haga lo necesario para crear esta variable
hasta llegar a la pantalla donde se escribe la frmula:
En el tercer cuadro de dilogo hacia la derecha (ver parte superior), haga clic en el signo
mas (+) del operador Other y tendr lo siguiente:
Haga doble clic en la lnea que dice: if x then y else z; le aparece en la pantalla de
resultados (pantalla blanca) lo siguiente:
; ahora en el cuadro de dilogo de la izquierda haga clic en el signo
mas (+) de la tabla empleados para que le aparezcan los campos de la tabla y luego haga
doble clic sobre el campo sexo; obtendr lo siguiente:
; usted debe agregarle lo siguiente:
Haga lo necesario para ordenar el reporte por Sexo y Nombre; guarde este reporte con el
nombre REPOSEXO; amarre este reporte en el programa Menurec.
5. Condicionales anidados
El condicional que hemos hecho en el inciso anterior tiene solo dos opciones; cuando se
trata de un condicional con mas de dos opciones la situacin se complica; siempre en el
mismo reporte REPOSEXO, agregaremos otra columna: Est. Civil; crearemos una
variable a la que llamaremos NOMCIVIL; conforme a lo que ha aprendido haga lo
necesario para crear la variable mencionada; al llegar a la pantalla de resultados (pantalla
blanca) debe armar su condicional considerando lo siguiente:
Estadocivil = 1
Estadocivil = 4
(Soltero) Estadocivil = 2
(Viudo) Estadocivil = 5
(Casado) Estadocivil = 3
(Divorciado)
(Otro)
con
Haga el proceso completo hasta ubicar el estado civil a la par de la columna del sexo; el
resultado debera ser el siguiente:
Captulo 20
Cristal report Parte III
I.
Objetivo General
Subtotales y grficas
II.
Objetivos especficos
Conocer en cristal report las formas de hacer reportes de rupturas de control y
ocultar lneas de detalle para reportes totalizados o de sumatorias; conocer el
botn insert char (grficas); grficas de barra y pie (pastel)
III.
Contenido
1. Subtotales y rupturas de control; reportes agrupados
2. Reportes totalizados
3. Grficas
Ahora haga clic sobre el detalle del sueldo, tal y como se mira en la figura anterior;
presione clic derecho y de las opciones que le aparecen seleccione Insert subtotal; le
aparecer la siguiente pantalla:
Note usted que le parecieron dos secciones mas en el diseo del reporte: Group Header y
Group Footer; en el Group Header le aparece el nombre del departamento y en el Group
Footer le aparece el subtotal del departamento; usted puede cambiar de ubicacin tanto el
nombre del departamento as como el subtotal si lo desea. En la lnea donde tenemos el
subtotal escriba el siguiente texto: Subtotal, y adems haga una lnea por arriba y por
abajo del subtotal; debe ver se as:
Guarde su reporte
Ejercicio: Haga el reporte de Sueldos por sucursal detallado; tome como base siempre el
reporte REPO-05; este nuevo reporte debe llamarse REPOGRU2; siga los mismos
conceptos vistos en el reporte anterior.
2. Reportes totalizados
Hemos visto la forma de hacer reportes con subtotales; pero se da el caso de que a nivel
gerencial interesa ver datos de subtotales sin los detalles; en nuestro caso estamos
hablando de un reporte que muestre los saldos por departamento sin el detalle de los
empleados; esto es lo que llamamos un reporte totalizado.
Abra el reporte REPOGRU1; guarde este reporte con el nombre REPOTOT1 y haga los
siguientes cambios:
a. Quite el subttulo de Sueldos por Departamento Detallado y cmbielo por el
siguiente: Sueldos por Departamento Totalizado o Agrupado
b. Oculte la lnea de detalle; sobreponga el cursor sobre la palabra Details y
presione el clic derecho; le aparecer un men del cual debe seleccionar Hide
Corra su reporte para los resultados
c. El nombre del grupo (Group # 1 name) cmbielo de ubicacin; bjelo a la misma
lnea donde est el valor del subtotal.
d. Borre la palabra subtotal, as como la lnea que est por arriba del valor del
subtotal , al igual que la lnea que est por debajo.
e. De los subttulos de las columnas solo deje Departamento y Sueldo
f. Ajuste los espacios y debera quedarle de la siguiente manera
Salve el reporte
Ejercicio: Haga el reporte de Sueldos por Sucursal Totalizado y llmelo REPOTOT2; para
este reporte debe tomar como base REPOGRU2; siga los mismos conceptos vistos en el
reporte anterior.
Antes de continuar haga el trabajo de amarrar los cuatro reportes que hemos hecho al
programa Menurec de Visual Basic
REPOGRU1 (Sueldos por Departamento Detallado)
REPOTOT1 (Sueldos por Departamento Totalizado)
REPOGRU2 (Sueldos por Sucursal Detallado)
REPOTOT2 (Sueldos por Sucursal Totalizado)
3. Grficas
Cristal report nos ofrece la opcin de poder hacer nuestras grficas; maneja un buen
desarrollador de grficas, donde podemos optar a varios tipo de grficas; para poder
hacer una grfica primero debemos hacer un reporte totalizado de los datos que se desea
graficar; en este caso haremos la grfica de sueldos por departamento; abra el reporte
REPOTOT1; guarde este reporte con el nombre REPOGRA1.
Haga Clic sobre el botn Insert Char:
Por la izquierda tiene los tipos de grficas que puede seleccionar y por la derecha las
variaciones por grfica; cualquiera sea la grfica que use recomendamos usar la variacin
3D y no la plana; en el caso de la figura anterior la grfica por default es la grfica de
barras con su variacin plana; haga clic en el botn por debajo de la variacin plana para
trabajar en variacin 3D.
Tabulador Data
Es necesario que haga clic en esta opcin para que se activen las otras opciones que
necesitamos
Tabulador Text
Este tabulador nos lleva a la siguiente pantalla:
Corra su reporte
Ejercicio: haga la grfica de Sueldos por sucursales y llmela REPOGRA2; aplique los
mismos conceptos de la grfica anterior. Haga el trabajo de amarrar las dos grficas que
hemos hecho al programa Menurec de Visual Basic
Gua de trabajo del Captulo No. 21
1. Haga el Reporte General de Ventas con el siguiente modelo:
BDA System Net
Departamentos de Ventas
Listado General de Ventas
No. Factura
Fecha
Tipo
Sucursal
Vendedor
Cliente
Valor
Xxxxxxxxxx xxxxxxxxx xxxxxx xxxxxxxx xxxxxxxxxxx xxxxxxxx xxxxxx
Xxxxxxxxxx xxxxxxxxx xxxxxx xxxxxxxx xxxxxxxxxxx xxxxxxxx xxxxxx
--------------------------------------Total General
xxxxxxx
--------------------------------------Para el Tipo trabaje con un condicional: Tipo= CO Contado, CR Crdito
Las tablas que se necesitan son: Facturas, Sucursales,Vendedores y Clientes; estas
tablas deben relacionarse para que aparezca el Nombre de la sucursal, Vendedor y
Cliente. El nombre del Reporte ser: VENTAS
2. Del reporte VENTAS saque el Reporte por Sucursal detallado (subtotales por
sucursal) y llamarlo VENGRU1.
Del Reporte VENGRU1 saque el reporte Totalizado y llamarlo VENTOT1
Del Reporte VENTOT1 saque la grfica x Sucursal y llamarlo VENGRA1
3. Del reporte VENTAS saque el Reporte por Vendedor detallado (subtotales por
vendedor) y llamarlo VENGRU2.
Del Reporte VENGRU2 saque el reporte Totalizado y llamarlo VENTOT2
Del Reporte VENTOT2 saque la grfica x vendedor y llamarlo VENGRA2
4. Del reporte VENTAS saque el Reporte por Cliente detallado (subtotales por
Cliente) y llamarlo VENGRU3.
Del Reporte VENGRU3 saque el reporte Totalizado y llamarlo VENTOT3
Del Reporte VENTOT3 saque la grfica x cliente y llamarlo VENGRA3
5. Del reporte VENTAS saque el Reporte por Tipo detallado (subtotales por
Tipo de venta) y llamarlo VENGRU4.
Del Reporte VENGRU4 saque el reporte Totalizado y llamarlo VENTOT4
Del Reporte VENTOT4 saque la grfica x Tipo y llamarlo VENGRA4
Captulo 20
Cristal report Parte IV
I.
Objetivo General
Filtros y Parmetros
II.
Objetivos especficos
Cmo filtar datos en reportes de cristal report desde Visual Basic; comando
Inputbox para crear filtros de datos; parmetros desde Visual Basic hacia cristal
report.
III.
Contenido
1. Inputbox
2. Parmetros
3. Rangos de Fecha
1. Inputbox
El comando inputbox nos proporciona la opcin de poder introducir por pantalla un valor
con el cual podemos fltrar datos por medio de un reporte; analicemos un caso bien
prctico; en el programa Menurec tenemos el reporte de Sueldos por departamento
especfico; lo que queremos es el mismo reporte detallado, solo que en lugar de salir
todos los departamentos, queremos los de un departamento especfico, as que usaremos
el mismo reporte REPOGRU1.
Con el comando inputbox pediremos por pantalla que el usuario introduzca el Cdigo del
departamento del cual desea los datos; entre en el programa Menurec a la opcin
Reportes Sueldos por departamento Departamento especfico y escriba lo siguiente:
Msdepartamento = InputBox("Introduzca el Cdigo del departamento", "Pantalla de parmetros")
Explicaremos la instruccin
Como usted pudo comprobar, el comando inputbox le permite introducir por pantalla un
string o valor y a la vez lo almacena en una variable llamada Msdepartamento.
Ahora solo necesitamos indicar en cristal report que ejecute el reporte pero con el
siguiente filtro: Empleados.departamento = Msdepartamento, es decir, que aparezcan los
datos de los empleados que en el campo departamento tenga el mismo valor de
msdepartamento.
Su rutina del reporte debe quedar de la siguiente manera:
MSDEPARTAMENTO = InputBox("Introduzca el Cdigo del departamento", "Pantalla de parmetros")
CRTREPORTE.WindowState = crptMaximized
CRTREPORTE.Destination = crptToWindow
CRTREPORTE.SelectionFormula = "{EMPLEADOS.DEPARTAMENTO}= ' " & MSDEPARTAMENTO & " ' "
CRTREPORTE.ReportFileName = "C:\WINSYSTEM\REPORTES\REPOGRU1.RPT"
CRTREPORTE.DiscardSavedData = 1
CRTREPORTE.Action = 1
CRTREPORTE.SelectionFormula = " "
CRTREPORTE.DiscardSavedData = 1
CRTREPORTE.Action = 1
CRTREPORTE.SelectionFormula = " "
CRTREPORTE.Formulas(0) = " "
Creamos una variable llamada Rotulo con el string Por Departamento Especfico como
valor.
CRTREPORTE.Formulas(0) = "XX = " + " ' " + ROTULO + " ' "
Enviamos desde Visual Basic el valor de la variable Rotulo, a una variable de cristal report
llamada xx. Esto implica que debe crearse en el reporte REPOGRU1 una variable llamada
xx; esta variable debe crearse vaca.
CRTREPORTE.Formulas(0) = " "
3. Rangos de Fecha
En cualquier sistema es bastante requerido reportes por rango de fecha; por ejemplo los
reportes de ventas siempre se pedirn por rango de fecha. En el programa tenemos la
siguiente opcin: Reportes Listado de Empleados - Por Fecha de Ingreso; para obtener
este reporte el usuario tendr que introducir por pantalla un rango de fecha (Fecha inicial
y Fecha final) y deben salir los empleados que ingresaron entre las fechas especificadas.
El reporte que se correr en esta opcin es el reporte REPO-05.
Antes disearemos el siguiente formulario:
La funcin Mid sirve para extraer parte del contenido de TXTFECHA1; la Instruccin lo
que dice es que la variable msfecha1 ser igual a los caracteres de TXTFECHA1 desde la
posicin 7, 4 caracteres mas una coma, mas los caracteres de TXTFECHA1 desde la
posicin 4, 2 caracteres mas una coma, mas los caracteres de TXTFECHA1 desde la
posicin 1, 2 caracteres; esto implicara que si TXTFECHA1 =10/02/2003, MSFECHA1 =
2003,02,10
Esta conversin es necesaria pues cristal report maneja las fechas en el formato:
ao,mes,da.
En el botn Cancelar escriba:
MSFECHA1 = Empty
MSFECHA2 = Empty
Unload Me
Ahora Entre a la opcin del programa Menurec: Reportes Listado de Empleados Por
Fecha de Ingreso y escriba lo siguiente:(R2201)
frmfechas.Show 1
If msfecha1 = Empty Or msfecha2 = Empty Then
Exit Sub
End If
ROTULO = "Del " + msfecha12 + " al " + msfecha22
CRTREPORTE.WindowState = crptMaximized
CRTREPORTE.Destination = crptToWindow
CRTREPORTE.Formulas(0) = "XX = " + " ' " + ROTULO + " ' "
CRTREPORTE.SelectionFormula = "{Empleados.Fechaingreso}>=datetime(" & msfecha1 & ") AND
{Empleados.Fechaingreso}<=datetime(" & msfecha2 & ")"
CRTREPORTE.ReportFileName = "C:\WINSYSTEM\REPORTES\REPO-05.RPT"
CRTREPORTE.DiscardSavedData = 1
CRTREPORTE.Action = 1
CRTREPORTE.SelectionFormula = " "
CRTREPORTE.Formulas(0) = " "
Ahora debe ir a cristal report y en el reporte REPO-05 haga una variable vaca llamada xx.
Corra su reporte y saque los empleados que ingresaron entre el 01/01/2003 al
31/12/2003.
Gua de trabajo del Captulo No. 22
1. Del programa Menuinv haga los reportes de ventas especficas
2. Todos los reportes de ventas deben sacarse con rango de fechas incluso el reporte
general de ventas.
Captulo 20
Tablas con mas de un campo como llave principal
I.
Objetivo General
Crear un sistema de planilla; la captura de datos y los reportes de Planilla,
Libros de Sueldos y Salarios, Horas extras y Boleta de pagos
II.
Objetivos especficos
Conocer los conceptos de captura de datos de una tabla cuyo ndice o llave
primaria est formada por mas de un campo.
III.
Contenido
1. Captacin bsica de planilla
2. Modificaciones al mdulo bsico de planilla
TEXT 10
TEXT 10
DATE
NUM.
NUM.
NUM.
NUM.
NUM.
NUM.
NUM.
DIARIO
IMPTORENTA
IHSS
COOPERATIVA
FOSOVI
ADELANTOS
PRESTAMOS
OTRASDEDUC
DEDUCCIONES
NETO
NUM.
NUM.
NUM.
NUM.
NUM.
NUM.
NUM.
NUM.
NUM.
NUM.
Corra el formulario Frmplani y grabe un registro con los siguientes datos: no. planilla = 01;
No. de empleado=001; el resto de datos debe inventarlos; despus de grabarlo llmelo y
modifique algunos datos para probar la rutina del botn modificar; luego debe llamar de
nuevo los datos para finalmente eliminarlo.
2. Modificaciones al mdulo bsico de planilla
Ya probado que el programa funciona en lo que se refiere al mantenimiento de la tabla
planilla, haremos algunos cambios; en primer lugar notamos que este programa se presta
para hacer una rutina de clculos; los clculos que necesitamos en este programa son los
siguientes:
Total ingresos = Devengado + Extra + Comisiones + Otros ingresos
Total deducciones = Imp./ Renta + IHSS + Cooperativa + FOSOVI + Adelantos
+ Prestamos + Otras deducciones
Sueldo neto = Total ingreso Total deducciones
Entre al evento change de los datos numricos y escriba: CALCULOS (no lo haga en:
Total ingresos, ni en Total Deducciones ni en Sueldo Neto). Ahora haga una rutina a la
que debe llamar: CALCULOS, con las siguientes instrucciones: (R2301)
VAR1 = Format(TXTDEVENGADO, "########.00")
VAR2 = Format(TXTEXTRA, "########.00")
VAR3 = Format(TXTCOMISIONES, "########.00")
VAR4 = Format(TXTOTROSING, "########.00")
TXTINGRESOS = Val(VAR1) + Val(VAR2) + Val(VAR3) + Val(VAR4)
VAR1 = Format(TXTIHSS, "########.00")
VAR2 = Format(TXTIMPTORENTA, "########.00")
VAR3 = Format(TXTCOOPERATIVA, "########.00")
VAR4 = Format(TXTFOSOVI, "########.00")
VAR5 = Format(TXTADELANTOS, "########.00")
VAR6 = Format(TXTPRESTAMOS, "########.00")
VAR7 = Format(TXTOTRASDEDUC, "########.00")
TXTDEDUCCIONES = Val(VAR1)+Val(VAR2)+Val(VAR3)+ Val(VAR4) + Val(VAR5) + Val(VAR6) + Val(VAR7)
sueldo neto; vaya a la propiedad locked de estos textbox y cambie el valor a true
(protegido). Antes de continuar pruebe que estas casillas estn protegidas.
Ahora queremos que as como aparece el nombre del empleado cuando introduce su
cdigo, tambin aparezca su sueldo, el clculo del IHSS, el clculo del FOSOVI y el
clculo del sueldo diario. Entre al evento change de TXTEMPLEADO, y antes de la
instruccin ZZ.close que est al final del evento change escriba lo siguiente:
If Not IsNull(ZZ!sueldo) Then
TXTSUELDO = ZZ!sueldo
End If
If Not IsNull(ZZ!sueldo) Then
If ZZ!sueldo > 600 Then
TXTIHSS = 21
Else
TXTIHSS = ZZ!sueldo * 0.035
End If
End If
If Not IsNull(ZZ!sueldo) Then
TXTFOSOVI = ZZ!sueldo * 0.015
End If
If Not IsNull(ZZ!sueldo) Then
TXTDIARIO = Format(ZZ!sueldo / 30, "######.00")
End If
Corra su formulario
Si tenemos el sueldo diario, es posible calcular el sueldo devengado al introducir los das
trabajados; entre a la rutina CALCULOS y al inicio escriba las siguientes instrucciones:
VAR1 = Format(TXTSUELDO, "########.00")
If Val(TXTDIAS) = 15 Then
TXTDEVENGADO = Val(VAR1) / 2
Else
If Val(TXTDIAS) = 30 Then
TXTDEVENGADO = Val(VAR1)
Else
TXTDEVENGADO = Val(TXTDIAS) * Val(TXTDIARIO)
End If
End If
Corra el formulario Frmplani y grabe un registro con los siguientes datos: no. planilla = 01;
No. de empleado=001; el resto de datos debe inventarlos.
Ahora trate de grabar un registro con el mismo No. de planilla y con No. de empleado =
002.
Note que este programa no nos permite grabar otros empleados de la misma planilla (01),
debido a que este programa es apto para captar datos a una tabla cuya llave principal
est formada por un solo campo; para que podamos grabar varios empleados de la
misma planilla, debemos cambiar el modelo de captacin a un modelo para una tabla
cuya llave principal est formada por mas de un campo; en nuestro caso la llave principal
debe ser la combinacin de los campos Noplanilla y Empleado, pues con estos dos
campos tenemos un registro nico. Entre a Access y defina como llave principal de la
tabla planilla los campos Noplanilla+Empleado.
Lo siguiente que debe hacer es quitar de la rutina DATOSINICIALES la siguiente
instruccin:
TXTEMPLEADO = EMPTY
Lo anterior es porque en la rutina DATOSINICIALES no se limpian los datos de la llave;
dnde debemos limpiar entonces TXTEMPLEADO?
Busque los diferentes lugares donde se limpia TXTNOPLANILLA y habr encontrado el
lugar donde se debe limpiar TXTEMPLEADO (en el botn CANCELAR).
Si TXTEMPLEADO es parte de la llave, entonces debe ejecutar en el evento change las
mismas instrucciones del evento change de TXTNOPLANILLA que tambin es parte de la
llave; eso significa copiar un bloque grande de instrucciones; para evitar copiar tal bloque,
haremos referencia al lugar donde estn dichas instrucciones; entre al evento change de
TXTEMPLEADO y como primera instruccin inserte la siguiente:
TXTNOPLANILLA_CHANGE
Comente ampliamente con su maestro este principio anterior
El siguiente paso es el mas complicado y decisivo; entre al evento change de
TXTNOPLANILLA, y haga la lectura a la tabla PLANILLA tomando en cuenta no solo el
campo NOPLANILLA con el textbox TXTNOPLANILLA, sino tambin con el campo
EMPLEADO y el textbox TXTEMPLEADO.
Usted debe tener lo siguiente:
Set ZZ = Con.OpenResultset("Select * from planilla where noplanilla=' " & txtnoplanilla & " ' ", _
rdOpenDynamic)
Set ZZ=Con.OpenResultset("Select * from planilla where noplanilla=' " & txtnoplanilla & " ' and empleado=' " & TXTEMPLEADO & " ' ", _
rdOpenDynamic)
Comente ampliamente con su maestro este principio anterior
El siguiente paso es ir a todos los lugares donde se hace alguna transaccin a la tabla
planilla y agregar el filtro por No. de empleado. Existen tres lugares donde se debe
trabajar:
a. Botn Salvar
En este botn usted debe tener antes de insertar los datos en la planilla la siguiente
lectura:
Set ZZ = Con.OpenResultset("Select noplanilla from planilla where noplanilla=' " & txtnoplanilla & " ' ", rdOpenDynamic)
b. Boton Eliminar
En este botn usted tiene la siguiente instruccin:
Con.Execute ("Delete from planilla where noplanilla='" & txtnoplanilla & "'")
Debe sustiturla por la siguiente: (R2304)
Con.Execute ("Delete from planilla where noplanilla=' " & txtnoplanilla & " ' and empleado=' " & TXTEMPLEADO & " ' ")
c. Botn Modificar
En este botn usted tiene la siguiente lnea:
& " where noplanilla='" & txtnoplanilla & "'"
Debe sustituirla por la siguiente: (R2305)
& " where noplanilla=' " & txtnoplanilla & " ' and empleado=' " & TXTEMPLEADO & " ' "
Ahora trate de grabar un registro con el mismo No. de planilla (01) y con No. de empleado
= 002; invente el resto de datos
Ahora trate de llamar en forma independiente los registros que ha grabado; notar que el
programa identifica los registros por separado.
Ahora haga cualquier modificacin a cada registro grabado, y compruebe que los cambios
se efectuaron.
Ahora elimine los datos del empleado 002; debe comprobar que se elimin el empleado
002 y que el empleado 001 no fue eliminado.
Ahora tenemos un detalle muy importante: en la consulta debemos capturar adems del
No. de planilla el No. de Empleado; entre al botn Seleccionar en el tabulador Consulta y
encontrar lo siguiente:
Vs.Col = 0
txtnoplanilla = Vs.Text
tabla.Tab = 0
usted debe agregar lo siguiente:
Vs.Col = 1
txtempleado = Vs.Text
Ahora nos queda la programacin de los botones de navegacin en la tabla de datos.
Botn Inicio
Si entra a este botn usted encontrar lo siguiente:
Dim ZZ As rdoResultset
Set ZZ = Con.OpenResultset("SELECT * FROM planilla ORDER BY noplanilla", rdOpenDynamic)
ZZ.MoveFirst
If ZZ.EOF Then
Else
txtnoplanilla = ZZ!noplanilla
End If
Como la llave de la tabla es el No. de planilla y el No. de empleado, se debe hacer el
ordenamiento por ambos campos y de igual manera la asignacin en sus casillas
correspondientes; la programacin de este botn debe estar de la siguiente manera:
Dim ZZ As rdoResultset
Set ZZ = Con.OpenResultset("SELECT * FROM planilla ORDER BY noplanilla,empleado", rdOpenDynamic)
ZZ.MoveFirst
If ZZ.EOF Then
Else
txtnoplanilla = ZZ!noplanilla
TXTEMPLEADO = ZZ!empleado
End If
Botn Ultimo
ZZ.MoveLast
If ZZ.EOF Then
Else
txtnoplanilla = ZZ!noplanilla
TXTEMPLEADO = ZZ!empleado
End If
Botn Siguiente
La programacin de este botn debe estar de la siguiente manera:
Dim ZZ As rdoResultset
Set ZZ = Con.OpenResultset("SELECT * FROM planilla WHERE noplanilla+empleado>'" & _
txtnoplanilla + TXTEMPLEADO & "' ORDER BY noplanilla", rdOpenDynamic)
ZZ.MoveFirst
If ZZ.EOF Then
Else
txtnoplanilla = ZZ!noplanilla
TXTEMPLEADO = ZZ!empleado
End If
Botn Anterior
La programacin de este botn debe estar de la siguiente manera:
Dim ZZ As rdoResultset
Set ZZ = Con.OpenResultset("SELECT * FROM planilla WHERE noplanilla+empleado<'" & _
txtnoplanilla + TXTEMPLEADO & "' ORDER BY noplanilla", rdOpenDynamic)
ZZ.MoveLast
If ZZ.EOF Then
Else
txtnoplanilla = ZZ!noplanilla
TXTEMPLEADO = ZZ!empleado
End If
Con estos cambios y modificaciones ya tenemos listo el programa de Planilla por lo tanto
le pedimos que haga lo siguiente:
a. La planilla 01 con al menos cincos empleados
b. La planilla 02 con al menos cincos empleados