Sei sulla pagina 1di 70

Introducción al Lenguaje

Programación Visual Basic: ¿Por qué objetos y eventos?

La mayoría de aplicaciones Windows, así como otros programas, emplean una


Interfaz Gráfica de Usuario (GUI), consistente en una o más pantallas llenas de objetos,
menús, botones, líneas, cuadros de edición etc, todos inactivos hasta que el usuario
provoca un evento al hacer clic con el ratón sobre un botón, barra de menús, en la
formas, o un comando de tecla o de vos. Una ves que el evento ocurre, el usuario
espera que cada objeto realice su función y se comporte de una manera confiable.

Este requerimiento de confiabilidad y predecibilidad es el que hace que la


programación orientada a objetos y manejada por eventos sea perfecta para el
desarrollo de aplicaciones Windows. Visual Basic proporciona un ambiente de desarrollo
donde el trabajo tales como objetos y eventos llega a ser un proceso directo, y lo más
importante, bien estructurado.

Los Pasos en este proceso son:


 Crear y dar nombre a una nueva forma
 Trazar y dar nombres a los objetos que se desplegarán en la forma.
 Relacionar con los objetos significativos el código que se ejecutará en
respuesta a eventos del usuario o generados por el sistema
Ambiente Visual

Cuando iniciamos Visual Basic, nos mostrará la


siguiente Ventana donde podemos seleccionar, que
es lo que vamos a desarrollar.

En este curso nos centraremos en las primera


opcione Estándar EXE.

Seleccionamos el tipo de proyecto y presionamos


Abrir, si ya tenemos un proyecto seleccionamos la
lengüeta Existente o Reciente para que nos muestre
los proyectos recientes.

Luego le aparacerá el entorno inicial de Visual Basic :

Barra de menú
Barra de Herramientas

Explorador
de Proyectos

Ventana de
Cuadro de
Propiedades
herramientas

Ventana de
Posición de
formulario

Ventana del formulario


inicial
Conceptos Básicos

Eventos: Son las acciones que se producen y que nos interesan identificar para
establecer algún tipo de respuesta por parte del objeto.

Ejemplo de eventos:
- Hacer clic sobre el objeto
- Al Cargar el objeto
- Al Cerrar el objeto

Propiedades: Es un atributo nominal de un objeto de programación. Las propiedades


definen las características del objeto, tales como tamaño, color, longitud, diámetro, o
algunas veces, la manera en la cual se comporta el objeto, por ejemplo si un cuadro de
texto aceptará líneas de texto múltiples o sencillas.

Ejemplo Objeto : gato


Propiedades : gato.color = negro
gato.height = 10

Métodos: Una descripción completa de un objeto, no se limita a sus propiedades,


debe comprender una definición de lo que hace

Ejemplo Metodo : gato.juega


gato.come
gato.duerme
Nombre sus Objetos

Un buen hábito de programación es el de establecer la propiedad Name de los objetos


significativos de su aplicación, aquellos cuyas propiedades y métodos espera usted usar
en el código. Visual Basic asigna automáticamente un nombre a cada objeto:
Command1, Command2, texbox1, texbox2.

Es convencional usar un prefijo de tres letras minúsculas cuando se nombran los objetos
significativos, de esta forma podrá reconocer a que objeto se refiere en el código del
programa por cmdOK o frmPrincipal que utilizando command7 o form3.

Objeto Visual Basic Prefijo Ejemplo


Forma frm frmInicio
Botón de Comando cmd, btn cmdSalir, btnAdicionar
Etiqueta lbl lblOpciones
Cuatro de Texto txt txtCodigo
Barras de desplazamiento hsb, vsb vsbHora, hsbRango
Menu mnu mnuArchivo
Botón de Opción opt optSexo
Cuadro de Verificación chk chkSonido
Cuadro de lista lst lstColores
Marco fra fraMarco
Cuadro de dibujo pic dicDibujo
Imagen img imgLogotipo
Panel pnl pnpPanel
Lineas lin linLinea
Temporizador tmr tmrTiempo
Cuadriculas grd grdDatos

Variables y Constantes

Una variable es una ubicación de almacenamiento temporal con nombre que se


encuentra en memoria. Una variable es capaz de contener un cierto tipo de datos que
pueden modificarse durante la ejecución del programa.

Las variables en VisualBasic, deben limitarse a 255 caracteres, empezar con un


carácter alfabético y no pueden contener un punto. Tampoco se pueden usar nombres
de variables, las palabras reservadas como por ejemplo: Sub, End o Function.
Tipos de Variables

Tipo de Datos Tamaño de Almacenamiento Rango


Byte 1 byte 0 a 255
Boolean 2 bytes True o False
Integer 2 bytes -32768 a 32767
Long (long integer) 4 bytes -2147483648 a 2147483647
Single 4 bytes -3.40E38 a 3.40E38
Double 8 bytes -1.80E308 a 1.80E308
Currency 8 bytes -9.22E14 a 9.22E14
Date 8 byes 1/1/100 a 31/12/9999
Objeto 4 bytes Referencia a cualquier objeto
String 1Caracter/1 byte Aprox 65,500 Bytes Max
Variant Depende del dato Determinado por el tipo
User Define Depende del dato Determinado por el tipo

Declaraciones de variables

Para declarar variables en Visual Basic, lo hacemos con la palabra reservada


Dim(Public, Private o Static) seguida del nombre de la misma y luego el tipo:

Sintaxis:
Dim “nombre” as “tipo de variable”

Ejemplo:
Dim ciudad as string

(DIM) Es la abreviatura de Dimensión, esto reserva espacio en memoria para la variable


cuando se ejecute el programa y permitirá a VB que tipo de datos deberá guardar en
dicha variable.

Declaración Explícita

En Visual Basic no es necesario declarar una variable antes de utilizarla. Sin embargo,
esta forma de trabajar puede ser una fuente de errores.

Ejemplo:
Dim M As Integer, N As Integer
VarTEmp = M + N

N = VaTemp
En este ejemplo, VarTEmp no se ha declarado explícitamente. Esto no supone un Error,
ya que Visual Basic se encarga de crear dicha variable. Ahora observe que, por error, el
nombre de esa variable se ha escrito mal en la última sentencia. Cando Visual Basic
encuentra un nuevo nombre no puede determinar si es debido a un error o a la
definición de una nueva variable.

Para evitar este tipo de errores, podemos indicar a Visual Basic que genere un mensaje
de error siempre que encuentre una variable no declarada explícitamente. Para ello,
escribiremos la sentencia siguiente en la sección de Declaraciones del formulario, del
módulo o de la clase:

Option Explicit

Esta sentencia opera sólo en el formulario o en el módulo donde se haya puesto. Para
tener esa opción activa para todo el código de una aplicación, ejecute la orden Opciones
del menú Herramientas, elija el dialogo Entorno y Seleccione la opción Declaración de
Variables Requerida. Seleccionada esta opción agrega la sentencia Option Explicit en
cualquier nuevo modulo que creemos.

Alcances de las variables

El alcance de las variables se refiere al área del programa en las cuales es visible
la variable; es decir en áreas del proyecto tendremos disponible las variables.

Las variables declaradas dentro de funciones o procedimientos, será de alcance


local. Estas variables son reinicializadas cada ves que se ejecuta el procedimiento. Las
variables de nivel de formulario, estarán disponibles para todos los procedimientos del
formulario.
 Variables Publicas: se utilizan en todo el proyecto

Cuando declaramos una variable como publica en un modulo de programa o en el


formulario inicial, podremos utilizar esta variable en todo el proyecto:

Ejemplo
Public NoFactura as long

 Variables Privadas: se utilizan sólo en el procedimiento

Estas variables estarán disponibles solo dentro de nuestro formulario o


procedimiento, según el lugar donde se haya declarado:

Ejemplo
Dim NoFactura as long

 Variables Estáticas: No pierden su valor

Con esta forma de declarar variables conseguiremos que las variables locales no se
creen y se destruyan al entrar y salir de los procedimientos donde fueron declaradas
sino que se mantenga su valor durante todo el periodo de ejecución de la aplicación.
De esta forma a entrar en algún procedimiento las variables recuerdan el valor que
tenían cuando se salió de él.

Ejemplo
Static Nombre

Resumen de Alcance de las Variables

Alcance Declaración

Local Dim, Static (Dentro de un procedimiento)

Módulo Dim o Private (sección de declaraciones del módulo)

Global Public (sección de declaraciones de un módulo)

A nivel del módulo, no hay diferencias entre Dim y private, pero se aconseja utilizar
private en contraste con Public
Matrices

Para declarar matrices debemos colocar entre paréntesis el número de elementos


de los que constará a continuación del nombre de la variable:

Dim medidas(9) as integer

De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9


Podemos obligar a que el primer elemento de una matriz tenga el índice con valor 1.

Las matrices multidimensionales se declaran de la siguiente forma:

Dim medidas(1 to 10, 1 to 10) as integer

Tipos de datos definidos por el usuario

El usuario puede definir los datos en VB en la sección General de Declaraciones de un


modulo de código, usando la palabra clave Type y End Type. Ej:

Type empleado ‘ Crear tipo definido por el usuario.


NoEmpleado As integer
Nombre As String(30)
FechaIngreso as date
Salario As doublle
End Type

Constantes

Como su palabra lo dice es Información que no varía hace más fácil la comprensión del
código y permite modificar un valor en un solo lugar no ocupa espacio extra, Ejemplo:

Const Mínimo = 1, Máximo = 10


Operadores

La tabla siguiente muestra un conjunto de operadores comunes que soporta Visual


Basic para utilizarlos en programación:

Operador Operación que realiza


+ Suma
- Resta
* Multiplicación
/ División
\ División Entera
Mod Residuo de la división entera
^ Exponenciación
& Concatenación
=, <>,<,>,<=,>= Igual, diferente, menor, mayor........

Conversiones

Visual Basic nos proporciona varias funciones de conversión de datos, las cuales nos
permiten convertir el valor de una variable al tipo de variable correcto. Esto es
importante cuando trabajamos con datos Variant y queremos convertirlo a otro tipo
de variable más exacta o para realizar validaciones en los datos.

CBol(expresión) conversión a un valor tipo Boolean


CByte(expresión) conversión a un valor tipo Byte
CCur(expresión) conversión a un valor tipo Currency
CDate(expresión) conversión a un valor tipo Date
CDbl(expresión) conversión a un valor tipo Double
CInt(expresión) conversión a un valor tipo Integer
CLng(expresión) conversión a un valor tipo Long
CSng(expresión) conversión a un valor tipo Single
CStr(expresión) conversión a un valor tipo String
CVar(expresión) conversión a un valor tipo Variant
CErr(expresión) conversión a un valor tipo Error
E/S (Entradas y Salidas) Sencillas

 La Función Inputbox()

La función Inputbox(), despliega un mensaje en un cuadro de diálogo, espera a


que el usuario introduzca el texto o seleccióne un boton y luego devuelve el contenido
del cuadro de texto. El valor que devuelve la función es un valor tipo variant .

Sintaxis:
Valor = inputbox (Mensaje,Titulo,omisión,10,10,ArchAyuda,Context)

Ejemplo:
Valor = inputbox(“Mensaje”, “Prueba”, , 10,10)

