Guía de Estudio. Microsoft Visual Basic 6.0

1 Guía de Estudio Microsoft Visual Basic 6.0 Elaborada por: Ing. Alfredo Díaz Cabimas, Noviembre de 2009 2 GUIA DE ESTUDIO VISUAL BASIC 6.0 Visua

14 downloads 107 Views 922KB Size

Story Transcript

1

Guía de Estudio

Microsoft Visual Basic 6.0

Elaborada por: Ing. Alfredo Díaz Cabimas, Noviembre de 2009

2 GUIA DE ESTUDIO VISUAL BASIC 6.0 Visual Basic es un lenguaje de programación de cuarta generación que soporta las características de orientación a objetos y mantiene las sentencias de manera homóloga al Basic tradicional. Algunos estudiosos han asegurado de que Visual Basic hasta la versión 6.0 no es orientado a objetos, sino orientado a eventos, ya que en el modelo POO se deben presentar de manera explícita la herencia, encapsulamiento y polimorfismo. La herencia se refiere al hecho de que un objeto puede contener las características o propiedades de un objeto padre. En VB la herencia está presente de manera implícita. Por ejemplo, los rasgos heredados de los padres hacia los hijos. El encapsulamiento: consiste en el hecho de que el código asociado a un objeto es privado para dicho objeto y queda asociado exclusivamente a éste. Por ejemplo, el código del evento cmdGuardar_Click() estará asociado exclusivamente a ese objeto. El polimorfismo indica que un objeto puede contener métodos que pueden tener el mismo nombre, pero desencadenar diferentes comportamientos. Por ejemplo, en un teléfono, cuando se presiona un botón para digitar un número, se marcará dicho número, sin embargo, aunque esencialmente la función es la misma, al discar el uno (1), de marcará este dígito, ocurriendo lo mismo con el dos (2) y el resto de los números; es decir, el resultado varía dependiendo de cada botón, aunque todos respondan a la misma acción (presionar). PROPIEDADES, MÉTODOS Y EVENTOS Una propiedad es una característica de un objeto; por ejemplo, el nombre, color, tamaño, posición, etc. Un método es un comando o acción al cual, el objeto puede responder. Por ejemplo, cuando se le dice al objeto “Muévete a la izquierda” o “Agrega un elemento a este objeto”. Un evento es un suceso de programa que puede ocurrir en cualquier momento. Por ejemplo: cuando el usuario pasa el Mouse por encima del objeto o hace clik sobre él. EL ENTORNO DE PROGRAMACIÓN (IDE) DE VISUAL BASIC 6.0 Visual Basic 6.0 ofrece un entorno integrado de desarrollo provisto de los siguientes elementos:

Barra de Menús y Herramientas

Formulario

Explorador de proyectos

Cuadro de controles Ventana Propiedades

3 Barra de Menús y Herramientas: De manera homóloga a los programas diseñados para Windows, permiten desplegar una lista de opciones que el usuario puede utilizar para diseñar, depurar y ejecutar los programas entre otras posibilidades. Formulario: Es el formulario base donde el diseñador o programador trabajará para diseñar la interfaz de usuario. Cuadro de Controles: Representa cada uno de los objetos que el usuario puede insertar dentro de los formularios. Ventana Propiedades: Representa cada una de las propiedades de los objetos. Explorador de Proyectos: Muestra cada uno de los elementos que componen un proyecto en visual Basic como formularios, módulos, etc. Un proyecto es un conjunto de formularios, módulos, módulos de clase y otros archivos que forman parte de la aplicación final (programa compilado). Dicho proyecto tiene extensión .vbp hasta que se compila y genera un programa ejecutable .exe compatible con Windows. El proyecto por defecto tiene el nombre “Proyecto1” y puede cambiarse su nombre por otro más descriptivo asociado a su contenido. Este nombre prevalecerá hasta la generación del ejecutable. LOS FORMULARIOS Y OBJETOS EN VISUAL BASIC Un formulario es un objeto básico contenedor de otros objetos, que permite el diseño de las interfaces de usuario. En todos los programas Windows cada ventana está representada por lo menos por un formulario dentro del cual, se encuentran los botones de comando, cuadros de texto, listas desplegables y otros objetos que pueden ser accedidos por los usuarios. Los objetos en visual Basic pueden ser intrínsecos (vienen preestablecidos por el lenguaje) o externos (diseñados por otros fabricantes). Este último tipo de objetos son los denominados ActiveX u .OCX. Puntero: Es el objeto preestablecido utilizado para seleccionar otros objetos Textbox: Permite el ingreso de texto por parte del usuario Checkbox: Permite marcar como verdadero o falso (sí o no) el estado del objeto. Listbox: Muestra una lista abierta de elementos. Timer: Permite repetir instrucciones de acuerdo al reloj del procesador. DirListBox: Muestra una lista de archivos de directorios. Image: Permite insertar imágenes en el formulario. Label: Permite asignar una leyenda o etiqueta para indentificar otros objetos. CommandButton: Permite desencadenar acciones diversas al ser presionado. ComboBox: Muestra una lista desplegable de elementos al clickear en la flecha derecha PictureBox: Permite insertar imágenes en el formulario Frame: Delimita una región del formulario para agrupar otros objetos

4 OptionButton: Muestra un grupo de opciones de las cuales, el usuario sólo puede elegir una de ellas. ANTES DE COMENZAR A PROGRAMAR LA APLICACIÓN Existen una serie de consideraciones importantes antes de empezar a programar. Lo primero que debemos tomar en cuenta es que Visual Basic 6 es la existencia del Administrador de proyectos y la ventana propiedades. Un proyecto en visual basic es la integración de una serie de archivos como formularios, módulos y otros elementos que al trabajar como un todo dan origen a nuestra aplicación o programa de una manera totalmente funcional. El formulario es la ventana base sobre la cual se colocan los objetos del programa, mientras que el módulo es un archivo que contiene instrucciones que complementan nuestro programa. El explorador de proyectos es una ventana que se encuentra en el entorno de desarrollo de Visual Basic y presenta una lista de todos los elementos que están incluidos en la aplicación y la Ventana Propiedades permite visualizar y editar los valores de las características de los objetos como su nombre, título, color, etc. La ventana propiedades se muestra presionando F4 y el explorador de proyectos al presionar CONTROL+R. EL ACCESO A DATOS DESDE VB Para acceso a datos, Visual Basic 6.0 incluye un control intrínseco llamado “Data”. Este permite conectarse a diversos motores de bases de datos como DBF, Acces, Paradox o Excel. Sin embargo, para conectarse con motores de bases de datos más recientes y robustos, se incluyen los controles ActiveX ADO y RDO. El ADO genera una cadena de conexión donde se indica el motor de la base de datos, dirección en el disco donde se encuentra y otros parámetros que permiten establecer la conectividad. En cuanto al RDO (Objetos de Datos Remotos) se utiliza para conectar BD remotas a través de un DSN (Servidor de Nombres de Dominio de datos) que debe ser creado en la máquina local para establecer la conexión. En este curso, se utilizará el control de datos ADO. 1. Para llamar el control de datos ADO, se debe presionar la combinación “Control+T” y muestra la lista de todos los componentes de Visual Basic. 2. Se debe seleccionar el componente “Microsoft ADO Data Control 6.0 y presionar “Aceptar” Al hacer esto, se inserta un control en el cuadro de controles que hace referencia a este componente. 3. En este momento, ya el entorno está preparado para manejar datos. En este sentido, es necesario dibujar nuestro formulario, tal como se observa a continuación:

