Download Introducción al Lenguaje

Document related concepts
no text concepts found
Transcript
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
Propiedades
Cuadro de
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
Propiedades
:
:
gato
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
Forma
Botón de Comando
Etiqueta
Cuatro de Texto
Barras de desplazamiento
Menu
Botón de Opción
Cuadro de Verificación
Cuadro de lista
Marco
Cuadro de dibujo
Imagen
Panel
Lineas
Temporizador
Cuadriculas
Prefijo
frm
cmd, btn
lbl
txt
hsb, vsb
mnu
opt
chk
lst
fra
pic
img
pnl
lin
tmr
grd
Ejemplo
frmInicio
cmdSalir, btnAdicionar
lblOpciones
txtCodigo
vsbHora, hsbRango
mnuArchivo
optSexo
chkSonido
lstColores
fraMarco
dicDibujo
imgLogotipo
pnpPanel
linLinea
tmrTiempo
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
Byte
Boolean
Integer
Long (long integer)
Single
Double
Currency
Date
Objeto
String
Variant
User Define
Tamaño de Almacenamiento
1 byte
2 bytes
2 bytes
4 bytes
4 bytes
8 bytes
8 bytes
8 byes
4 bytes
1Caracter/1 byte
Depende del dato
Depende del dato
Rango
0 a 255
True o False
-32768 a 32767
-2147483648 a 2147483647
-3.40E38 a 3.40E38
-1.80E308 a 1.80E308
-9.22E14 a 9.22E14
1/1/100 a 31/12/9999
Referencia a cualquier objeto
Aprox 65,500 Bytes Max
Determinado por el tipo
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
+
*
/
\
Mod
^
&
=, <>,<,>,<=,>=
Operación que realiza
Suma
Resta
Multiplicación
División
División Entera
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)
CByte(expresión)
CCur(expresión)
CDate(expresión)
CDbl(expresión)
CInt(expresión)
CLng(expresión)
CSng(expresión)
CStr(expresión)
CVar(expresión)
CErr(expresión)
conversión a un valor tipo Boolean
conversión a un valor tipo Byte
conversión a un valor tipo Currency
conversión a un valor tipo Date
conversión a un valor tipo Double
conversión a un valor tipo Integer
conversión a un valor tipo Long
conversión a un valor tipo Single
conversión a un valor tipo String
conversión a un valor tipo Variant
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
Titulo
Omisión
posx, posy
ArchAyuda
Context

: Mensaje del cuadro de texto
: Titulo del cuadro de texto
: Texto por omisión (default)
: Posición donde deberá aparecer el cuadro de texto
: Cuando se utiliza archivo de ayuda
: Í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
0
1
2
3
4
5
16
32
48
64
0
256
512
0
4096
Significado
Despliega Boton OK (Aceptar)
Despliega los botones OK y Cancel
Despliega los botones, Abort, Retry e Ignore
Despliega los botones Yes, No , Cancel
Despliega los botones Yes (si) y No(No)
Despliega los botones Retry y Cancel
Despliega el icono Critical (parada critica)
Despliega el icono signo de interrogación
Despliega signo de exclamación
Despliega icono de Información
El primer boton por omisión
El segundo boton por omisión
El Tercer Boton por omision
Modal Fijo en la Aplicación
Modal Fijo del Sistema
Constante VB
VbOKOnly
VbOkCancel
vbAbortRetryIngnore
VbYesNoCancel
VbYesNo
VbRetryCancel
VbCritical
VbQuestion
VbExclamation
VbInformation
VbDefaultButton1
VbDefaultButton2
VbDefaultButton3
VbAplication Modal
VbSystemModal
Valores de Retorno de MsgBox()
Valor
1
2
3
4
5
6
Significado
Botón OK Seleccionado
Botón CANCEL Seleccionado
Botón ABORT Seleccionado
Botón RETRY Seleccionado
Botón YES Seleccionado
Botón NO Seleccionado
Constante VB
VbOK
Vbancel
VbAbort
VbRetry
VbYes
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
Exit Do
Else
Print i
End If
i = i + 1
Loop Until i > 20
10"
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á
momento
de
el
menú al
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
Align
DataBaseName
RecordSource
dtaAutores
2 – Align Bottom
Ruta
Authors
5. Dibuje tres cuadros de texto con las siguientes propiedades
Name
DataSource
DataField
txtId, txtNombre, txtAño
dtaAutores
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.
2.
Agregue una nueva forma a su proyecto
Añada un Control Data a la forma con las siguientes propiedades
Name
Caption
DatabaseName
ReadOnly
Align
RecordSource
3.
dtaAutores
Autores
Ruta
Yes
2 – Align Bottom
Authors
Agregue un DBCombo a la forma con las siguientes propiedades
Name
Caption
DataSource
RowSource
ListField
dbcAutores
dtaAutores
dtaAutores
Author
4.
5.
Configure el Proyecto para que inicie con esta forma
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
Caption
DatabaseName
ReadOnly
Align
RecordSource
dtaAutores
Autores
Ruta
Yes
2 – Align Bottom
Authors
3. Agregue un DBGrid al formulario con las siguientes propiedades :
Name
Caption
DataSource
dbgAutores
Consulta de Autores
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
Dim
Dim
Dim
wsWS as Workspace
dbCDLibrary As Database
rsBlues as Recordset
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.
2.
Diseñe la consulta SQL para que devuelva solamente los registros que Usted
desee.
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
State=’NY’”
3.
=
‘SELECT
*
FROM
Contacts
WHERE
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

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.
objetos
Connection.
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.
2.
En
el
menú
Proyecto,
haga
clic
en
Referencias.
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.
datos
Puede tratarse de un procedimiento almacenado, un sinónimo,
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
procedimiento almacenado, puede tener una colección
establecer las propiedades de parámetro, haga clic en la
cuadro
de
diálogo
Propiedades
parámetros o en un
de parámetros. Para
ficha Parámetros del
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
Name
Direction
DataType
Precision
Scale
Size
Host Data Type
Required
Value
Propósito
Proporcione un nombre único y descriptivo para el objeto
Parameter seleccionado.
Especifique si se trata de un parámetro de entrada o de salida,
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
Parameter.
Especifique la precisión o número máximo de dígitos.
Especifique el tamaño máximo, en bytes.
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
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.
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
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
Nombre de comando
Conexión
Objeto de base de datos
Nombre de objeto
Valor
Clientes
Northwind
Table
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
Nombre de comando
Conexión
Objeto de base de datos
Nombre de objeto
Valor
Pedidos
Northwind
Table
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
Project
DataEnvironment
Form
Propiedad
Name
Name
Name
Valor
prjNwind
deNwind
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
Name
Caption
Valor
rptNwind
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
Name
Caption
Valor
cmdShow
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
Nombre de comando
Conexión
Objeto de base de datos
Nombre de objeto
Valor
DetallesPedidos
Northwind
Table
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
Nombre de comando
Conexión
Objeto de base de datos
Nombre de objeto
Valor
Productos
Northwind
Table
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
DataMember
DataField
Name
Alignment
DataFormat
Valor
DetallesPedidos
Total
fncTotal
1 – rptJustifyRight
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
rptFunction
rptFunction
rptFunction
rptFunction
rptFunction
rptLabel
rptLabel
rptLabel
Propiedad
Name
DataMember
DataField
Font (Font Style)
Alignment
Caption
Font (Font Style)
Alignment
Valor
fncGrandTotal
DetallesPedidos
Total
Bold
1 – rptJustifyRight
Total general
Bold
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:
Número de
Versión
Titulo del
proyecto
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