Parámetros:
Mensaje : Mensaje del cuadro de texto
Titulo : Titulo del cuadro de texto
Omisión : Texto por omisión (default)
posx, posy : Posición donde deberá aparecer el cuadro de texto
ArchAyuda : Cuando se utiliza archivo de ayuda
Context : Índice del archivo de ayuda

 El procedimiento MsgBox y la Funcion MsgBox()

Tanto la función como el procedimiento MsgBox, despliegan un cuadro de dialogo y


espera a que el usuario seleccione un botón. La función MsgBox() devuelve un valor
entero, indicando cual de los botones de opción ha presionado el usuario.

Sintaxis
Resp = MsgBox(Mensaje, Tipo, Título, ArchAyuda, Contexto)

MsgBox Mensaje, Tipo, Título, ArchAyuda , Contexto


Ejemplo
MsgBox "Esta es una prueba", vbInformation, "Ejemplo"

Parámetros:
Mensaje : Mensaje ha desplegar en pantalla
Tipo : Tipo de Botón (Error, Información, Pregunta) + Tipo de Opciones (OK,
No, Cancel, Retry)
Titulo : Titulo del Cuadro de Mensajes
ArchAyuda : Archivo de Ayuda
Context : Indice de Ayuda

Valores de Configuración Tipo MsgBox

Valor Significado Constante VB


0 Despliega Boton OK (Aceptar) VbOKOnly
1 Despliega los botones OK y Cancel VbOkCancel
2 Despliega los botones, Abort, Retry e Ignore vbAbortRetryIngnore
3 Despliega los botones Yes, No , Cancel VbYesNoCancel
4 Despliega los botones Yes (si) y No(No) VbYesNo
5 Despliega los botones Retry y Cancel VbRetryCancel
16 Despliega el icono Critical (parada critica) VbCritical
32 Despliega el icono signo de interrogación VbQuestion
48 Despliega signo de exclamación VbExclamation
64 Despliega icono de Información VbInformation
0 El primer boton por omisión VbDefaultButton1
256 El segundo boton por omisión VbDefaultButton2
512 El Tercer Boton por omision VbDefaultButton3
0 Modal Fijo en la Aplicación VbAplication Modal
4096 Modal Fijo del Sistema VbSystemModal
Valores de Retorno de MsgBox()

Valor Significado Constante VB


1 Botón OK Seleccionado VbOK
2 Botón CANCEL Seleccionado Vbancel
3 Botón ABORT Seleccionado VbAbort
4 Botón RETRY Seleccionado VbRetry
5 Botón YES Seleccionado VbYes
6 Botón NO Seleccionado VbNo
Estructuras de Decisión
Las estructuras de decisión de Visual Basic, caen en dos amplias categorías
familiares para todos los programadores de computación: Ramificaciones y Ciclos. Los
dispositivos de ramificado como If...Then y Select Case, hacen que el programa
continué en una dirección en particular sin mirar nunca atrás. Las construcciones de
ciclos como Do...Loop y While...Wend, se usan para repetir un cierto bloque limitado de
instrucciones hasta que se cumplan las condiciones especificadas.

Estructuras de Ramificación

 If...Else...EndIf

Ejemplo:

Resp = MsgBox("Seleccione", vbQuestion + vbYesNo, "Prueba")

If Resp = vbYes Then


MsgBox "Presiono Yes"
Else
MsgBox "Presiono No"
End If

 If ElseIf EndIf

If Resp = vbYes Then


Mess = “Presiono SI”
ElseIf Resp = vbNo Then
Mess = “Presiono NO”
ElseIf Resp = vbCancel Then
Mess = “Presiono Cancelar”
End If

Este fragmento de código toma una decisión basada en tres valores mutuamente
excluyentes, VbYes, VbNo y VbCancel, para la variable Resp.

 IIf

Esta función requiere tres argumentos, la condición para verificar, que devolver si la
condición es cierta y que devolver si es falsa.

Color = IIf ( Color < 15, Color, 1)


En este caso, el color permanece igual mientras sea menor que 15, a menos que
sea mayor que 15, en cuyo caso obtiene el valor de 1.

 Select Case....End Select

Cuando se necesite ejecutar uno de varios grupos de instrucciones, dependiendo del


valor de una cadena o expresión numérica, es mejor la construcción Select
Case...End Select:

Select Case edad


Case 5
Mess = “ 5 años de edad”
Case 13 to 19
Mess = “Joven”
Case 20 to 35, 50 , 60 to 65
Mess = “Adulto
Case Is > 65
Mess = “Respetable”
Case Else
Mess = “Todos”
End Select

Estructuras de Repetición (Ciclos)

Existen diversas estructuras de repetición en Visual Basic. La estructura


While...Wend ejecuta rápidamente una o más instrucciones mientras una condición
dada es cierta:

Sintaxis
While condicion
[instrucciones]
Wend

La condición es una expresión numérica o de cadena que evalúa True (cierto) o


False (falso). Si la condicion es True, todos los enunciados se ejecutan hasta que se
encuentra la palabra clave Wend. En este punto, regresa al enunciado While y la
condición se evalúa nuevamente, y si todavía se cumple se reptie el proceso, de lo
contrario continua con la instrucción posterior al Wend.

While i < 15
Print i
i = i + 1
Wend
La estructura Do....Loop proporciona una forma más adecuada y flexible para
ejecutar ciclos. Esta repite un bloque de código mientras una condición es True o a
partir de que la condición llegue a ser True.

Do Until rsClientes.EOF
Print rdClientes(“Nombre”)
RsClientes.movenext
Loop

Igualmente se puede utilizar

Do

If (i = 10) Then
MsgBox "llego 10"
Exit Do
Else
Print i
End If
i = i + 1
Loop Until i > 20

La estructura For…Next repite un grupo de instrucciones, un número especificado de


veces. Este ciclo crea una variable de contador, especificando sus valores inicial o final.

For I = 0 to 10
Print I
Next I

Se pueden especificar que el contador incremente o decremente en intervalos


especificados mediante el uso de Step. Fácilmente se podría imprimir una columna de
números que muestre un incremento gradual del 5%.

For Porc = 0 to 100 step 5


Print Porc
Next Porc
Procedimientos y Funciones

 Procedimiento

Un procedimiento es un conjunto de instrucciones que realizan una tara específica sin


retornar ningún valor. Este procedimiento se puede ejecutar las veces que sea llamado
desde cualquier módulo del programa.

Los Procedimientos de declaran con la palabra reservada Sub seguido de el nombre del
procedimiento con sus parámetros respectivos.

Ejemplo
Sub CentrarForma(F as form)
F.left = (screen.width – F.width)/2
F.Top = (screen.height – F.height)/2
End Sub

Para Hacer el llamado del procedimiento, se debe hacer usando la palabra reservada
Call y luego el nombre del procedimiento.

Ejemplo

Call CentrarForma(frmFicha)

 Funciones

Es un procedimiento que realiza una tarea específica dentro de un programa y al final se


obtiene un valor de retorno. Una función se define en un modulo que inicia con la
instrucción Function y termina con la instrucción End Function

Ejemplo:

Function Calcular(val1 As Integer, val2 As Double) As Double


Dim total As Double

total = val1 * val2


Calcular = total

End Function
Llamado de la función:

Z = Calcular( x , y )

El uso de funciones y/o procedimientos, permiten crear rutinas personalizadas por


los programadores para satisfacer las necesidades de su aplicación en particular y evitar
la inconveniente e innecesaria repetición de código. Se puede aumentar el poder y la
versatilidad de los procedimientos incluyendo cualquiera de las instrucciones y funciones
integrados de VB, así como las rutinas previamente definidas por usted.
Controles Básicos

Los controles son objetos predeterminados que disponen de propiedades y


métodos propios, los cuales nos brindan mucha utilidad para el desarrollo de nuestras
aplicaciones.

CommandButton
Utilice un control CommandButon para comenzar, interrumpir o terminar un proceso.
Cuando está activado, un CommandButon aparece presionado y a veces se denomina
boton de comando.

Label
Un control Label es un control gráfico que permite mostrar un texto que un usuario no
puede modificar directamente. Tambien conocido como etiqueta, este control se utiliza
para mostrar textos e instrucciones en las formas.

Line
Es un control gráfico que se muestra como una línea horizontal, vertical o diagonal.
Puede usar este control para dibujar líneas en formularios.

Shape
Shape, es un control gráfico que se muestra como rectángulo, un cuadrado, una elipse,
un círculo, un rectángulo redondeado o un cuadro redondeado. Utilice controles Shape
en tiempo de diseño para el diseño de formularios en lugar de los métodos Circle y
Line.

Picture
El objeto Picture le ofrece una forma de manipular mapa de bits, iconos, metarchivo
mejorados e imágenes GIF y JPEJ asignados a objetos que tengan la propiedad Picture.

CheckBox
Un control CheckBox muestra una  cuando está activado. El carácter desaparece
cuadno el control se desactiva. Utilice este control para ofrecer al usuario una opción de
tipo verdadero o falso, o Sí o No. Puede usar controles CheckBox en grupos para
mostrar múltiples opciones entre las cuales el usuario pueda seleccionar una o más.
OptionButton
Un control OptionButton muestra una opción que se puede activar o desactivar.

Generalmente, estos controles se utilizan en grupos de opciones en las cuales el


usuario solo puede seleccionar una. Los controles OptionButton se agrupan si los dibuja
dentro de un contenedor como en un control Frame, un PictureBox o un Formulario.

Frame
Un control Frame proporciona un agrupamiento identificable para controles. También
puede usar un control Frame para subdividir un formulario funcionalmente; por ejemplo,
para separar grupos de controles OptionButton.

Timer
Un control Timer puede ejecutar código a intervalos periódicos produciendo un evento
Timer.

El control Timer, invisible para el usuario, resulta útil para el procesamiento de fondo. No
existe ningún limite práctico en cuanto al número de controles Timer activos que puede
tener Visual Basic ejecutándose.

DTPicker
Utilice el control DTPicker para proporcionar un campo fecha con formato que facilite la
selección de fecha. Además, los usuarios pueden seleccionar una fecha a partir de una
interfaz de calendario desplegable similar a la del control MonthView.

El Control DTPicker tiene dos modos de funcionamiento:


1. El control calendario desplegable (predeterminado) se muestra al usuario un
calendario desplegable en el que se puede seleccionar una fecha.
2. El modo formato de hora, el usuario selecciona en un campo la hora (hora,
minutos, segundos).
Formularios MDI

Un formulario MDI (Multiple Document Interface) es un contenedor de otros


formularios. La aplicación MDI contendrá un formulario padre MDI y los formularios hijos
MDI.

Muchas aplicaciones Windows son programas MDI. Excel, por ejemplo, puede
desplegar muchas hojas de calculo dentro de su misma ventana principal, todas sobre la
misma base, por así decirlo. Específicamente, un formulario MDI es una ventana que
actúa como la base de una aplicación y es el contenedor de otros formularios que tienen
la propiedad MDI Child establecida como True.

Las Ventanas hijas pueden abrirse, minimizarse, redimensionarse, moverse y


tratarse como cualquier ventana normal, sin embargo siempre permanecen dentro del
área de la ventana padre; es decir, no pueden arrastrarse fuera del área de la ventana
principal.