5

4. Para insertar un objeto (por ejemplo el Label Cedula, deberá hacer doble clic sobre el control del cuadro de controles. Esto ubicará el objeto Label1 en el centro del formulario. 5. Luego, muévalo hasta la parte superior del form tal como se muestra en la figura 6. Busque la propiedad Caption en la ventana Propiedades y escriba Cédula para asignar el valor de la propiedad.

El objeto quedará así: 7. Inserte el cuadro de texto (textbox) haciendo doble clic sobre el control TextBox del cuadro de controles . Este se colocará en el centro del formulario y deberá arrastrarlo hacia al lado del Label Cedula, tal como se muestra en la figura:

8. En la ventana propiedades, busque la propiedad Text y borre el valor que tiene en ese momento (Text1). Al mismo tiempo, busque la propiedad (Nombre) que es la primera que aparece en la lista de propiedades y escriba txtcedula. Presione enter para aceptar el valor y prosiga con el resto de objetos y propiedades de acuerdo al siguiente cuadro: Propiedades de los Objetos: Objeto Propiedad Form Name Caption BorderStyle StartUpPosition

Valor frmAlumnos Alumnos 1. Fixed Single 2. CenterScreen

Label1, Label2, Label4, Label5

Caption

Cedula, Nombre, Apellido, Dirección, Telefono

Name

txtCedula, txtApellido, txtTelefono

Text

“” (Vacío)

Enabled

False

Label3,

Text1, Text2, Text3, Text4, Text5

txtNombre, txtDireccion,

6 CommandButon1… CommandButton7

Name

cmdNuevo, cmdBuscar, cmdGuardar, cmdCerrar

cmdEditar, cmdEliminar, cmdCancelar,

Caption

Enabled

Nuevo, Modificar, Eliminar, Cerrar, Guardar, Cancelar, Consultar True (cmdGuardar y cmdCancelar = False)

En resumen, nuestro formulario tendrá 5 Labels, 5 textboxes y 7 Command buttons. NOTA MUY IMPORTANTE: Verifique minuciosamente que todas las propiedades de los objetos están bien asignadas, ya que de no ser así, tendrá problemas al momento de agregar el código. SIGNIFICADO DE LAS PROPIEDADES UTILIZADAS: Name: Indica el Nombre del Objeto. El nombre es único y sólo se utiliza a nivel de código. No se debe confundir con el Caption. Se recomienda utilizar prefijos para identificar al tipo de objeto. Los más utilizados son: cmd CommandButton txt TextBox cmb ComboBox lbl Label pic PictureBox frm Formulario chk CheckBox opt OptionButton Los nombres de objeto no pueden comenzar con números ni contener espacios en blanco ni caracteres especiales. Tampoco se pueden utilizar palabras reservadas del lenguaje. Caption: Indica la leyenda o título del objeto que el usuario observa durante la ejecución del programa BorderStyle: Sólo aplica para el objeto Form. Estilo del borde (Ninguno, Sencillo, Ajustable, Cuadro de diálogo, como barra de herramientas flotante o fija) Enabled: Indica si el objeto está activo durante la ejecución del programa o no. De no estar activo, el usuario no podrá ingresar ningún dato ni manipular dicho objeto. Tag: Almacena cualquier valor que el usuario desee. En este curso, se utilizará para efectos de optimizar el código de programa al limpiar, activar o desactivar objetos. Text: En un objeto textbox o combobox, guarda el valor ingresado por el usuario. PERSPECTIVA DEL PROGRAMA (¿CÓMO SE DESEA QUE FUNCIONE?) El programa debe permitir el ingreso, actualización, eliminación y consulta de datos de los alumnos de un colegio. Al inicio, todos los cuadros de texto deben estar desactivados y sólo se activarán cuando el usuario desee agregar o modificar datos. En tal caso, los únicos botones que deben quedar activos son Guardar y Cancelar, ya que durante una operación de edición o agregación sólo se pueden almacenar los datos o deshacerlos. Al inicio, los botones Nuevo, Modificar, Eliminar, Cerrar y Consultar deben estar activos ya que se espera que el usuario desencadene una de estas acciones, estando inactivos los botones Guardar y Cancelar.

7 Luego de una operación de agregación o modificación, cuando el usuario selecciona Guardar o Cancelar, se regresan todos los cuadros de texto a su estado inactivo y los botones Nuevo, Modificar, Eliminar, Cerrar y Consultar, se activan; desactivando entonces a Guardar y Cancelar. ABRIENDO LA BASE DE DATOS DESDE VB Para abrir la base de datos, utilizaremos una variable global llamada “db” que declararemos en un módulo. Esto lo realizamos de la siguiente manera: 1. Hacemos click con el botón derecho en el área blanca del administrador de proyectos. 2. Seleccionamos Agregar \ Módulo y aparecerá una pantalla como la siguiente:

3. Seleccionamos Abrir y se mostrará una pantalla en blanco en la que escribiremos el siguiente código: 'Declara las variables que hacen referencia 'a la base de datos y al recordset (conjunto de registros) 'Se declaran global para que esten al alcance de todo el proyecto Global db As New ADODB.Connection Global rst As New ADODB.Recordset 'Ahora se escribe el procedimiento inicial Sub main() 'Abre la conexión a la base de datos utilizando una cadena de conexión... db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SISTEMA\CENTRAL.mdb;Persist Security Info=False" db.Open 'e invoca al formulario de alumnos con el metodo show frmAlumnos.Show End Sub

4. Guardamos el módulo con el nombre modInicial.bas. Importante: Los proyectos en visual basic 6.0 tienen extensión.vbp mientras que los formularios son .frm y los módulos son .bas. Al momento de abrir un proyecto, siempre hacerlo con el archivo .vbp. Es un error común abrir el archivo .frm Como pudo observarse, se declararon 2 variables globales que hacen referencia a nuestra base de datos (db) y recordset (rst) y se realiza de esta manera para que estén “visibles” en todos los objetos del proyecto. También notemos la existencia del sub main() que es el procedimiento de inicio. Debemos entonces indicarle a Visual Basic que la primera rutina que llamará al iniciar es el sub main(). Para ello, vamos al menú proyecto y luego elegimos la opción Propiedades de proyecto. Allí aparecerá la siguiente ventana:

8 Alli, clickearemos en la lista desplegable Objeto Inicial y seleccionaremos Sub Main. También le colocaremos como Nombre de proyecto “Sistema” y presionamos Aceptar para guardar los cambios. Ahora, la próxima vez que se inicie el proyecto, se invocará al sub main(), por lo cual, se acostumbra que en esta rutina, se llame al formulario que contiene el menú principal del sistema. Por ahora, sólo invocará al formulario frmAlumnos.

INFORMACIÓN IMPORTANTE SOBRE LA DECLARACIÓN DE VARIABLES. Habrá visto que en el sub main() declaramos dos variables con la palabra Global. Una variable es un objeto de programa que puede contener datos y los mismos varían a lo largo de la ejecución del programa. Las variables pueden ser de tipo entero, con decimales, de cadena de caracteres, de tipo objeto, entre otros. La declaración de una variable es como sigue: Dim nombre_var as tipo_de_dato: Dim es la palabra reservada que reserva el espacio en la memoria RAM para la variable. Nombre_var es el nombre que se le da a la variable (no debe comenzar con números, ni contener caracteres especiales ni espacios en blanco) Tipo_de_dato es el tipo de dato que se le asigna a la variable (integer, string, doublé, etc) También se puede utilizar la declaración implícita (sin usar dim) y utilizar la variable justo en el momento que se declara. Por ejemplo Cedula$=”15069973” Esta instrucción crea la variable “Cedula” de tipo cadena (el símbolo $ significa que se declara como una cadena de caracteres) y luego, se asigna el valor de una cédula cualquiera. El símbolo (%) significa “entero”, mientras que el símbolo (#) significa “doublé”. Puede revisar la ayuda de Visual Basic 6 par mayores detalles. ADICIÓN DEL CÓDIGO 1. Para agregar el código a un objeto, se debe clickear sobre dicho objeto y luego, aparecerá el editor de código. Allí se muestra una lista con los objetos del formulario (en el lado izquierdo) y los eventos que puede soportar (en el lado derecho). 2. Ingresemos en el código del objeto cmdCerrar haciendo doble click sobre el botón Cerrar Al hacer esto, se mostrará la ventana código asociada a dicho botón. Es de hacer notar que en la lista superior izquierda aparece el nombre del objeto y en la derecha el evento que estaremos programando (en este caso: click), También aparecen unas líneas de código automáticas que indican inico y fin de un procedimiento asociado al objeto cmdCerrar, específicamente el evento click. Dichas líneas no deben borrarse.

9 3. Ubiquese debajo de la palabre Private y pegue allí el siguiente código: End Y luego, cierre dicha ventana

La instrucción End implica que cuando el usuario haga click sobre el botón Cerrar del formulario, se terminará por completo la ejecución del programa. 4. Es el momento de ingresar el código de los botones cmdNuevo y cmdEditar. Private Sub cmdNuevo_Click() 'Primero se activan todos los cuadros de texto 'porque escribiremos sobre ellos los valores que les asignaremos 'a los campos de la tabla ALUMNOS Me.txtApellido.Enabled = True Me.txtCedula.Enabled = True Me.txtDireccion.Enabled = True Me.txtNombre.Enabled = True Me.txtTelefono.Enabled = True 'Cuando comienza la creación, sólo se podrán Guardar o Cancelar los cambios 'Por eso cmdCancelar y cmdGuardar se activan 'Y el resto de los Botones de comando, se desactivan... Me.cmdGuardar.Enabled = True Me.cmdCancelar.Enabled = True Me.cmdBuscar.Enabled = False Me.cmdCerrar.Enabled = False Me.cmdEditar.Enabled = False Me.cmdNuevo.Enabled = False Me.cmdEliminar.Enabled = False End Sub

Para el botón Editar, inserte el siguiente código: (Doble click sobe el botón cmdEditar) Private Sub cmdEditar_Click() 'Verifica que se esté mostrando un reg en pantalla... 'Si se está mostrando un registro, el texbox cedula tiene algún valor... If Me.txtCedula.Text = "" Then 'Si no es así, muestra un error MsgBox "Debe cargar un registro para modificarlo", vbCritical Exit Sub End If 'Activa los cuadros de texto porque estamos editando... Me.txtApellido.Enabled = True Me.txtCedula.Enabled = True Me.txtDireccion.Enabled = True Me.txtNombre.Enabled = True Me.txtTelefono.Enabled = True 'Desactiva todos los Botones de comando, 'dejando activos solamente cmdGuardar y cmdCancelar 'porque al editar sólo se pueden salvar o cancelar los cambios... Me.cmdBuscar.Enabled = False Me.cmdCerrar.Enabled = False Me.cmdEditar.Enabled = False Me.cmdNuevo.Enabled = False Me.cmdEliminar.Enabled = False Me.cmdGuardar.Enabled = True Me.cmdCancelar.Enabled = True End Sub

5. Cierre las ventanas de edición de código y haga doble click sobre el objeto cmdBuscar del formulario 6. Es el momento de ingresar el código del botón cmdBuscar que se indica a continuación:

10 Private Sub cmdBuscar_Click() Dim cedula As String 'Declara la variable cedula como cadena... 'Muestra un cuadro de mensaje solicitando la cédula que desea buscar... 'Y lo asigna a la variable cedula cedula = InputBox("Ingrese la Cédula a Buscar") 'Si la variable no contiene nada, se muestra un error 'Y sale de este procedimiento... If Trim(cedula) = "" Then MsgBox "La cédula ingresada es inválida", vbCritical Exit Sub End If 'Pero si el usuario ingresa una cédula, 'Abre un RecordSet y verifica si existe... rst.CursorLocation = adUseClient 'Siempre se coloca para que el RecordCount funcione correctamente 'Esta instrucción abre un recordset que es una colección de registros de una o varias tablas... rst.Open "SELECT * FROM alumnos WHERE cedula='" + Trim(cedula) + "'", db, adOpenDynamic, adLockOptimistic If rst.RecordCount > 0 Then 'Si ha encontrado alguna coincidencia... Me.txtApellido = rst!apellido 'Asigna los valores a los cuadros de texto Me.txtCedula = rst!cedula Me.txtDireccion = rst!Dir Me.txtTelefono = rst!telf Me.txtNombre = rst!nombre Else 'De lo contrario, muestra un mensaje de que no se encontró ningun registro MsgBox "No se encontró el alumno con esta cédula", vbCritical End If rst.Close End Sub

Veamos lo que hemos hecho hasta ahora… El botón nuevo activa todos los cuadros de texto para que el usuario pueda teclear la cédula, nombre, apellido, etc del alumno que está registrando. Dado que está “creando” un nuevo registro, sólo se podrán Guardar los cambios o Cancelarlos, de allí que sólo se dejan activos los botones cmdGuardad y cmdCancelar, mientras que cmdNuevo, cmModificar, cmdBuscar, cmdEliminar y cmdCerrar se desactivan. Lo mismo ocurre cuando se presiona el botón Modificar ya que se está tratando de editar registros. La única diferencia notoria es el hecho de que para poder editar, el usuario debe haber buscado un registro primeramente y luego, con los datos del mismo en el formulario, presionar editar, es decir, obligatoriamente debe estarse visualizando un registro en la pantalla. Por esta razón se verifica primero si el txtCedula.text tiene algún valor, porque esto indica que se ha cargado previamente un registro para su modificación. Nótese la utilización de la estructura condicional if que sirve para tomar una decisión en base al resultado de una condición… Por ejemplo; si el txtcedula.text tiene “algo”, entonces, continuar, de lo contrario, mostrar un error. En cuanto al botón cmdBuscar, lo primero que se realiza pedirle al usuario cuál cédula desea buscar. Para ello, se utiliza la función InputBox que muestra un cuadro de mensaje con una región editable. Allí, el usuario escribirá la cédula a buscar y luego, se buscará en la tabla de alumnos si existe alguna coincidencia con el valor ingresado.

La función InputBox() Muestra un mensaje en un cuadro de diálogo, espera que el usuario escriba un texto o haga clic en un botón. InputBox(mensaje[, titulo])

11

Parte

Descripción

prompt

Mensaje que se desea mostrar en el cuadro de diálogo. Debe ir entre “comillas”

title

Opcional. Título del cuadro de diálogo. Si omite title, en la barra de título se coloca el nombre de la aplicación.

Para realizar la búsqueda dentro de la tabla alumnos, se abre un recordset que pretenderá contener todos los campos de aquellos registros cuya cédula sea igual a la ingresada por el usuario. Un recordset es un objeto de visual basic que es invisible, pues, está en la memoria durante la ejecución del programa, pero que permite acceder a las tablas de la base de datos (que debe estar abierta previamente), Es decir, se “abre” y permite buscar, guardar o eliminar registros de una o varias tablas. Nótese que en el botón cmdBuscar, lo abrimos para buscar con una cadena SQL (“SELECT * FROM alumnos WHERE cedula='" + cedula + "'") aquellos registros cuya cédula sea igual a la que el usuario acaba de ingresar. La sintaxis es: rst.open cadenaSQL, variabe_base_datos, tipo_de_rst, modo rst es el objeto recordset que declaramos al inicio del proyecto cadenaSQL es la instrucción SQL en forma de cadena que sirve para seleccionar los registros variable_base_datos es la variable que abrió nuestra base de datos al inicio del programa tipo_de_rst es el tipo de recordset. Puede ser adOpenDynamic (utilizado para consultas de actualización de registros en múltiples tablas), adOpenTable (para abrir únicamente una sola tabla. No admite los INNER JOIN de SQL) y adOpenForwardOnly (recordset rápido muy utilizado para consultas ya que no permite actualización de registros) modo: es el modo de apertura del recordset. A grandes rasgos, puede abrirse en modo optimista (adLockOptimistic) o pesimista (adLockPessimistic). En modo optimista, se bloquea sólo el registro que se está actualizando y en modo pesimista se bloquea toda la tabla. Es importante para aplicaciones en red que se utilice mayormente el modo optimista para evitar inconvenientes a los usuarios. Por su parte, el recordcount es un método de ADO que permite determinar si existen registros o no. Devuelve un número entero (1,2,n…) dependiendo del número de registros que encuentre coincidientes con la consulta SQL del método open. Devolverá 0 si no existen registros coincidientes y un número negativo si la propiedad cursorlocation es diferente a adUseClient. La siguiente línea:

Me.txtApellido = rst!apellido Asigna el valor del campo apellido perteneciente al recordset rst al cuadro de texto txtApellido Nótese que la sintaxis rst!apellido indica que el campo apellido pertenece al recordset que acabamos de abrir. También puede utilizarse rst.fields(“apellido”) o rst.fields(0) para referirse al campo apellido por su nombre o por su índice dentro del conjunto del recordset. Se recomienda usar la primera o segunda sintaxis. Lo mismo ocurre con el resto de los campos.

12 Por último, la línea rst.close cierra el recordset que previamente teníamos abierto. De no cerrarlo, es posible que al intentar reabrirlo se dispare un mensaje de error. Por lo tanto, desde ahora adoptaremos la regla de “recordset que abre, recordset que cierra”. INFORMACIÓN IMPORTANTE: A lo largo del programa, se ha utilizado la función MsgBox la cual, muestra un cuadro de mensaje al usuario pudiendo también permitir que éste seleccione entre opciones como Si o No, Aceptar o Cancelar, etc. A continuación se describe con más detalle: MsgBox (Función) Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un tipo Integer correspondiente al botón elegido por el usuario. Sintaxis MsgBox(mensaje[, buttons][, title][) Parte

Descripción

Mensaje

Es el mensaje que aparece en el cuerpo del cuadro de mensaje

buttons

Corresponde a la suma de los valores que especifican el número y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botón predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0.

title

Opcional. Texto que se muestra en la barra de título del cuadro de diálogo. Si se omite title, en la barra de título se coloca el nombre de la aplicación.

Valores En el parámetro buttons pueden asignarse los siguientes valores: Constante

Valor

Descripción

VbOKOnly

0

Muestra solamente el botón Aceptar.

VbOKCancel

1

Muestra los botones Aceptar y Cancelar.

VbAbortRetryIgnore

2

Muestra los botones Anular, Reintentar e Ignorar.

VbYesNoCancel

3

Muestra los botones Sí, No y Cancelar.

VbYesNo

4

Muestra los botones Sí y No.

VbRetryCancel

5

Muestra los botones Reintentar y Cancelar.

VbCritical

16

Muestra el icono de mensaje crítico.

VbQuestion

32

Muestra el icono de pregunta de advertencia.

VbExclamation

48

Muestra el icono de mensaje de advertencia.

VbInformation

64

Muestra el icono de mensaje de información.

13 VbDefaultButton1

0

El primer botón es el predeterminado.

VbDefaultButton2

256

El segundo botón es el predeterminado.

VbDefaultButton3

512

El tercer botón es el predeterminado.

VbDefaultButton4

768

El cuarto botón es el predeterminado.

VbApplicationModal

0

Aplicación modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicación actual.

VbSystemModal

4096

Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes.

VbMsgBoxHelpButton

16384

Agrega el botón Ayuda al cuadro de mensaje.

VbMsgBoxSetForeground

65536

Especifica la ventana del cuadro de mensaje como la ventana de primer plano.

VbMsgBoxRight

524288

El texto se alínea a la derecha.

VbMsgBoxRtlReading

1048576

Especifica que el texto debe aparecer para ser leído de derecha a izquierda en sistemas hebreo y árabe.

El primer grupo de valores (0 a 5) describe el número y el tipo de los botones mostrados en el cuadro de diálogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botón predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman números para obtener el valor final del argumento buttons, se utiliza solamente un número de cada grupo. Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del código en vez de sus valores reales. Valores devueltos Constante

Valor

Descripción

vbOK

1

Aceptar

vbCancel

2

Cancelar

vbAbort

3

Anular

vbRetry

4

Reintentar

vbIgnore

5

Ignorar

vbYes

6



vbNo

7

No

8. Procedamos ahora a crear el código del botón cmdCancelar Private Sub cmdCancelar_Click() 'Desactiva TODOS los cuadros de texto... Me.txtApellido.Enabled = False Me.txtCedula.Enabled = False Me.txtDireccion.Enabled = False

14 Me.txtNombre.Enabled = False Me.txtTelefono.Enabled = False 'Limpia TODOS los cuadros de texto... Me.txtApellido.Text = "" Me.txtCedula.Text = "" Me.txtDireccion.Text = "" Me.txtNombre.Text = "" Me.txtTelefono.Text = "" 'Activa todos los botones de comando exeptuando Guardar y Cancelar Me.cmdBuscar.Enabled = True Me.cmdCerrar.Enabled = True Me.cmdEditar.Enabled = True Me.cmdNuevo.Enabled = True Me.cmdEliminar.Enabled = True Me.cmdGuardar.Enabled = False Me.cmdCancelar.Enabled = False End Sub

Lo único destacable que realiza el botón Cancelar es limpiar y desactivar todos los cuadros de texto y restaurar los botones a su estado original. 9. Es el momento del agregar código del evento Click el botón Guardar Private Sub cmdGuardar_Click() rst.CursorLocation = adUseClient 'Verifica que se hayan ingresado todos los valores en los textboxes antes de guardar... If Me.txtCedula.Text = "" Or Me.txtApellido.Text = "" Or Me.txtDireccion.Text = "" Or Me.txtNombre.Text = "" Or Me.txtTelefono.Text = "" Then 'Si hay algun textbox en blanco, se muestra un mensaje de error MsgBox "Debe ingresar todos los datos", vbExclamation Else 'De lo contrario, se procede al guardado del registro... 'Primero, busca si existe algun registro con la cedula que estamos intentando guardar... SQL$ = "SELECT * FROM alumnos WHERE cedula='" + Trim(Me.txtCedula.Text) + "'" rst.Open SQL$, db, adOpenDynamic, adLockOptimistic 'Si existen registros, pegunta si se desean actualizar los cambios... If rst.RecordCount > 0 Then If MsgBox("El registro ya existe. ¿Reemplazarlo?", vbQuestion + vbYesNo) = vbYes Then 'y se elimina el registro existente, para crearlo con los nuevos datos... db.Execute "DELETE * FROM alumnos WHERE cedula='" + Trim(Me.txtCedula.Text) + "'" Else 'Si se desea cancelar la operacion de guardado, rst.Close 'Cierra el recordset Exit Sub 'y sale de este procedimiento End If rst.AddNew 'Agrega un nuevo registro a la tabla alumnos 'Le asigna a los campos de la tabla alumnos, los valores respectivos de los textboxes rst!cedula = Trim(Me.txtCedula.Text) rst!nombre = Trim(Me.txtNombre.Text) rst!apellido = Trim(Me.txtApellido.Text) rst!Dir = Trim(Me.txtDireccion.Text) rst!telf = Trim(Me.txtTelefono) rst.Update 'Guarda los cambios en la tabla MsgBox "Registro Guardado", vbInformation 'Y muestra un mensaje final cmdCancelar_Click 'Limpia los cuadros de texto End If rst.Close 'Cierra el recordset End If End Sub

El funcionamiento del botón cmdGuardar es muy sencilo. Primero se verifica que todos los textboxes tengan algún valor para evitar que se creen registros inconsistentes. Luego, se busca si en la tabla existe algún registro con la cédula que está en el txtcedula para asegurarnos que

15 no estamos repitiendo registros. (Nota: de todas maneras en la tabla ya hemos definido que la cédula es un índice que no admite duplicados). Si por alguna casualidad la cédula ya existe, sencillamente preguntamos si se desea actualizar los datos existentes por los nuevos. Si responde “Si”, se borra el registro anterior y se procede a crear el nuevo. De lo contrario, sale del procedimiento. Si la cédula no existe, sencillamente se crea un registro como nuevo. Finalmente se guardan los cambios y limpian los objetos. 10. Finalmente, agregamos el código del botón cmdEliminar tal como sigue: Private Sub cmdEliminar_Click() 'Verifica que se haya cargado un registro en pantalla... 'Si el textbox cedula no tiene nada, significa que no se ha cargado... If Me.txtCedula.Text = "" Then 'Y muestra un error al usuario MsgBox "Imposible eliminar sin un registro cargado", vbCritical Exit Sub End If 'De lo contrario, pregunta si está seguro e eliminar el registro... 'Si responde "SI" procede a borrarlo de la tabla... If MsgBox("¿Está Seguro?", vbQuestion + vbYesNo) = vbYes Then db.Execute "DELETE * FROM alumnos WHERE cedula=' " + Trim(Me.txtCedula.Text) + " ' " 'Y muestra un mensaje al usuario... MsgBox "El registro fue eliminado", vbInformation End If End Sub

11. Para probar la ejecución del programa, presiones CONTROL+F5 e intente crear, modificar, y eliminar registros.

EJERCICIO: Diseñe un formulario con acceso a datos para actualizar los datos de las materias que pudiesen cursar los alumnos de un tecnológico. Cada materia debe tener un código único, nombre y unidades de crédito a cursar. Nota: deberá diseñar una tabla en Access dentro de la base de datos central Con lo visto hasta el momento, usted podrá crear formularios sencillos con acceso a datos, los cuales, le permitirán agregar, modificar, eliminar y buscar registros dentro de una tabla o conjunto de tablas. Es el momento de continuar la labor investigativa y refinar el código visto hasta ahora. Recuerde que la programación tiene numerosas vías para llegar a la solución de un problema. BIBLIOGRAFÍA RECOMENDADA: LA ESENCIA DE VISUAL BASIC 4. Mark Steven Heymann APRENDA VISUAL BASIC 5 YA! Michael Halvorson VISUAL BASIC 6.0 Luis Joyanes Aguilar BASES DE DATOS EN VISUAL BASIC 6. Mc. Manus

16 MENÚS EN VISUAL BASIC Un menú es una lista de opciones que se muestran al usuario y donde éste puede seleccionar una o varias de ellas dependiendo de las acciones que desee realizar en el sistema. En este caso, vamos a diseñar un menú de la siguiente manera: Archivo Alumnos Profesores Salir

Consultas Reportes Listado de alumnos Reporte de Alumnos Listado de Profesores Reporte General de profesores

1. Lo primero que debemos hacer es agregar un formulario en blanco a nuestro proyecto que será nuestro formulario de inicio (ya que desde allí invocaremos todas las posibles opciones del sistema) y para ello, hacemos clic en el menú Proyecto / Agregar Formulario y adicionamos un nuevo formulario en blanco en nuestro proyecto. 2. Ahora, hacemos clic en el menú Herramientas / Editor de Menú y aparecerá la siguiente ventana: 3. En el caption coloque el título del menú (puede incluir espacios en blanco y caracteres especiales y utilizar el “&” para asignar una tecla aceleradora. En este caso, escribamos “&Archivo” 4. En el name escriba el nombre del objeto. No puede tener espacios en blanco, ni caracteres especiales ni empezar con números. Coloque mnuArchivo 5. Index: es el índice del menú en caso de que se utilicen menús con el mismo nombre (arreglos de objetos) 6. El Shortcut permite asignar una combinación de teclas al menú Checked Indica si el menú al ser seleccionado tendrá una marca al estilo de una tilde Enabled: Indica si el menú está activado o no Visible: Indica si el menú está visible o no WindowList: Permite que el menú muestre una lista de ventanas secundarias dentro de aplicaciones de múltiples documentos (MDI) 7. Una vez que hemos dado el nombre y título al menú Archivo, damos Enter y la figura muestra lo siguiente: 8. Podrá notar que se agrega nuestro menú y el cursor se ubica una línea justo debajo de la palabra “&Archivo” 9. Ahora, clickeamos en la flecha derecha para indicarle a Visual Basic que el elemento de menú que crearemos ahora está dentro de la lista Archivo. 10. Hecho esto, notamos que aparece una línea punteada y escribimos en el caption “Alumnos”. Al mismo tiempo, en el name escribimos mnuArchivoAlumnos. Así sabemos que

17 estamos dentro del elemento “Alumnos” que pertenece al menú “Archivo” y presionamos Enter. 11. Ahora, agregamos el elemento “Profesores” dentro del menú Alumnos. El nombre que le daremos será mnuArchivoProfesores y por último el menú Salir al cual le daremos el nombre mnuArchivoSalir. 12. Para crear el menú Consultas debemos hacer clic en la línea en blanco que queda luego de crear el elemento Salir del menú Archivo. Allí, debe clickear sobre la flecha izquierda para colocar el menú Consultas al mismo nivel del menú Archivo. 13. Al estar en el nivel del menú Archivo, coloque el caption “Consultas” y en name escriba mnuConsultas y presione Enter 14. Agregue los elementos Listado de Alumnos y Listado de Profesores a los cuales deberá asignar el nombre mnuConsultaAlumnos y mnuConsultaProfesores respectivamente. 15. Finalmente coloque el menú Reportes al mismo nivel de los menús Archivo y Consultas. Asigne el nombre mnuReportes y dentro de éste, cree los elementos mnuReportesAlumnos y mnuReportesProfesores con el caption “Reporte de Alumnos” y “Reporte de Profesores” respectivamente. El resultado final queda así: 16. Finalmente, clickee en Aceptar para ver el menú en su formulario. 17. Ahora, haga click sobre el formulario y presione F4 para mostrar la ventana Propiedades 18. Busque la propiedad Nombre (la primera que aparece en la lista) y escriba frmMain (este es el nombre que tendrá nuestro formulario principal) 19. Ahora, abra el módulo inicial y ubíquese en la línea de código: Sub main() Frmalumnos.show End Sub 20. Reemplace la línea de código frmalumnos.show por frmMain.show 21. Ahora, abra el formulario de principal (frmmain) y clickee sobre el menú Archivo que acabamos de crear. Luego sobre el ítem Alumnos y se abrirá la siguiente ventana de código: 22. Agregue la siguiente línea de código: Frmalumnos.show Esto quiere decir que cuando se clickee sobre esta opción se mostrará el formulario de alumnos.

18 23. Guarde los cambios y Ejecute el proyecto con CONTROL+F5 para probar su funcionamiento. 24. En el menú Salir escriba la línea de código End para que el usuario salga del sistema cuando seleccione esta opción. 25. Ahora, abra el formulario frmAlumnos y en el botón cmdCerrar reemplace el código End por Unload Me quedando así: Private sub cmdCerrar_Click() Unload Me End Sub Esto indicará que cuando el usuario clickee en el botón Cerrar de dicho formulario, no salga totalmente del sistema, sino que solamente salga del formulario de alumnos. LAS CUADRÍCULAS EN VISUAL BASIC Las cuadrículas (también llamadas rejillas, gradillas, o grids) son objetos muy útiles ya que permiten presentar la información de una manera integrada. Constan de una tabla dividida en filas y columnas que pueden ser llenadas con datos procedentes de una base de datos o desde otros objetos del programa. Existen numerosos objetos de cuadrícula que podemos utilizar. En este caso, emplearemos el Microsoft Flex Grid que es proporcionado por Visual Studio 6.0 1. Dado que el FlexGrid no es un control intrínseco (no se muestra en el cuadro de controles de VB) es necesario agregarlo. Para ello, presionamos CONTROL+T para mostrar los Componentes (objetos ActiveX) 2. En la lista buscamos Microsoft FlexGrid Control 6.0, lo marcamos y presionamos Aceptar 3. Al hacer esto, se agrega el icono a nuestro cuadro de controles 4. Agreguemos un nuevo formulario a nuestro proyecto (menú proyecto / formulario) al que llamaremos frmConsultaAlumnos y allí insertamos un nuevo Flexgrid tal como se muestra a continuación: 5. Hagamos un clic sobre el grid y cambiamos la propiedad “nombre” del objeto por grdConsulta 6. Hagamos doble click sobre el formulario y se abrirá el evento Form_Load() y agregue el siguiente código:

Private Sub Form_Load() Me.grdconsulta.Clear 'Limpia la cuadricula... Me.grdconsulta.Rows = 2 'Dibuja 2 lineas (filas) en blanco 'La primera linea es para los titulos y la segunda para datos Me.grdconsulta.Cols = 5 'Dibuja 5 columnas (una para cada campo de la tabla alumnos) Me.grdconsulta.ColWidth(0) Me.grdconsulta.ColWidth(1) Me.grdconsulta.ColWidth(2) Me.grdconsulta.ColWidth(3) Me.grdconsulta.ColWidth(4)

= = = = =

1000 1000 1000 1000 1000

'Ancho de la primera columna en pixeles 'Ancho de la segunda columna en pixeles 'y asi sucesivamente...

19

Me.grdconsulta.TextMatrix(0, Me.grdconsulta.TextMatrix(0, Me.grdconsulta.TextMatrix(0, Me.grdconsulta.TextMatrix(0, Me.grdconsulta.TextMatrix(0,

0) 1) 2) 3) 4)

= = = = =

"cedula" 'Encabezado de la primera columna "Nombre" 'Encabezado de la segunda columna "Apellido" 'y asi sucesivamente "Direccion" "Telefono"

rst.CursorLocation = adUseClient ssql = "SELECT * FROM Alumnos ORDER BY cedula" 'Lee todos los registros de la tabla alumnos rst.Open ssql, db, adOpenDynamic, adLockOptimistic 'Abre el recordset If rst.RecordCount = 0 Then 'Si no encuentra registros, muestra un error MsgBox "No existen registros para mostrar", vbCritical Else 'De lo contrario, lee cada registro y agrega una linea con los datos... For i% = 1 To rst.RecordCount 'El additem permite agregar una nueva linea a la cuadricula... 'En este caso, se coloca el valor de cada campo separados por una tabulacion para que se vayan moviendo de columna en columna... Me.grdconsulta.AddItem rst.Fields(0) + vbTab + rst.Fields(1) + vbTab + rst.Fields(2) + vbTab + rst.Fields(3) + vbTab + rst.Fields(4) 'y luego se mueve al siguiente registro... rst.MoveNext Next i% End If rst.Close 'Una vez terminado todo el recorrido por el recordset, se cierra End Sub

Veamos lo que hace el código que acabamos de agregar… Primeramente, se observa el evento clear que borra todo el contenido del flexgrid, dejándolo con 2 filas y 2 columnas de manera predeterminada. Luego, se le indica al programa que debe agregar 5 columnas (cedula, nombre, apellido, dirección y teléfono). Esto se realiza a través de la propiedad Cols. Al mismo tiempo, se le indica que se dibujarán 2 líneas (una para los encabezados o títulos de las columnas y otra que quedará en blanco). Para esto, se utiliza la propiedad Rows Posteriormente, se le otorga el ancho a cada una de las columnas (ColWidth). El mismo debe estar especificado en Pixeles. Luego, puede observarse la propiedad TextMatrix. Este es muy importante ya que a través de ella, podemos “rellenar” la cuadrícula con el texto que deseemos. En este caso, se utiliza para colocar los encabezados de columnas. De allí las líneas similares a: Me.grdconsulta.TextMatrix(0, 0) = "cedula" Nótese que aquí estamos colocando el encabezado a la columna 1 de la línea 1 de nuestra cuadrícula. Sin embargo, es de hacer notar que nuestra cuadrícula comienza a contar las filas y columnas desde “Cero” (0). Esto quiere decir que si establecemos TextMatrix(1,2) en realidad hacemos referencia a línea número dos (2) y columna número tres (3) Importante: Es un error muy común pensar que al decir TextMatrix(1,1) se está referenciando a la primera línea y primera columna de la cuadrícula, lo cual como ya se ha visto representa falta de conocimiento sobre el manejo de los grids. Continuando con el código, notamos que se abre un recordset con todos los registros de la tabla Alumnos (tal como se nota en la cadena SQL) y se recorre el recordset registro por registro con la estructura For de Visual Basic. El For permite repetir una serie de instrucciones ubicadas entre el For y Next. Allí, se puede observar que se utiliza el método AddItem para agregar los datos extraídos de la tabla alumnos en cada una de las columnas de la cuadrícula. Me.grdconsulta.AddItem rst.Fields(0) + vbTab + rst.Fields(1)

20

El additem funciona así: Se agrega una línea en blanco. A la primera columna se le asigna el valor del primer campo del recordset (es decir el campo cédula) que tiene el índice cero (0). Luego, se le suma un carácter de tabulación para que el cursor se mueva a la siguiente columna dentro de esa línea y coloca el dato para la columna nombre, es decir, el lee el segundo campo del recordset (rst.fields(1)) y sigue sumando tabulaciones y campos hasta terminar con el último. Posteriormente el rst.movenext permite que una vez leído y mostrado un registro, continué con el siguiente hasta que se terminen de leer todos. Al final se cierra el recordset. IMPORTANTE: El FlexGrid no permite escribir directamente sobre las celdas de la cuadrícula. Para ello debe recurrirse a artificios de programación, aunque existen en el mercado otras cuadrículas muy funcionales que permiten la escritura directamente sobre ellas. Es de destacar que en Visual Basic puede insertarse cualquier tipo de cuadrícula siempre y cuando sea un control ActiveX (OCX). Entre los más populares, se encuentran: DataGrid y DBGrid: Incluida en Visual Studio 6.0. Aunque permite edición y agregación directa de registros sobre la cuadrícula, es limitada en cuanto a la cantidad de propiedades, métodos y eventos que proporciona. VideoSoft FlexGrid: de VideoSoft Corp. Presenta muchas bondades de edición sobre la cuadrícula. Excelente opción para jerarquizar datos, cambiar el modo de visualización y contiene muchos eventos, métodos y propiedades personalizables. Se puede comprar por Internet. Janus GridEX: Además de las potencialidades proporcionadas por el VideoSoft FlexGrid, tiene un generador de propiedades muy fácil e intuitivo de manipular. También se compra por internet. Hasta este punto, se ha explorado el uso básico del FlexGrid. Para profundizar más acerca del funcionamiento de este objeto, revisa la ayuda de Visual Basic 6.0

EJERCICIO: Diseña un formulario con un MsFlexGrid que reciba datos a partir de la tabla Profesores previamente diseñada en Access. Invoca este formulario desde la pantalla principal del sistema.

21

INFORMACIÓN COMPLEMENTARIA USO DE LOS OBJETOS PICTUREBOX, IMAGE Un control PictureBox puede mostrar un gráfico a partir de un mapa de bits, un icono o un metarchivo, así como un metarchivo mejorado, un archivo JPEG o un archivo GIF. Recorta el gráfico si el control no es lo bastante grande para mostrar la imagen completa Para vincular una imagen se utiliza la propiedad picture y la función LoadPicture así: picMiPictureBox.Picture = Loadpicture(“C:\IMAGENES\miimagen.jpg) Aquí, picMiPictureBox es el objeto PictureBox Picture es la propiedad que asigna la imagen LoadPicture es una función de Visual Basic que llama a la imagen que está ubicada en la ruta especificada. En este caso, se “vincula” la imagen. Si la misma se borra de la ubicación C:\IMAGENES, el LoadPicture generará un error.

El objeto Image se utiliza para mostrar un gráfico. Un control Image puede mostrar un gráfico desde un mapa de bits, un icono o un metarchivo, así como un metarchivo mejorado, un archivo JPEG o archivos GIF. El control Image utiliza menos recursos del sistema y actualiza con más rapidez que un control PictureBox, pero sólo admite un subconjunto de las propiedades, los eventos y los métodos de PictureBox. Use la propiedad Stretch para determinar si el gráfico se escala para ajustarse al control o viceversa. Aunque puede colocar un control Image dentro de un contenedor, un control Image no puede actuar como contenedor. EL COMBOBOX Y LISTBOX Un control ComboBox combina las características de un control TextBox y un control ListBox; los usuarios pueden introducir información en la parte del cuadro de texto o seleccionar un elemento en la parte de cuadro de lista del control. Para agregar o eliminar elementos en un control ComboBox, use el método AddItem o RemoveItem. Establezca las propiedades List, ListCount y ListIndex para permitir a un usuario tener acceso a los elementos de un control ComboBox. Como alternativa, puede agregar elementos a la lista mediante la propiedad List en tiempo de diseño. Un control ListBox muestra una lista de elementos entre los cuales el usuario puede seleccionar uno o más. Si el número de elementos supera el número que puede mostrarse, se agregará automáticamente una barra de desplazamiento al control ListBox. Si no se selecciona ningún elemento, el valor de la propiedad ListIndex será -1. El primer elemento de la lista es ListIndex 0 y el valor de la propiedad ListCount siempre es uno más que el mayor valor de ListIndex. Para agregar o eliminar elementos de un control ListBox, use el método AddItem o RemoveItem. Establezca las propiedades List, ListCount y ListIndex para permitir que un usuario tenga acceso a elementos del ListBox. También puede agregar elementos a la lista mediante la propiedad List en tiempo de diseño.

22

REPORTES EN VISUAL BASIC Para la generación de reportes en Visual Basic, es necesario instalar el complemento Crystal Reports, el cual, es un sencillo e intuitivo generador de reportes producido por Seagate Software e incluido en Visual Studio 6.0. La versión a utilizar será la 4.5 (ya que forma parte de VS 6.0), aunque existen versiones posteriores en el mercado. La creación de un reporte, se divide en dos etapas: 1. El diseño del archivo de reporte (plantilla del reporte), el cual, tiene extensión .rpt 2. La vinculación del archivo .rpt con visual Basic a través del control ActiveX de Crystal Reports Etapa 1. Diseño del archivo .rpt 1. En el IDE de Crystal Reports, clickear en el botón “Nuevo” y se desplegará la ventana para elegir el tipo de informe. Se recomienda utilizar “Estándar” para informes con grupos y subgrupos, “Listado” para reportes de tipo lista de registros y “Resumen” para reportes que ameriten. Sumarizar la información. Elija “Estándar”

Luego, se abrirá una ventana donde deberá indicar el archivo de base de datos que contiene los datos para el informe. La opción “Archivo” funciona para archivos de Access 97. A partir de la versión 2000, se utiliza la opción “SQL/ODBC”. Haga clic en esta última.

Después, debe indicar el tipo de origen ODBC que utilizará. Para Access 2000 en adelante, utilice ODBC – Ms Access Database

Posteriormente, indique la(s) tabla(s) que formarán parte del informe. En este caso, seleccione la tabla “Alumnos”

23 Ya se ha incluido la tabla en el informe. El paso siguiente, es indicarle los campos que se mostrarán en el mismo.

Seleccione el campo que desee agregar al informe y clickee en “Agregar” para que se coloquen en la lista de la derecha. También puede cambiar la leyenda del mismo utilizando la opción “Encabezado del informe”

Ahora, deberá indicar el campo que servirá para ordenar el informe. Esta opción es obligatoria.

Ahora, deberá indicar cuáles campos se totalizarán al final del informe. En este caso, no se utilizará.

24 Ahora, será necesario indicar la “fórmula de selección de registros”. Esta no se utilizará en tiempo de diseño, sino en tiempo de ejecución. En la ventana final, presione “Informe Previo”

El informe resultante se verá como el siguiente:

Un informe, tiene varias secciones: Título: Se imprime una vez por cada informe (se recomienda para efectos de identificación de la empresa) Encabezado: Se imprime en cada página del informe. Se recomienda colocar aquí, los títulos de los campos a mostrar. En ocasiones, también es importante utilizar esta sección para mostrar el encabezamiento de la empresa en lugar de la sección “Título”.

25 Detalle: Se imprime por cada registro del informe. Aquí es prudente colocar los campos que se desean mostrar en el reporte. Pie de Página: Se imprime una vez por página. Es prudente colocar aquí, los números de página o datos similares. Resumen: Se imprime una vez por informe (al final). Es recomendable utilizarlo para mostrar sumatorias o totales generales al final del reporte. Fase 2. Vinculación por Visual Basic 6.0 Para tal efecto, es necesario abrir un nuevo proyecto o uno existente, e insertar el objeto “Crystal Reports Control” presionando Control + T (Componentes)

Al agregar el componente al proyecto, deberá incluir un objeto Crystal Reports dentro de un formulario. Este objeto es visible en tiempo de diseño e invisible en tiempo de ejecución. Colocar el nombre “rpt” en el Objeto insertado CrystalReports1 del formulario y agregar un botón con el caption “Generar Reporte” con el nombre “Generar”

Private Sub cmdGenerar_Click() 'Indica la ruta y nombre del reporte .rpt Me.rpt.ReportFileName = App.Path + "\PRUEBA.RPT" 'El reporte se mostrará maximizado Me.rpt.WindowState = crptMaximized 'Muestra el reporte por pantalla Me.rpt.Action = 1 End Sub Observación: Es obligatoria la creación de un origen de datos ODBC para la vinculación con los reportes diseñados en Cristal Reports. Para que funcione el ejemplo anterior, el nombre del DSN debe ser “Reportes”. Propiedad LogonInfo: (0)= Indica el índice de archivo mdb que se vinculará DSN=”Reportes” =Indica el nombre del DSN previamente creado UID=admin. =Nombre de usuario. En Access este es el usuario por defecto PWD= Indica el password hacia la base de datos DSQ=Indica el nombre del archivo MDB a vincular

26 EMPAQUETADO Y DISTRIBUCION DE UNA APLICACIÓN EN VISUAL BASIC 6.0 Es el momento de preparar nuestra aplicación para la “venta”. Para ello, es necesario Compliarla, empaquetarla y distribuirla. COMPILAR: Es el proceso de convertir el proyecto a código binario entendible por la maquina (código objeto .OBJ) y luego, enlazarlo con las bibliotecas del lenguaje para crear un .EXE El proceso de compilación es como se describe a continuación: 1. Elija la opción Archivo / Generar y aparecerá esta ventana donde deberá especificar el nombre del archivo ejecutable y su ubicación. 2. Coloque el nombre sistema.exe y ubíquelo en C:\SISTEMA 3. Haga clic en el botón opciones para que aparezca la siguiente ventana:

4. En la sección numero de versión puede especificar la versión primaria, secundaria y la revisión, que se podrá incrementar automáticamente cada vez que se compile el proyecto. 5. Se puede configurar el icono de la aplicación colocando la propiedad icon del formulario inicial dependiendo del icono deseado (archivo .ico). 6. Asimismo, se puede colocar los comentarios de la compilación, derecho de autor y argumentos de la línea de comandos (en caso de que se requiera). 7.Finalmente, seleccione Aceptar (OK) para iniciar la compilación Visual Basic 6.0 admite dos modos de compilación: código nativo que significa que cada archivo frm o bas (o cualquier otro que integre el proyecto) queda encapsulado dentro de un ,exe y código p-code o seudocódigo: donde cada archivo del proyecto se compila “independientemente” y se requiere la presencia de los archivos objeto para que el .exe se ejecute normalmente. Se ha extendido ampliamente la compilación por código nativo. EMPAQUETAR una aplicación en VB 6.0 consiste en recopilar todos los componentes necesarios para que un programa compilado pueda ejecutarse en un equipo sin necesidad de instalar el lenguaje. Al empaquetar un proyecto, se deben incluir los OCX, DLL’s, Ejecutables, Bases de datos, iconos, archivos complementarios y demás componentes requeridos. DISTRIBUIR: Implica seleccionar los dispositivos de almacenamiento pertinentes para que el producto empaquetado pueda ser instalado en tantos equipos como se desee.

27 Para realizar este trabajo, Visual Basic cuenta con el Asistente para Empaquetado y Distribución. 1. Abra el menú Inicio y en el grupo de programas “Microsoft Visual Studio”, luego, “Herramientas de Visual Studio” 2. Luego, seleccione “Asistente para Empaquetado y Distribución” 3. Presione el botón “Empaquetar para iniciar el empaquetado del proyecto. 4. En este punto, el asistente buscará los componentes necesarios para ejecutar el proyecto 5. Luego, se pedirá que seleccionemos una secuencia de comandos preestablecida para la instalación (si existe). En este caso, seleccione “Ninguno” y presione “Siguiente”

6. En el siguiente paso, seleccione “Paquete de instalación estándar”, es decir, el producto final, será un programa del tipo “SETUP.EXE” tal como ocurre con la mayoría de los productos desarrollados para Windows.

7. Luego, seleccione la carpeta donde se generarán los archivos del paquete. (se le asignará el nombre “paquete” por defecto)

28 8. En el siguiente paso, seleccione alguno de los componentes de la lista si son necesarios (en este caso, no se utilizarán). Presione “Siguiente”

9. Luego, si se detectan archivos para los que no se encuentra información de dependencia, debe estudiar cada caso. De no representar ningún problema, tilde dichos componentes y clickee en “siguiente”

10. Posteriormente, se muestra una lista de los archivos necesarios para ejecutar el proyecto. Asegúrese de incluir los MDB de access, y los archivos que no hayan sido detectados por el asistente.

11. Seleccione si desea empaquetar en un solo archivo .CAB o múltiples archivos (Esta última opción se utiliza cuando se desea distribuir en múltiples diskettes – No es recomendada) 12. Luego, se le pedirá un título para su instalador y el grupo de programas que se creará en el menú inicio cuando se instale su aplicación.

29

13. Luego, debe seleccionar la ubicación donde se instalarán sus archivos (normalmente no debe tener modificaciones salvo casos especiales)

14. Por último, se especifican los archivos compartidos. Si nuestro programa los utiliza, debemos indicarle esto.

15. Finalmente, se guardará la secuencia de comandos para instalación. Si posteriormente es necesario volver a empaquetar, se puede seleccionar esta secuencia para evitar el trabajo de volver a indicar todos los componentes y archivos

30

16. Finalmente, el asistente comenzará a generar los archivos .CAB y nuestro paquete de distribución quedará listo

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.