Usted crea un formulario MDI (padre) mediante la selección de MDI Form del
menú Project . Una aplicación sólo puede tener un formulario padre. Los formularios
MDI, sólo pueden contener objetos del menú, cuadros de dibujo, barras de
herramientas, barras de estado etc.

En resumen, los formularios MDI, no pueden tener controles (a excepción de


algunos) ni objetos, simplemente es el formulario padre de la aplicación, el cual se
diseñan los menús principal y barras de herramientas del sistema que nos permitan
llamar a nuestros formularios de trabajo.
Si un formulario hijo tiene menús, la barra de menú del formulario hijo reemplaza
automáticamente a la barra del menú del objeto MDI, mientras este activo. La Barra del
menú que se diseña para un formulario hijo MDI se desplegará sobre el formulario padre
MDI en tiempo de ejecución, cuando el formulario hijo MDI este activo, aunque este
aparezca en el formulario hijo en tiempo de diseño.

Creación de Menús

El Editor de Menú es una aplicación de diseño de menú que se incluye en Visual


Basic. Se utiliza para crear menús personalizados de su aplicación. Para iniciar el editor
de menú, puede seleccionarlo en el menú Herramientas Tools y luego editor de menús.

Editor de Menu:
Así se mostrará el menú al momento de
ejecutarlo

El cuadro de texto Name es donde usted teclea el nombre de control para el


elemento del menú. Para permitir el acceso por teclado puede asignarle un ampersand
(&) antes de una letra o asignado un acceso rápido(shortcut) para ese opción del menú.
También puede asignar una barra de división mediante el tecleo de un solo guión (-).

Use los botones de esquema (flechas izquierda, derecha, arriba, abajo) para
ajustar los niveles (la jerarquía) de los submenú.

Barras de Herramientas
Se utilizan barras de herramientas (ToolBar), para proporcionar al usuario un
acceso rápido a las opciones más importante de nuestro sistema, así como para
mostrarle un ambiente gráfico familiar al de todas las aplicaciones Windows.

Ejemplo de Aplicación utilizando el control ToolBar


Barra de herramientas
Control TooolBar

Lista de Imágenes
Control ImageList

Para Crear una barra de herramientas con iconos gráficos, primeramente se debe
utilizar el control ImageList, el cual tendrá el arreglo de imágenes que se utilizarán asi
como las propiedades de los gráficos.

El primer paso será colocar el control de imágenes sobre el formulario en el que


se desea la barra de herramientas. Luego acceder a las propiedades de éste con el botn
derecho del ratón.

Entre las opciones que se deberá fijar están el tamaño de los gráficos, así como
indicar la ruta donde se encuentran ubicados los archivos gráficos y finalmente
nombrarlos y ponerles un número de índice con el cual los identificaremos en el control
ToolBar.

Ejemplo del control ImageList del menú anterior


Una vez fijado los gráficos, se procede a colocar el control ToolBar y a fijar las
propiedades del mismo, en las cuales se seleccionaran tipo de botón, relieve de la barra,
lista de imágenes que se usarán, acciones del mouse etc.
Control de Unidades, Directorios y Archivos

El control DriveListBox permite al usuario seleccionar una unidad válida de disco


en tiempo de ejecución. Este despliega una lista ordenada de las unidades del disco
usuario y reacciona automáticamente a los clic del ratón. La propiedad más importante
de un DirveListBox es la propiedad Drive, el cual proporciona la unidad actual
seleccionada por dicho control. Para sincronizar el DriveListBox con el DirListBox, es
necesario indicar lo siguiente en el evento Change:

Dir1.Path = Drive1.Drive

El control DirListBox despliega una lista jerárquica ordenada de los directorios y


subdirectorios del disco del usuario, según la unidad seleccionada por el DriveListBox,
permitiendo al usuario navegar entre ellos. Para Mostrar la lista de archivos en el
directorio seleccionado es necesario añadir lo siguiente y sincronizarlo con el
FileListBox:

File1.Path = Dir1.Path

El Control FileListBox localiza y lista archivos en el directorio especificado por su


propiedad Path en tiempo de ejecución. Usted puede usar este control para desplegar
una lista de archivos en el direcotorio actual o puede establecer la propiedad Patern
para mostrar solamente cierto tipo de archivos.

Ejemplo:
Manejador de Errores

Hay errores de diferentes tipos: errores de sintaxis, los que ocurren cuando se
teclea un mal comando o falta un argumento; los errores en tiempo de ejecución, que
son causados por circunstancias fuera de control del programa, que no se previeron en
tiempo de diseño; y los errores lógicos, que provocan que su programa produzca
resultados incorrectos o inesperados.

Visual Basic manipula el primer tipo de error, los de sintaxis, detectando los
problemas de sintaxis cuando se escribe el código del programa. Los otros dos tipos de
errores, deben ser corregidos por usted. El manejo de errores en tiempo de ejecución es
el que aprenderemos a manejar a continuación, para evitar la interrupción del programa
en tiempo de ejecución.

En Visual Basic, los errores en tiempo de ejecución se refieren como errores


interceptables, esto es, Visual Basic reconoce que se ha producido un error y le permite
intercepartlo y realizar una acción correctiva, de lo contrario se finalizará la aplicación.

La manera de manejar los errores, es mediante el uso de la instrucción On Error


GoTo de Visual Basic.

Esta es la sintaxis:
On Error GoTo “procedimiento”

En este caso “procedimiento” es una manera de identificar un bloque de código y


es, simplemente, una sola palabra en una línea seguida por dos puntos (:).

Ejemplo:

Private Sub cmdTest_Clic()

On Error GoTo Manejo

Exit Sub
Manejo:
MsgBox “Ha ocurrido un error”
Resume
End Sub

La instrucción Resume le permite volver a intentar la operación que causo el error. Esto
puede ser o no lo que usted desea, dependiendo de la naturaleza del error. De hecho, si
el error fue debido a algo en el que el usuario no puede hacer nada, Resume causará un
ciclo infinito.
La instrucción Resume también puede usarse para devolver el control a la instrucción
que sigue inmediatamente a la que provocó el error (Resume Next), o para pasar a otra
línea o procedimiento dentro del mismo procedimiento principal.

Un manejador de errores amigable con el usuario desplegará el número y la descripción


del error y ofrecerá algunas alternativas de cómo proceder después de ocurrido el error.
El objeto Err sirve para reportar el error (número y descripción). En este caso se podrá
indicar el error de la siguiente forma:

Msgbox “Ha ocurrido el error No” & Err.Number & “ – “ & Err.Descripción

El manejo de errores proporciona una forma de que su programa tenga trato con los
procesos fallidos, de lo contrario la aplicación se cerrará completamente. Para practicar
el manejador de errores, se puede aplicar al ejemplo de los DriveListBox al error que
ocurre cuando se selecciona una unidad no válida.
Bases de Datos

Conexión a una Base de Datos

El Control de Datos (Data) es un control integrado para conectar una aplicación Visual
Basic con una fuente de datos que se selecciona. Los controles de datos proporcionan
una forma visual y fácil para navegar por los campos, registros y tablas de una o más
Bases de Datos. También se usan para enlazar algunos controles, como cuadros de
texto, etiquetas, cuadros de dibujo, etc. con los campos de tablas que se seleccionan en
su base de datos. Una vez que un control, como un cuadro de texto, está asociado a un
campo en particular, cualquier cambio en el contenido del cuadro de texto se registra
automáticamente en el campo asociado. En pocas palabras, los controles de datos
asociados permitirán que se creen aplicaciones de acceso de datos que requieran muy
poca o ninguna codificación.

Controles de Datos Asociados :

Data

Se usa para proporcionar acceso a datos en bases de datos por medio de


controles asociados en su formulario. Crea y maneja objetos Database y
Recordset para utilizarse por controles asociados. Se requiere para usarse con
todos los demás controles asociados.

DBCombo

Se usa para crear una combinación asociada de cuadro de lista y cuadro de texto
o una simple lista desplegable. La lista puede llenarse automáticamente desde un
Control Data.

DBGrid

Se usa para trazar una cuadrícula asociada compuesta de varios registros. La


cuadrícula puede llenarse automáticamente desde un control Data. El usuario
puede escoger un elemento de la cuadrícula o teclear un valor en el nuevo
regisro.

El Control Data tiene muchas propiedades, ocho de las cuales se listan en resumen
aquí:
Align Devuelve o pone un valor entero (0-4) que determina si el control
Data se despliega en cualquier tamaño y parte del formulario (0), o
si se despliega en la parte superior, inferior, izquierda o derecha de
la forma (1-4) y que se dimensiona automáticamente para adaptarse
a la anchura del formulario.

Caption Una frase a modo de mensaje que se despliega en el propio control


Data.

DataBase Regresa una referencia al objeto de base de datos subyacente del


control Data.

DataBaseName Devuelve y establece el nombre y ubicación de la fuente de datos de


un control data. Este es a menudo una expresión de cadena que
indica el nombre y la ruta completa de la base de datos.

ReadOnly Devuelve o establece un valor booleano que indica si los datos


pueden editarse. El valor por omisión es False, para permitir la
edición.

Recordset Devuelve o establece un objeto Recordset que se define por las


propiedades de un control Data.

RecordsetType Devuelve o establece un valor entero (0-2) que indica el tipo de


objeto Recordset que usted desea que cree el control Data : Table,
Dynaset o SnapShot. El valor por omisión es 1, Dynaset.

RecordSource Devuelve o establece la tabla subyacente o el enunciado SQL para


un control Data. Esta propiedad determina cuáles registros serán
desplegados por el control Data.
Ejemplo :

Acceso de Datos desde Visual Basic

1. Creemos un proyecto nuevo


2. Agreguemos una forma
3. Añada un Control Data a la forma

4. Establezca las siguientes propiedades

Name dtaAutores
Align 2 – Align Bottom
DataBaseName Ruta
RecordSource Authors

5. Dibuje tres cuadros de texto con las siguientes propiedades

Name txtId, txtNombre, txtAño


DataSource dtaAutores
DataField Au_Id, Autor, Year Born
6. Configure el proyecto para que inicie con esta forma
7. Ejecute el Proyecto.
Podrá ver que se pueden consultar los datos de los Autores, uno a uno, se puede
navegar al siguiente, al anterior, al primero y al último y no fue necesario escribir
código alguno.

Uso del DBCombo

Este control se ve y trabaja muy parecido a un ComboBox normal no asociado, pero


tiene mucho más funcionalidad relacionada con la Base de datos. Puede usarlo para
desplegar una lista de datos de su base de datos y ajustar solamente las propiedades
DataSource y RowSource, ListField.

Para poder utilizar un DBCombo, se requiere que se haya agregado un control Data a la
forma.

Ejemplo

1. Agregue una nueva forma a su proyecto


2. Añada un Control Data a la forma con las siguientes propiedades

Name dtaAutores
Caption Autores
DatabaseName Ruta
ReadOnly Yes
Align 2 – Align Bottom
RecordSource Authors

3. Agregue un DBCombo a la forma con las siguientes propiedades

Name dbcAutores
Caption
DataSource dtaAutores
RowSource dtaAutores
ListField Author
4. Configure el Proyecto para que inicie con esta forma
5. Ejecute el Proyecto

Como podrá ver le aparece el listado de todos los autores, y de igual forma, no
fue necesario escribir código alguno.
Uso del DBGrid

El Control DBGrid despliega y permite el manejo de datos de un serie de líneas y


columnas que representan los registros y los campos del objeto Recordset de un
Control Data. Este requiere más sobrecarga que el control estándar de la cuadrícula,
pero la funcionalidad que se añade y la atractiva apariencia valen la pena, en la
mayoría de los casos.

Aunque el control DBGrid ligado a datos se ve similar al control estándar Grid, se


puede establecer la propiedad DataSource del Control DBGrid a un Control Data,
para que la cuadrícula se llene automáticamente y se pongan encabezados de
columna a partir del Recordset del control Data.

El control DBGrid es simplemente, en realidad, un conjunto de columnas y líneas,


cuyas dimensiones se determinan por la cantidad de campos y registros del Recorset
asociado.

Este control, cuando se crea inicialmente en tiempo de diseño, despliega dos


columnas y dos líneas. Mediante el uso de la ventana Properties, puede cambiar
cualquiera de los atributos visibles de la cuadrícula. Cuando establece la propiedad
DataSource, accesa al RecordSet que se creó por el control Data y despliega las
columnas, que incluyen los encabezados y las líneas del Recordset actual. Las
columnas están numeradas de acuerdo a la posición de los campos en el Recordset
subyacente (menos 1, como es usual). Las líneas están numeradas iniciando desde
cero, el encabezado no se incluye.

Ejemplo :

1. Añada un formulario al proyecto


2. Añada un Data Control con las siguientes propiedades

Name dtaAutores
Caption Autores
DatabaseName Ruta
ReadOnly Yes
Align 2 – Align Bottom
RecordSource Authors

3. Agregue un DBGrid al formulario con las siguientes propiedades :

Name dbgAutores
Caption Consulta de Autores
DataSource dtaAutores
4. Configure el Proyecto para que inicie con este formulario
5. Ejecute el Proyecto.

Le muestra un listado de todos los datos de los Autores.


Objetos Database y Recordset

Un objeto Database es una representación lógica de una base de datos física que
puede asignarse a una variable de tipo Database y ser manejada por ésta.

Una vez que añade un control Data válido a sus aplicaciones, ya está trabajando con un
objeto Database. Un Control Data tiene una propiedad Database (que no es la misma
que la propiedad DatabaseName) y contiene una referencia al objeto Database
asociado con el control actual.

Usted puede declarar variables de tipo Database en sus programas y ponerlas iguales a
la propiedad Database de un Control Data en particular, o puede asignarles valores
mediante el uso del método OpenDatabase(), que se trata a continuación.

El método OpenDatabase() abre una base de datos específica y regresa una referencia
al objeto Database que la representa. La programación con objetos de acceso a datos
consiste en la creación de variables objetos y su manipulación consiste en llamar a sus
métodos y establecer sus propiedades.

Esta es la sintaxis simplificada para el método OpenDatabase():

Set dbVariable = Objeto.OpenDatabase(dbName)

Aquí, dbVariables es una variable del tipo de datos del objeto Database que representa
la Base de datos que se abre. El argumento dbName es una expresión de cadena, el
nombre de un archivo de base de datos existente. Si el nombre de archivo de la base de
datos tiene una extensión, debe incluirla. Si su red lo permite, puede también especificar
una ruta de red totalmente calificada, como \\SERVIDOR\\DIR\\BD.MDB. Si dbName no
se refiere a una base de datos existente, o si se refiere a una base de datos que ya está
abierta para acceso exclusivo por otro usuario, ocurre un error.

También deberá observar el uso de un objeto de tipo Workspace . Este se utiliza para
transmitir transacciones simultáneas, de tal suerte que actúa como un contenedor para
bases de datos abiertas e identifica un contexto de seguridad para las operaciones en la
base de datos. Si Usted quiere abrir su base de datos desde el código en lugar de
hacerlo con un control Data, este es un fragmento de código que lo haría:

Dim dbContacts As Database, wsEspTrab As WorkSpace ‘Declara Variable

Set wsEspTrab = DBEngine.Workspaces(0)


Set dbContacts = wsEspTrab.OpenDatabase(“c:\sistema\contacts.mdb”)

Una vez que obtiene una variable Database válida, puede usarla para ejecutar los
métodos Database, como Execute, que ejecuta una instrucción SQL sobre la base de
datos que se especifica, u OpenRecordset, que crea un nuevo objeto Recordset. Por
ejemplo, podría obtener acceso a su tabla si añade las siguientes líneas al código
anterior:

Dim rsContacts As Recordset


Set rsContacts = dbContacts.OpenRecordset(“Contacts”)

Un objeto Recordset es un conjunto lógico de registros asociados con una base de


datos física; representa los registros en una tabla o los que resultan de hacer una
consulta. Los objetos Recordset son los medios principales por los que usted interactúa
con los datos que contiene en su base de datos.

Todos los objetos Recordset se contruyen mediante el uso de los registros (filas ) y los
campos (columnas) de tablas de bases de datos existentes. Existen tres tipo de objetos
Recordset:

Tipo Tabla Es una representación de una tabla base que puede usar
para añadir, cambiar o borrar registros de una sola tabla
sencilla de base de datos.

Tipo Dynaset Es el resultado de una consulta que puede tener registros


actualizables. Un Recordset tipo Dynaset es un conjunto
dinámico de registros que puede usar para añadir, cambiar o
borrar registros desde una o varias tablas de base de datos
subyacentes.

Tipo SnapShot Es una copia estática de un conjunto de registros que puede


usar para encontrar datos o generar reportes. Un Recordset
tipo snapshot puede contener campos desde una o más
tablas de una base de datos, pero puede alterarse.

El método OpenRecordset() se usa para crear un nuevo objeto Recordset asociado


con la base de datos actual. Esta es la sintaxis simplificada:

Set rsVariable = dbVariable.OpenRecordset(Fuente, Tipo )

Aquí, rsVariable es una variable objeto declarada de tipo RecordSet y dbVariable es


una variable objeto de tipo Database que se ha asignado a un objeto de base de datos
actualmente válido. El argumento que se requiere, Fuente, es una expresión de cadena
que especifica el origen de los registros para el nuevo Recordset. Fuente puede ser un
nombre de Tabla, un nombre de consulta o una instrucción SQL que regresa registros.
Para los Recordset tipo tabla, Fuente puede ser solamente un nombre de tabla.

El argumento Tipo es opcional y se usa para indicar uno de los tres tipos de Recordset.
Si se omite el tipo, Visual Basic ( por medio de la máquina de base de datos Microsoft
Jet ) trata de crear un Recordset tipo tabla. Si esto no es posible, se crea un Recordset
tipo dynaset o tipo snapshot.
Una vez que establece una variable Recordset puede usar los métodos MoveNext,
MovePrevious, MoveFirst y MoveLast para navegar por los registros. Para los
Recordset tipo dynaset y snapshot, puede usar también los métodos Find, como
FindFirst, para localizar un registro específico en base a un criterio.

Consultas a la Base de Datos con SQL

El Lenguaje de consulta estructurado (SQL) es un lenguaje que se usa para consultar,


actualizar y manejar de otras maneras las bases de datos relacionales. Puede usarse
para recuperar, filtrar y ordenar información de bases de datos. Puede usar las
instrucciones SELECT de SQL en cualquier parte donde se acepte un nombre de tabla,
uno de consulta o de campo. Por ejemplo, puede usar una instrucción SQL en lugar de
un nombre de tabla en el método OpenRecordset :

Dim wsWS as Workspace


Dim dbCDLibrary As Database
Dim rsBlues as Recordset
Dim sSQL as string

SSQL = “SELECT * FROM BLUES “


Set wsWS = DBEngine.Workspaces(0)
Set dbCDLibrary = wsWS.OpenDatabase(“Cdisks.MDB”)
Set rsBlues = dbCDLibrary.OpenRecordset(sSQL, dbOpenDynaset)

Una instrucción SQL es una expresión de cadena que empieza con un comando de
lenguaje de consulta estructurado, como SELECT, UPDATE o DELETE y puede incluir
cláusulas de filtro y ordenamiento como WHERE y ORDER BY. Las instrucciones SQL,

Una consulta de selección pide a la base de datos un conjunto de registros que


satisfagan criterios específicos y recibe un Recordset; en cambio, una consulta de
acción ejecuta una tarea que se especifica sobre un conjunto de registros que satisfacen
el criterio especificado. En ambos casos se pueden usar intrucciones SQL para definir
los registros que se quieren recuperar o con los que quiere actuar, y cómo se les quiere
ordenar y agrupar. Este es un ejemplo de una consulta de selección que podría usarse
con la base de datos Contacts:

SELECT Code, Contact, Pone FROM Contacts WHERE State = ‘NY’ ORDER BY Code

Si desea quitar todos los contactos de California de su tabla Contacts, use la siguiente
consulta de acción:

DELETE FROM Contacts WHERE State= ‘CA’

Si usa una consulta SQL para recuperar datos, el motor de base de datos de Visual
Basic crea un Recordset tipo dynaset o tipo snapshot, y nunca uno tipo tabla. Una vez
que se contruye el Recordset, puede refinarlo mediante el uso de uno de los métodos
Find, o poner un ciclo para avanzar paso a paso por los registros de uno en uno. Hay
varias formas de ejecutar consultas SQL, que se resumen a continuación:

 Use una instrucción SQL como un argumento para el método OpenRecordset


 Establezca la propiedad RecordSource de un control Data y use el método
Refresh
 Use el QueryDef existente en la propiedad RecordSource del control Data
 Use una consulta de acción SQL como un argumento para el método Execute
 Cree y ejecute un objeto QueryDef personalizado
 Ejecute el QueryDef existente con el método OpenRecordset

Establecimiento de la propiedad RecordSource de un control Data :

Puede crear un Recordset, estableciendo la propiedad RecordSource de un control


Data a una cadena de consulta SQL. Estos son los pasos generales a seguir cuando se
usa una consulta SQL con un control Data.

1. Diseñe la consulta SQL para que devuelva solamente los registros que Usted
desee.
2. Teclee la instrucción SQL de la consulta en la propiedad RecordSource del
control Data. Puede hacer esto en tiempo de diseño o de ejecución. Por
ejemplo, en tiempo de ejecución puede usar este código:

dtaQuery.RecordSource = ‘SELECT * FROM Contacts WHERE


State=’NY’”

3. En tiempo de ejecución, use el método Refresh para volver a crear el


Recordset:

dtaQuery.Refresh

Uso de una consulta de acción y del método Execute:

Si necesita ejecutar una consulta de acción para efectuar una operación que no
devuelva registros, como cuando inserta, borra o actualiza registros, puede usar la
instrucción SQL como un argumento en el método Execute. El método Execute puede
usarse con un Control Data o con un objeto Database abierto, siempre y cuando la
consulta no devuelva registros. Por ejemplo, para borrar registros de una tabla que
satisfagan criterios específicos, puede usar el siguiente código:

dbContacts.Execute “DELETE FROM Contacts WHERE City = ‘Tacoma’”


Reportes (Uso del Data Report)

Acerca del Diseñador de entorno de datos (DataEnvironment)

El Diseñador de entorno de datos proporciona un entorno interactivo en tiempo de


diseño para crear por programa accesos a datos en tiempo de ejecución. En tiempo de
diseño se establecen los valores de las propiedades de los objetos Connection y
Command, se escribe código para responder a los eventos de la interfaz de objetos de
datos de ActiveX® (ADO), se ejecutan comandos y se crean campos agregados y
jerarquías. También es posible arrastrar y colocar objetos Data_Environment en
formularios o informes para crear controles enlazados a datos.

Con el Diseñador de entorno de datos puede llevar a cabo las tareas siguientes:

 Agregar un Diseñador de entorno de datos a un proyecto de Visual Basic.

 Crear objetos Connection.

 Crear objetos Command basados en procedimientos almacenados, tablas,


vistas, sinónimos e instrucciones SQL.

 Crear jerarquías de objetos Command basadas en una agrupación de objetos


Command, o asociar entre sí uno o varios objetos Command.

 Escribir y ejecutar código para los objetos Connection y Recordset.

 Arrastrar y colocar campos de un objeto Command del Diseñador de entorno de


datos a un formulario de Visual Basic o al Diseñador de informe de datos.

Diseñar un objeto DataEnvironment

En tiempo de diseño, es posible usar el Diseñador de entorno de datos para crear un


objeto DataEnvironment. El objeto DataEnvironment puede incluir objetos
Connection y Command, jerarquías (relaciones entre objetos Command),
agrupaciones y campos agregados. Antes de diseñar el objeto DataEnvironment debe
determinar la información que desea presentar, identificar las bases de datos que
contienen la información y determinar el objetivo de tiempo de ejecución (por ejemplo,
crear un informe de datos).

Antes de obtener acceso al Diseñador de entorno de datos debe hacer referencia al


mismo en Visual Basic.
Para hacer referencia al Diseñador de entorno de datos

1. En el menú Proyecto, haga clic en Referencias.

2. En el cuadro de diálogo Referencias, seleccione Data Environment 1.0 y, a


continuación, haga clic en Aceptar.

Para agregar un objeto del Diseñador de entorno de datos a un nuevo proyecto de


Visual Basic

1. En la ficha Nuevo del cuadro de diálogo Nuevo proyecto, elija proyecto EXE
estándar y, a continuación, haga clic en Abrir.

2. En el menú Proyecto, elija Agregar entorno de datos.

Visual Basic agrega el Diseñador de entorno de datos al proyecto, muestra la


ventana del Diseñador de entorno de datos, y agrega un objeto Connection al
entorno de datos.

Después de haber agregado un Diseñador de entorno de datos al proyecto, puede crear


un objeto Connection; vea el procedimiento en Objetos Connection. Después de crear
un objeto Connection, puede agregar objetos Command al mismo; vea el
procedimiento en Objetos Command
Objetos Connection

Para tener acceso a los datos mediante el entorno de datos, debe crear un objeto
Connection. Por tanto, cada entorno de datos debería incluir al menos un objeto
Connection. Un objeto Connection representa una conexión a una base de datos
remota que se utiliza como un origen de datos.

Cuando ha agregado un entorno de datos al proyecto de Visual Basic, el Diseñador de


entorno de datos incluye automáticamente una nueva conexión, denominada
Connection1. En tiempo de diseño, el entorno de datos abre la conexión y obtiene
metadatos relativos a la conexión que incluyen los nombres de objetos, las estructuras
de tablas y los parámetros de procedimiento de la base de datos.

Nota Si se activa la opción Mostrar propiedades inmediatamente después de crear


el objeto del cuadro de diálogo Opciones, se mostrará el cuadro de diálogo
Propiedades de vínculos de datos cuando agregue un entorno de datos a su proyecto.
Esta opción no está seleccionada de forma predeterminada.

Crear un objeto Connection

La función Agregar conexión está disponible en todo momento, independientemente de


si existen otros objetos.

Para crear una conexión a una base de datos

 Haga clic en Agregar conexión en la barra de herramientas del Diseñador de


entorno de datos.
O bien,
Haga clic con el botón secundario del mouse (ratón) en el Diseñador de entorno
de datos y seleccione Agregar conexión en el menú emergente.
Cuando ha agregado un objeto Connection, se actualiza el entorno de datos
para mostrar el nuevo objeto Connection. El nombre predeterminado de este
objeto es "Connection" seguido de un número, como Connection1. Utilice el
procedimiento siguiente para especificar las propiedades del objeto Connection.

Para establecer el nombre de conexión y el origen de datos

3. En la ventana de Propiedades, cambie el nombre predeterminado por un nombre


más descriptivo de la base de datos de origen. Por ejemplo, puede cambiar el
nombre Connection1 por "Northwind" si el origen de datos es la base de datos
Northwind.

4. Haga clic en el objeto Connection y elija Propiedades para tener acceso al


cuadro de diálogo Propiedades de vínculos de datos.
5. En el cuadro de diálogo Propiedades de vínculos de datos, especifique la
información de conexión en las fichas Conexión y Proveedor. Suele ser una
base de datos que contiene datos o procedimientos almacenados. Sólo puede
seleccionar un origen para cada objeto Connection.

6. Nota Independientemente del tipo de origen de datos seleccionado, el entorno de


datos permite recuperar todos los datos mediante las interfaces ADO y OLE DB.

7. Haga clic en Aceptar para aplicar las propiedades y cerrar el cuadro de diálogo
Propiedades de Connection.

Establecer la información de inicio


La información de inicio sólo es necesaria si el acceso a la base de datos mediante el
objeto Connection requiere información de autenticación. Puede especificar que se
utilicen conjuntos diferentes de información de inicio en tiempo de diseño y en tiempo de
ejecución. Por ejemplo, podría desarrollar una aplicación que utilice una identificación y
contraseña de usuario administrador del sistema pero que proporcione al mismo tiempo
una identificación de usuario invitado general cuando se ejecuta la aplicación.

Nota Cualquier información de inicio especificada en la ficha Propiedades de vínculos


de datos se sobrescribe con la información de inicio de sesión especificada en la
ventana de Propiedades de Visual Basic.

Para especificar la información de inicio

1. Si es necesario, en la ventana de Propiedades de Visual Basic, especifique la


identificación y contraseña de usuario que debe usarse en tiempo de diseño y
tiempo de ejecución. Es posible especificar también el comportamiento del
indicador.

2. Establezca DesignSaveAuthentication a True si desea que la autenticación


especificada persista en tiempo de diseño. Esta información no se escribe en el
archivo ejecutable o la biblioteca de vínculos dinámicos (DLL). Si el valor de esta
opción es False, cualquier información en DesignUserName y DesignPassword
se perderá una vez que cierre y vuelva a abrir el proyecto que genere.

3. Establezca RunSaveAuthentication al valor True si desea usar la autenticación


especificada en tiempo de ejecución. La información de autenticación se
almacena en las propiedades de la clase y persiste en el archivo ejecutable o DLL
que genera. Si el valor de esta opción es False, cualquier información en
RunUserName y RunPassword se perderá una vez que cierre y vuelva a abrir el
proyecto.
Nota Por seguridad, debido a que la contraseña no está codificada, no debe
especificar que la contraseña persista en tiempo de ejecución ni en tiempo de
diseño.
Objetos Command

Los objetos Command definen información de detalle específica acerca de cómo deben
recuperarse los datos mediante una conexión basada en datos. Es posible basar los
objetos Command en un objeto de base de datos (como una tabla, una vista, un
procedimiento almacenado o un sinónimo) o en una consulta SQL (Structured Query
Language). Asimismo, puede crear relaciones entre objetos Command para obtener un
conjunto de datos relacionados en forma de jerarquía.

Nota Para que un objeto Command sea válido, debe estar asociado con un objeto
Connection.

Si un objeto Command devuelve datos, se considera "de devolución de conjunto de


registros" y es posible tener acceso a sus resultados mediante un objeto Recordset
disponible en el objeto DataEnvironment. Sin embargo, si un objeto Command no
devuelve datos (por ejemplo, procedimientos almacenados o texto SQL que realice una
actualización), se considera de "no-devolución de conjunto de registros". El Diseñador
de entorno de datos identifica automáticamente si el objeto Command es de devolución
de conjunto de registros. Puede suplantar este valor mediante la casilla de verificación
Devolver RecordSet de la ficha Avanzadas del cuadro de diálogo Propiedades de
Command.

En tiempo de ejecución, la forma de obtener acceso al objeto Command depende de si


se trata de un objeto Command de devolución de conjunto de registros. Si se trata de
un objeto Command de devolución de un conjunto de registros, puede obtener acceso
al objeto Command como una propiedad o como un método del objeto
DataEnvironment. Si se trata de un objeto de no-devolución de conjunto de registros,
sólo se puede tener acceso al objeto Command como un método. Vea Usar un entorno
de datos con su aplicación para obtener más información.
Crear un objeto Command
La función Agregar comando está disponible en todo momento y es independiente de la
existencia de otros objetos. Sin embargo, un objeto Command que no esté asociado
con un objeto Connection no es válido.

La propiedad ActiveConnection del objeto Command está establecida en el objeto


Connection si la conexión puede identificarse mediante el enfoque actual durante el
procedimiento de agregar. Si no se identifica un objeto Connection, el objeto Command
no es válido mientras no lo asocie con una conexión.

Para agregar un objeto Command

 Haga clic en Agregar comando en la barra de herramientas del Diseñador de


entorno de datos.
O bien,
Haga clic con el botón secundario del mouse en un objeto Connection o en el
Diseñador de entorno de datos, y elija la opción Agregar comando del menú
emergente.
Después de agregar un objeto Command, la vista esquema del entorno de datos
presenta el nuevo objeto Command. El nombre predeterminado del objeto es
"Command", seguido de un número, como Command1.
Utilice el procedimiento siguiente para especificar las propiedades del objeto
Command.

Para especificar las propiedades del objeto Command

1. Haga clic con el botón secundario del mouse en el objeto Connection y elija
Propiedades para tener acceso al cuadro de diálogo Propiedades de
Command.

2. Haga clic en la ficha General, y establezca los valores siguientes:

Elemento Propósito
Cambie el valor predeterminado de Nombre de comando por
Nombre de un nombre más descriptivo del objeto de base de datos. Por
comando ejemplo, podría modificar el título Command1 por "Clientes" si el
objeto Command se basa en una tabla llamada "Clientes".
Si creó el objeto Command a partir del menú contextual del
objeto Connection, se establece automáticamente el nombre
del objeto Connection. No obstante, es posible cambiar esta
Conexión
conexión.
Nota Para que sea válido, cada objeto Command debe estar
asociado con un objeto Connection.
Objeto de base de Seleccione el tipo de base de datos en la lista desplegable.
Puede tratarse de un procedimiento almacenado, un sinónimo,
datos
una tabla o una vista.
Seleccione un nombre de objeto en la lista desplegable. Los
Nombre del objeto objetos mostrados provienen de la conexión y coinciden con el
tipo del Objeto de base de datos seleccionado.
O bien
Si selecciona esta opción como el origen de datos, escriba una
consulta SQL válida para la base de datos en el cuadro
Instrucción SQL.
Instrucción SQL
O bien,
Para generar la consulta, haga clic en SQL Builder para iniciar
el diseñador de consultas.

Si el objeto Command se basa en una consulta con parámetros o en un


procedimiento almacenado, puede tener una colección de parámetros. Para
establecer las propiedades de parámetro, haga clic en la ficha Parámetros del
cuadro de diálogo Propiedades de Command.

3. Utilice las fichas Relación, Agrupación y Campos agregados para definir


relaciones y modelar los datos incluidos en el recordset.

4. Haga clic en la ficha Avanzadas del cuadro de diálogo Propiedades de


Command para establecer las propiedades que cambian la forma en que se
obtienen o manipulan los datos en tiempo de ejecución. En esta ficha, establezca
las propiedades avanzadas que el control de entorno de datos proporciona sobre
las propiedades del objeto Command y el objeto Recordset resultante.

5. Haga clic en Aceptar para aplicar las propiedades al nuevo objeto Command y
cerrar el cuadro de diálogo.
Si se creó correctamente el objeto Command de devolución de conjunto de
registros y la opción Mostrar campos está activada en el cuadro de diálogo
Opciones, puede hacer clic en el mecanismo de expansión (+) bitmap de la vista
esquema del diseñador de entorno de datos para mostrar una lista de campos. Si
no se ven campos, puede deberse a un objeto Recordset vacío, un objeto
Command no válido o una conexión no válida.

Personalizar los objetos Parameter de un objeto Command


Si un objeto Command se basa en una consulta con parámetros o en un procedimiento
almacenado con parámetros, el objeto Command posee una colección Parameters.
Puede personalizar los objetos Parameter incluidos en la colección si cambia el tipo de
datos o les asigna un nombre más descriptivo.
Cambiar las propiedades de los objetos Parameter asociados
El procedimiento siguiente describe cómo puede cambiar las propiedades de los objetos
Parameter asociados a un objeto Command.

Para cambiar las propiedades del objeto Parameter asociado a un objeto


Command

1. Haga clic con el botón secundario del mouse en el objeto Command que desee
personalizar y, a continuación, seleccione Propiedades en el menú emergente.

2. En la ficha Parámetros, seleccione un objeto Parameter en el cuadro de lista


Parámetro y, a continuación, establezca las propiedades siguientes:

Elemento Propósito
Proporcione un nombre único y descriptivo para el objeto
Name
Parameter seleccionado.
Especifique si se trata de un parámetro de entrada o de salida,
Direction o ambos a la vez, o si el parámetro corresponde al valor
devuelto por el procedimiento.
Especifique el tipo de datos al que se convierte el objeto
DataType
Parameter.
Precision Especifique la precisión o número máximo de dígitos.
Scale Especifique el tamaño máximo, en bytes.
Size Especifique el tamaño máximo en bytes.
Especifica el tipo de datos utilizado cuando la aplicación host
hace referencia a este objeto Parameter. Cambiar este valor
Host Data Type
afecta al tipo de datos utilizado para generar la información de
la biblioteca de tipos correspondiente al host.
Especifica si se requiere un valor del parámetro cuando se
ejecuta el objeto Command.
Required Nota Si un parámetro requerido no está establecido
cuando se ejecuta el objeto Command, el comando
fallará.
Especifica el valor predeterminado que debe usarse en tiempo
de ejecución (a menos que se proporcione un valor por
Value programa) y, si corresponde, en tiempo de diseño si el objeto
Command debe ejecutarse para obtener la información del
campo.

1. Haga clic en Aceptar para aplicar las propiedades del parámetro al objeto
Command seleccionado y salir del cuadro de diálogo.
DataReport (Objeto)

El objeto DataReport es el objeto programable que representa al diseñador de informe


de datos.
Sintaxis

DataReport

Comentarios

El objeto DataReport permite generar informes a partir de los registros de una base de
datos. Para usarlo:

1. Configure un origen de datos para tener acceso a una base de datos.

2. Asigne a la propiedad DataSource del objeto DataReport con el origen de datos.

3. Asigne a la propiedad DataMember del objeto DataReport con un miembro de


datos.

4. Haga clic con el botón secundario del mouse (ratón) en el diseñador y, a


continuación, haga clic en Obtener estructura.

5. Agregue los controles apropiados a las secciones según sea necesario.

6. Establezca las propiedades DataMember y DataField de cada control.

7. En tiempo de ejecución, utilice el método Show para mostrar el diseñador de


informe de datos.

El objeto DataReport sirve para cambiar por programación la apariencia y el


comportamiento del diseñador de informe de datos al modificar el diseño de cada objeto
Section.

El diseñador de informe de datos ofrece la posibilidad de exportar los informes mediante


el método ExportReport.

Este método permite especificar un objeto ExportFormat, dentro de la colección


ExportFormats, que servirá de plantilla para el informe.
Partes del informe de datos

El Diseñador de informe de datos consta de los siguientes objetos:

1. Objeto DataReport. El objeto DataReport, similar a un formulario de Visual


Basic, consta de un diseñador visual y un módulo de código. Utilice el diseñador
para crear el diseño de un informe. También puede agregar código al módulo de
código del diseñador para dar formato a los controles o a las secciones
contenidas en el diseñador por programa.

2. Objeto Section. Cada sección del Diseñador de informe de datos está


representada por un objeto Section de una colección Sections. En tiempo de
diseño, cada sección está representada por un encabezado en que puede hacer
clic para seleccionar la sección y por un panel de la sección donde puede colocar
controles. Utilice el objeto Section y sus propiedades para volver a configurar
dinámicamente un informe antes de generarlo.

3. Controles del informe de datos. Se trata de controles especiales que sólo


funcionan con el Diseñador de informe de datos. (Nota: en el Diseñador de
informe de datos, no puede emplear los controles intrínsecos de Visual Basic ni
los controles ActiveX.) Estos controles se encuentran en el Cuadro de
herramientas de Visual Basic, agrupados por separado en una ficha llamada
DataReport.
Secciones del Diseñador de informe de datos

El Diseñador de informe de datos predeterminado contiene los siguientes objetos


Section:

 Encabezado de informe: contiene el texto que aparece al principio de un informe,


como el título del informe y el nombre del autor o de la base de datos. Si desea
que el Encabezado de informe aparezca en la primera página del informe,
establezca su propiedad ForcePageBreak en rptPageBreakAfter.

 Encabezado de página: contiene información que se escribe en la parte superior


de cada una de las páginas, como el título del informe.

 Encabezado y pie de grupo: contiene una sección que se repite en el informe de


datos. A cada encabezado de grupo corresponde un pie de grupo. La pareja de
encabezado y pie de grupo está asociada con un único objeto Command del
Diseñador de entorno de datos.

 Detalles: contiene la parte "repetida" más interior (los registros) del informe. La
sección Detalles está asociada al objeto Command de nivel inferior en una
jerarquía de entorno de datos.

 Pie de página: contiene información que se escribe en la parte inferior de cada


una de las páginas, como el número de página.

 Pie de informe: contiene el texto que aparece al final del informe, por ejemplo un
resumen o una dirección o nombre de contacto. El pie de informe aparece entre
el último encabezado de página y el último pie de página.

Controles del informe de datos

Cuando agrega un nuevo Diseñador de informe de datos a un proyecto, los controles


siguientes se insertan automáticamente en la ficha DataReport del Cuadro de
herramientas:

 Control TextBox (RptTextBox): permite dar formato al texto o asignar un objeto


DataFormat.

 Control Label (RptLabel): permite colocar etiquetas para identificar los campos o
las secciones del informe.

 Control Image (RptImage): permite insertar gráficos en el informe. Observe que


no es posible enlazar este control con un campo de datos.
 Control Line (RptLine): permite dibujar reglas en el informe para distinguir mejor
las secciones.

 Control Shape (RptShape): permite insertar rectángulos, triángulos o círculos (y


óvalos) en un informe.

 Control Function (RptFunction): un cuadro de texto especial que calcula valores


a medida que se genera el informe.

Escribir informes con el Diseñador de informe de datos de Microsoft

El Diseñador de informe de datos de Microsoft es un generador de informes de datos


versátil con capacidad integrada de creación de informes jerárquicos por capas. Puede
usarse con un origen de datos como el Diseñador de entorno de datos para crear
informes con datos procedentes de muchas tablas relacionales diferentes. Permite
imprimir los informes y exportarlos a archivos con formato HTML o de texto.

Posibles usos
 Crear automáticamente informes que se exportan en formato HTML para su
distribución instantánea a través de Internet.

 Crear informes diarios con las sumas de transacciones efectuadas cada día.

Características del Diseñador de informe de datos

El Diseñador de informe de datos tiene varias características:

1. Funcionalidad arrastrar y colocar aplicada a campos. Esta funcionalidad


permite arrastrar campos del Diseñador de entorno de datos de Microsoft al
Diseñador de informe de datos. Cuando utiliza esta técnica, Visual Basic crea
automáticamente un control TextBox en el informe de datos y establece las
propiedades DataMember y DataField del campo que ha colocado. También
puede arrastrar un objeto Command del Diseñador de entorno de datos al
Diseñador de informe de datos. En este caso, se creará en el informe de datos un
control cuadro de texto por cada uno de los campos del objeto Command y se
asignarán valores apropiados a las propiedades DataMember y DataField de
cada cuadro de texto.

2. Controles del Cuadro de herramientas. El Diseñador de informe de datos


posee un conjunto de controles propios. Cuando agrega un Diseñador de informe
de datos al proyecto, los controles se crean automáticamente en una ficha
llamada DataReport del Cuadro de herramientas. Muchos de estos controles
tienen un funcionamiento idéntico a los controles intrínsecos de Visual Basic e
incluyen un control Label, Shape, Image, TextBox, y Line. El sexto control (el
control Function) genera automáticamente información de uno de los cuatro tipos
siguientes: Sum (suma), Average (promedio), Minimum (mínimo) o Maximum
(máximo). Para obtener más información acerca del control Function, vea
"Agregar un control Function al informe de datos".

3. Vista preliminar. El método Show permite mostrar una vista preliminar del
informe. El informe de datos se genera y se muestra en su propia ventana.

Nota Es necesario tener una impresora instalada en el equipo para poder usar el
modo de vista preliminar.

4. Impresión de informes. Es posible llamar al método PrintReport desde un


programa para imprimir un informe. Cuando el informe de datos está en el modo
de vista preliminar, los usuarios también pueden imprimirlo si hacen clic en el
icono de impresora de la barra de herramientas.

Nota Es necesario tener una impresora instalada en el equipo para poder


imprimir un informe.

5. Exportación de archivos. El método ExportReport permite exportar la


información del informe de datos. Los formatos de exportación incluyen HTML y
texto.

6. Exportación de plantillas. Es posible crear una colección de archivos de plantilla


para usarlos con el método ExportReport. Esto es conveniente para exportar
informes a varios formatos, cada uno ajustado al tipo de informe.

7. Operación asíncrona. Los métodos PrintReport y ExportReports del objeto


DataReport son operaciones asíncronas. El evento ProcessingTimeout permite
supervisar el estado de cada una de estas operaciones y cancelarlas si llevan
demasiado tiempo.
Crear un informe de datos sencillo

Este tema muestra cómo puede crear un informe de datos sencillo mediante un
Diseñador de entorno de datos utilizado como un origen de datos. El Diseñador de
entorno de datos emplea la base de datos NorthWind incluida con Visual Basic para
crear un sencillo cursor jerárquico. El cursor contiene dos tablas, Clientes y Pedidos, y
ambas están vinculadas mediante el campo IdCliente. El informe terminado es similar a
la siguiente figura.

Informe de datos sencillo: Fechas de los pedidos de clientes

Antes de empezar el procedimiento paso a paso, compruebe que la base de datos


Northwind (Nwind.mdb) está
presente en su equipo. Si no está, copie el archivo del CD de Visual Basic al disco duro.

Para insertar un cursor jerárquico sencillo en el Diseñador de entorno de datos

 Cree un nuevo proyecto Standard EXE.


 En el menú Proyecto, haga clic en Agregar entorno de datos para agregar un
diseñador al proyecto. Si el diseñador no aparece entre las opciones del menú
Proyecto, haga clic en Componentes. Haga clic en la ficha Diseñadores y en
Entorno de datos para agregar el diseñador al menú.

Nota El menú Proyecto proporciona la lista de los cuatro primeros tipos de


diseñadores ActiveX cargados para un proyecto. Si se cargan más de cuatro
diseñadores, los siguientes aparecerán en el submenú Más diseñadores
ActiveX del menú Proyecto.

 En el cuadro de diálogo Data Link Properties, haga clic en Microsoft Jet 3.51
OLE DB Provider. Esta selección del corrige el proveedor OLE DB para tener
acceso a la base de datos Jet.

 Haga clic en el botón Siguiente para llegar a la ficha Conexión.

 Haga clic en el botón Examinar (…) que se encuentra junto al primer cuadro de
texto.

 Utilice el cuadro de diálogo Seleccionar base de datos de Access para


desplazarse por el archivo nwind.mdb, que está instalado en el directorio Archivos
de programa\Microsoft Visual Studio\Vb98.

 Haga clic en Aceptar para cerrar este cuadro de diálogo.

 Haga clic con el botón secundario de mouse (ratón) en el icono Connection1, y


elija Cambiar nombre. Cambie el nombre del icono a Northwind.

 Haga clic con el botón secundario del mouse en el elemento Norhwind y,


después, haga clic en Agregar comando para mostrar el cuadro de diálogo
Command1. En el cuadro de diálogo, establezca las propiedades como se indica
a continuación:

Propiedad Valor
Nombre de comando Clientes
Conexión Northwind
Objeto de base de datos Table
Nombre de objeto Clientes

1. Haga clic en Aceptar para cerrar el cuadro de diálogo.

2. Haga clic con el botón secundario del mouse (ratón) en el comando Clientes y
haga clic en Agregar comando secundario para mostrar el cuadro de diálogo
Command2. En el cuadro de diálogo, establezca las propiedades como se indica
a continuación:
Propiedad Valor
Nombre de comando Pedidos
Conexión Northwind
Objeto de base de datos Table
Nombre de objeto Pedidos

 Haga clic en la ficha Relación. La casilla de verificación Relacionar con un


comando primario debería estar activada. El cuadro Primario debería contener
Clientes; los cuadros Campos primarios y Campos secundarios y parámetros
deberían mostrar IdCliente.

 Cuando se diseñan bases de datos relacionales, se suele usar el mismo nombre


para los campos que permiten vincularlas. En este caso, los dos campos
vinculados se denominan IdCliente. El Diseñador de entorno de datos hace
coincidir automáticamente estos dos campos en el cuadro de diálogo.

 Haga clic en Agregar. Haga clic en Aceptar para cerrar el cuadro de diálogo.

 Al hacer clic en el botón Agregar, agrega la relación al objeto Command.


Después de cerrar el cuadro de diálogo, el Diseñador de entorno de datos refleja
las relaciones de los dos comandos como una jerarquía. Esta jerarquía se usará
para crear el informe de datos.

 Establezca las propiedades del proyecto y del diseñador según los valores
indicados a continuación y, después, guarde el proyecto:

Objeto Propiedad Valor


Project Name prjNwind
DataEnvironment Name deNwind
Form Name frmShow
Crear el informe de datos

Después de haber creado el Diseñador de entorno de datos, puede crear un informe de


datos. Debido a que no todos los campos del entorno de datos son siempre útiles en un
informe, los siguientes temas muestran cómo puede crear un informe limitado que
muestra sólo unos pocos campos.

Para crear un nuevo informe de datos

1. En el menú Proyecto, haga clic en Agregar informe de datos; Visual Basic


agregará el informe de datos al proyecto. Si el diseñador no aparece en el menú
Proyecto, haga clic en Componentes. Haga clic en la ficha Diseñadores y en
Informe de datos para agregar el diseñador al menú.

Nota El menú Proyecto proporciona la lista de los cuatro primeros tipos de


diseñadores ActiveX cargados. Si se cargan más de cuatro diseñadores, los
siguientes aparecerán en el submenú Más diseñadores ActiveX del menú
Proyecto.

2. Establezca las propiedades del objeto DataReport según la tabla siguiente:

Propiedad Valor
Name rptNwind
Caption Informe de datos Northwind

3. En la ventana Propiedades, haga clic en DataSource y, después, en deNwind. A


continuación, haga clic en DataMember y en Clientes.

Importante Es necesario abrir el Diseñador de entorno de datos antes de


establecer la propiedad DataSource con el valor deNwind. Si el diseñador está
cerrado, presione Ctrl-R para mostrar la ventana Proyecto y haga doble clic en el
icono del entorno de datos.

4. Haga clic con el botón secundario del mouse (ratón) en el Diseñador de informe
de datos y en Obtener estructura.
Acaba de agregar una nueva sección de grupo al diseñador. Cada sección de
grupo posee una correspondencia unívoca con un objeto Command en el
entorno de datos; en este caso, la nueva sección de grupo corresponde al objeto
Command denominado Clientes. Observe también que al encabezado de grupo
corresponde una sección Pie de grupo.

5. Arrastre el campo NombreCompañía (bajo el comando Clientes) del Diseñador


de entorno de datos a la sección Encabezado de grupo
(Clientes_Encabezado).
La sección Encabezado de grupo puede contener cualquier campo del comando
Clientes, pero para facilitar la demostración, este ejemplo sólo muestra por el
momento el nombre Clientes.

6. Elimine el control Label (rptLabel) denominado Label1.


Si no desea incluir un control Label con el control TextBox, desactive la opción
Arrastrar y soltar títulos de campo de la ficha Asignación de campos del
cuadro de diálogo Opciones del Diseñador de entorno de datos.

7. Arrastre el campo FechaPedido (bajo el comando Pedidos) del Diseñador de


entorno de datos a la sección Detalles de pedidos. Elimine el control Label.
La sección Detalles de pedidos representa la sección "repetida" más interior y,
por tanto, corresponde el objeto Command de nivel inferior de la jerarquía del
entorno de datos: el objeto Command denominado Pedidos.

8. Cambie el tamaño de las secciones del Diseñador de informe de datos para que
sea similar a la figura siguiente:

Es importante que cambie el alto de la sección Detalles de pedidos para que sea
lo más corta posible, ya que el alto se multiplicará por cada uno de los objetos
FechaPedido devueltos por NombreCompañía. Cualquier espacio innecesario por
encima o por debajo del cuadro de texto FechaPedido aumentará la cantidad de
espacio sin usar en el informe final.

3. Guarde el proyecto.
Vista preliminar del informe de datos con el método Show

Ahora que se han creado los objetos del entorno de datos y del informe de datos, casi
ha llegado el momento de ejecutar el proyecto. Solamente queda un paso: escribir
código para mostrar el informe de datos.

Para mostrar el informe de datos en tiempo de ejecución

1. En la ventana Explorador de proyectos, haga doble clic en el icono frmShow


para mostrar el Diseñador de formularios.

2. En Cuadro de herramientas, haga clic en la ficha General.


Cuando agrega un Diseñador de informe de datos al proyecto, sus controles se
agregan a la ficha denominada DataReport. Para usar los controles estándar de
Visual Basic, debe cambiar a la ficha General.

3. Haga clic en el icono CommandButton y dibuje un botón de comando en el


formulario.

4. Establezca las propiedades del control Command1 como se indica en la tabla


siguiente:

Propiedad Valor
Name cmdShow
Caption Mostrar informe

5. En el evento Click del botón, pegue el código siguiente.


Private Sub cmdShow_Click()
rptNwind.Show
End Sub

6. Guarde y ejecute el proyecto.

7. Haga clic en Mostrar informe para mostrar el informe en el modo de vista


preliminar.

Opcional: configurar el informe de datos como el Objeto inicial:


También puede mostrar el informe de datos sin escribir código.

1. En el menú Proyecto, haga clic en Propiedades de prjNwind.

2. En el cuadro Objeto inicial, seleccione rptNwind.

3. Guarde y ejecute el proyecto.


Nota Si utiliza este método, puede quitar el objeto Form del proyecto.
Extender el informe de datos

Ahora que dispone de un informe de datos sencillo, es fácil extenderlo y crear una
presentación más compleja. En el procedimiento siguiente, se extiende primero el
entorno de datos con las tablas Detalles de pedidos y Productos. El informe extendido
incluye los nombres de los productos ordenados por una fecha específica y es similar a
la figura siguiente.

Informe de datos extendido con detalles sobre los pedidos

Para extender el entorno de datos

4. En el Diseñador de entorno de datos, haga clic con el botón secundario del


mouse (ratón) en el objeto Command Pedidos. A continuación, haga clic en
Agregar comando secundario.

5. En el cuadro de diálogo Propiedades de Command1, establezca las


propiedades siguientes:
Propiedad Valor
Nombre de comando DetallesPedidos
Conexión Northwind
Objeto de base de datos Table
Nombre de objeto Detalles de pedidos

6. Haga clic en la ficha Relación. La casilla de verificación Relacionar con un


comando primario debería estar activada. El cuadro Primario debe contener
Pedidos; los cuadros Campos primarios y Campos secundarios y parámetros
deben mostrar IdPedido. Haga clic en el botón Agregar y, a continuación, en
Aceptar para cerrar el cuadro de diálogo.

7. Haga clic con el botón secundario del mouse (ratón) en el objeto Command
DetallesPedidos y haga clic en Agregar comando secundario. Establezca las
propiedades de la conexión como se indica a continuación:

Propiedad Valor
Nombre de comando Productos
Conexión Northwind
Objeto de base de datos Table
Nombre de objeto Productos

8. Haga clic en la ficha Relación. La casilla de verificación Relacionar con un


comando primario debería estar activada. El cuadro Primario debe contener
DetallesPedidos; los cuadros Campos primarios y Campos secundarios y
parámetros deben mostrar IdProducto. Haga clic en el botón Agregar y, a
continuación, en Aceptar para cerrar el cuadro de diálogo.

Extender el informe de datos


Después de haber extendido el entorno de datos con tablas nuevas, puede extender
también el informe de datos al arrastrar campos del Diseñador de entorno de datos al
Diseñador de informe de datos.

Para extender el informe de datos

9. Haga clic con el botón secundario del mouse (ratón) en el diseñador Informe de
datos y desactive el cuadro Mostrar Encabezado o pie de página.
Al desactivar esta opción, se eliminan el encabezado y el pie de página, que no
se utilizan por ahora.

10. Haga clic con el botón secundario del mouse (ratón) en el Diseñador de informe
de datos y haga clic en Insertar encabezado o pie de grupo. Aparecerá el
cuadro de diálogo Insertar nuevo encabezado o pie de grupo.
El cuadro de diálogo permite determinar si el nuevo encabezado y el nuevo pie de
grupo incluyen otras parejas "anidadas" de encabezado y pie. Esto es importante
cuando agrega nuevas parejas de encabezados y pies, ya que la pareja situada
más al exterior tiene precedencia sobre las demás. Este aspecto se trata con más
detalle en "Partes del informe de datos".

11. Haga clic en Aceptar para seleccionar la posición predeterminada de la nueva


pareja de encabezado y pie, y para cerrar el cuadro de diálogo.

12. Seleccione el nuevo encabezado de grupo y cambie el nombre Section1 por


Pedidos_Encabezado en la ventana Propiedades. Cambie el nombre Section4
correspondiente al pie de página por Pedidos_Pie.

13. Repita los pasos 2 a 3. Cambie el nombre del nuevo encabezado de grupo por
DetallesPedidos_Encabezado y el nombre del nuevo pie de grupo por
DetallesPedidos_Pie.

14. Haga clic en la sección Pedidos_Detalle para seleccionarla. En la ventana


Propiedades, cambie el nombre de la sección por Productos_Detalle.

15. Con el mouse, arrastre el campo FechaPedido de la sección Productos_Detalle


a la sección Pedidos_Encabezado.

16. Arrastre el campo NombreProducto (bajo el comando Productos) del Diseñador


de entorno de datos a la sección Productos_Detalle.

17. Elimine el control Label denominado Label1.

18. Ajuste el tamaño de los encabezados de grupo y reorganice los controles de


cuadro de texto para que sean similares a la figura siguiente.
La figura anterior necesita algunas explicaciones. En primer lugar, se cierran todos
los pies de grupo por orden para conseguir el mayor espacio posible. Como ocurre
con la sección Detalles, en el informe final se multiplica el espacio adicional que
quede en los encabezados o pies de página. Por consiguiente, si un encabezado o
pie de página no contiene ningún campo, puede ajustar al máximo la distancia que
separa a los encabezados y los pies de página.

El encabezado de grupo llamado DetallesPedidos_Encabezado también se ajusta.


Si se pregunta por qué no se muestra ningún campo, debe comprender que la tabla
Detalles de pedidos de la base de datos Northwind es una tabla combinada, es decir
una tabla que sólo contiene los identificadores de registros de la tabla Pedidos,
combinados con los identificadores de registros de la tabla Productos. Los campos
no aparecen por el momento precisamente porque la tabla Detalles de pedidos no
contiene ninguno. Simplemente permite combinar las otras dos tablas. En el
Diseñador de informe de datos, por tanto, la tabla Detalles de pedidos sólo sirve para
crear grupos de registros: los nombres de producto agrupados por fechas de pedido.

Por último, la sección Detalles sólo contiene los nombres de los productos. La
sección Detalles contiene el nivel más interior de los registros repetidos.

19. Guarde y ejecute el proyecto.


Agregar un campo calculado al informe de datos

Un campo calculado es un campo cuyo valor se calcula al generar el informe. Por


ejemplo, para calcular los impuestos aplicables a un pedido, debe multiplicar el importe
total por un porcentaje correspondiente al impuesto local. Como los porcentajes de los
impuestos locales varían, no conviene almacenarlos en la base de datos, sino calcular el
impuesto en el momento de generar el informe, es decir, con un campo calculado.

En este ejemplo el Diseñador de informe de datos extendido se modifica de forma que


incluya un campo Total que calcule el producto de las cantidades por el precio unitario,
es decir: Cantidad * PrecioUnidad. Agregar un campo calculado implica los pasos
siguientes:

 Usar una instrucción SQL en el objeto Command del entorno de datos para
crear el campo calculado.

 Agregar tres controles de cuadro de texto al informe de datos: Cantidad,


PrecioUnidad y Total (correspondiente al campo calculado).

El informe de datos modificado tendrá la apariencia siguiente.


Para agregar un campo calculado al informe de datos

 En el Diseñador de entorno de datos, haga clic con el botón secundario del


mouse (ratón) en el comando DetallesPedidos. A continuación haga clic en
Propiedades para mostrar el cuadro de diálogo Propiedades de
DetallesPedidos.

 En la ficha General, haga clic en el botón Instrucción SQL y escriba la


instrucción siguiente en el cuadro:
 Select IdPedido, IdProducto, PrecioUnidad, Cantidad, (Cantidad *
PrecioUnidad) As Total From [Detalles de pedidos]
 La instrucción SQL multiplica el valor Cantidad por el valor PrecioUnidad y
obtiene el valor Total, es decir, el campo calculado. Observe que el nombre de
la tabla Detalles de pedidos incluye espacios, por lo que debe escribirse entre
corchetes.
 Haga clic en Aceptar para cerrar el cuadro de diálogo.

 Arrastre los campos Cantidad, PrecioUnidad y Total (bajo el comando


DetallesPedidos) del Diseñador de entorno de datos a la sección
Productos_Detalle del Diseñador de informe de datos.

 Elimine los dos controles Label, cambie los valores de la propiedad Caption
de los restantes controles Label a * y organice los controles de forma que

tengan la apariencia siguiente:

 En el Diseñador de informe de datos, haga clic en el cuadro de texto


PrecioUnidad para seleccionarlo. En la ventana Propiedades, haga doble
clic en DataFormat para mostrar el cuadro de diálogo Páginas de
propiedades.

 En el cuadro Tipo de formato, haga clic en Moneda. En el cuadro combinado


Símbolo, seleccione la moneda correspondiente a su país.
 Repita los pasos 6 y 7 para cambiar la propiedad DataFormat del cuadro de
texto Total a Moneda.

 Haga clic en el control de cuadro de texto Total para seleccionarlo. En la


ventana Propiedades, cambie la propiedad Alignment a 1 – rptJustifyRight.

 Guarde y ejecute el proyecto.

Agregar un control Function al informe de datos

El Diseñador de informe de datos tiene su propio conjunto de controles. El control


Function es el único que no tiene un equivalente entre los controles intrínsecos de
Visual Basic y merece un poco más de explicación.

El control Function presenta datos calculados en tiempo de ejecución mediante una


función integrada, a medida que se genera el informe. La figura siguiente muestra un
ejemplo típico donde se utiliza el control Function para sumar los subtotales de un
pedido específico y mostrar el total correspondiente.

Si utilizó una instrucción SQL para crear un campo calculado (en el tema anterior,
"Agregar un campo calculado al informe de datos"), puede que se pregunte por qué no
se puede usar un control Function para calcular el valor de Cantidad * PrecioUnidad. En
pocas palabras, el control Function sólo puede calcular los valores cuando los demás
registros de una sección de grupo ya se han procesado. En cambio, una instrucción
SQL calcula los valores como parte de los campos de un registro al mismo tiempo que
se procesan.

Siga estos pasos para agregar un control Function al Diseñador de informe de datos:

 Dibuje un control Function en una sección Pie de página apropiada del


Diseñador de informe de datos.

 Establezca las propiedades DataMember y DataField con valores apropiados


(un campo numérico de un objeto Command del entorno de datos que desee
usar).
Informe de datos con un control Function para presentar Totales

Para agregar un control Function al informe de datos

1. Haga clic con el puntero del mouse en el pie de grupo denominado Cliente_Pie y
arrástrelo a la parte inferior de la ventana para dejar un espacio entre él y el pie
de página Pedidos_Pie.

2. En el Cuadro de herramientas, haga clic en el control rptFunction.

3. Dibuje el control rptFunction en el espacio comprendido entre los dos pies de


página.

4. Establezca las propiedades del control rptFunction según la tabla siguiente:

Propiedad Valor
DataMember DetallesPedidos
DataField Total
Name fncTotal
Alignment 1 – rptJustifyRight
DataFormat Currency
La propiedad FunctionType del control determina qué operación se realizará con los
datos encontrados en la propiedad DataField. De forma predeterminada, la propiedad
tiene el valor 0-RptFuncSum, para indicar la suma de los datos. Otras funciones
incluyen: Average, Minimum, Maximum, Row Count, STDDev (Desviación estándar) y
Value Count.

5. Dibuje un control Line por encima del cuadro de texto Cantidad y un control
Label a la izquierda del cuadro de texto. Establezca la propiedad Caption de la
etiqueta con el valor Total.

6. Haga clic en el control fncTotal para seleccionarlo. En la ventana Propiedades,


haga doble clic en Fuente para mostrar el cuadro de diálogo Fuente. Cambie el
Estilo de fuente a Negrita.

7. Repita el paso 6 con el control Label.

8. Coloque los controles en el diseñador de forma que tengan la apariencia


siguiente:

9. Guarde y ejecute el proyecto.


Aumentar el alcance de la función
Puede aumentar el alcance de la función si coloca el control en un pie de grupo inferior.
Por ejemplo, podría conseguir el total general del conjunto de pedidos de cada cliente.
Para mostrar el total general de todos los pedidos

 Dibuje un nuevo control Function en la sección Cliente_Pie. Alinee el nuevo


control con el control Function creado anteriormente.

 Dibuje un control Label a la izquierda del nuevo control Function.

 Establezca las propiedades de los controles como se indica en la tabla


siguiente:

Control Propiedad Valor


rptFunction Name fncGrandTotal
rptFunction DataMember DetallesPedidos
rptFunction DataField Total
rptFunction Font (Font Style) Bold
rptFunction Alignment 1 – rptJustifyRight
rptLabel Caption Total general
rptLabel Font (Font Style) Bold
rptLabel Alignment 1 – rptJustifyRight

 El Diseñador de informe de datos debería presentarse ahora como en la


siguiente figura:

 Guarde y ejecute el proyecto.


Construcción y Entrega de la aplicación

 Archivo Ejecutable

Un Archivo ejecutable es una aplicación basada en Windows con una extensión de


nombre de archivo .EXE que puede ejecutarse fuera del ambiente de desarrollo de
Visual Basic. Este y otros archivos auxiliares requeridos por su programa se entregan a
los usuarios en prospecto de la aplicación para instalarse y ejecutarse bajo Windows.

La meta final de cualquier proyecto de programación es producir una aplicación


ejecutable que se pueda usar y sea útil.

Una vez que su proyecto este terminado, el primer paso para crear un archivo de
programa ejecutable es seleccionar Make EXE. Para abrir el cuadro de dialogo EXE
Options, haga clic en el botón Options. En este cuadro de dialogo, se establecen
atributos e información documental del archivo ejecutable:

Titulo del
proyecto
Número de
Versión

Icono de la
aplicación

Información del
ejecutable

Argumentos y/o parámetros


adicionales del ejecutable
Una vez que regresa al cuadro de dialogo Make EXE File, seleccione el directorio donde
se creará el ejecutable y luego presione OK. Durante esta fase, Visual Basic puede
descubrir problemas en el código. Si así sucede, se abrirá una ventana Code para
mostrarle la línea que causa el problema.

 Asistente para instalar aplicaciones

El Asistente para crear instaladores, es una herramienta que se usa para crear un
programa de instalación y los medios de distribición (para discos flexibles o instaladores
de red) de su aplicación de Visual Basic.

La primera vez que se ejecuta el asistente para instalar aplicaciones le pide a usted la
ubicación de archivos importantes que se requieren para que se ejecute correctamente.

El asistente para instalar aplicaciones, le proporciona una manera fácil de preparar la


distribución de sus proyectos de programación, así como anexar archivos auxiliares que
requiere su aplicación

Potrebbero piacerti anche