Visual Basic - Antonio Ortiz, asesor en sistemas

Anuncio
Curso:
“Desarrollo de software en Windows con Visual Basic 6.0”
Duración del curso: 25 horas
Nivel: Básico-Intermedio
Requisito: Conocer cualquier lenguaje de programación
Mejor si conoce: Basic, SQL básico
Teoría: 60%
Práctica: 40%
Autor: Antonio Ortíz Ramírez, www.aortiz.net, [email protected]
Objetivo general: Capacitar al asistente en el desarrollo de sistemas en plataforma Windows,
proporcionando conocimientos sólidos de los recursos, metodologías y tecnologías del ambiente.
Además, el asistente aprenderá el lenguaje de programación Visual Basic 6.0, obteniendo
conocimientos a un nivel básico-intermedio que le permitan desarrollar sistemas en Windows.
Alcance del curso: Se cubrirán los aspectos teóricos de la programación Windows y la filosofía de
programación Visual Basic. Se aprenderá la programación Visual Basic, incluyendo los temas:
tipos de datos, estructuras de control, controles, acceso universal a datos con OLE-DB (ADO), uso
del API de Windows (Win32 API). Se aprenderán las bases del lenguaje SQL.
2 de 47
TEMARIO
CAPITULO I
INTRODUCCIÓN
INICIANDO CON VISUAL BASIC
CAPITULO II
CAJA DE HERRAMIENTAS
CAPITULO III
TIPOS DE DATOS
CAPITULO IV
PRINCIPALES ESTRUCTURAS DE CONTROL Y SENTENCIAS DE
VBA
CAPITULO V
PRINCIPALES FUNCIONES DE VBA
CAPITULO VI
PRINCIPALES OBJETOS DE VISUAL BASIC
CAPITULO VII
ACCESO A DATOS CON ADO
CAPITULO VIII
CAPITULO VII: EL API DE WINDOWS
CAPITULO IX
DISTRIBUCION
2001, Antonio Ortíz Ramírez
www.aortiz.net
3 de 47
CAPITULO I: INTRODUCCIÓN
Qué es Visual Basic?
- La parte “Visual se refiere al método utilizado para la Interfase Gráfica del Usuario (GUI). En lugar
de escribir grandes cantidades de código para describir la apariencia y posición de los elementos
de la interfase, simplemente agrega objetos preconstruidos y los coloca en la pantalla.
- La parte “Basic”, se refiere al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction Code),
un lenguaje utilizado por más programadores que cualquier otro lenguaje en la historia de la
computación. Visual Basic ha evolucionado del lenguaje Basic original y ahora contiene cientos de
sentencias, funciones y palabras reservadas, muchas de las cuales se relacionan directamente
con el GUI de Windows. Los principiantes pueden crear útiles aplicaciones aprendiendo unas
cuantas palabras reservadas, además, el alcance del lenguaje permite a los profesionales hacer
cualquier cosa que pueda ser hecha utilizando cualquier otro lenguaje de programación Windows.
El lenguaje de programación Visual Basic no es único de Visual Basic. El sistema de programación
Visual Basic, edición Aplicaciones (Applications Edition) se incluye en Microsoft Excel, Microsoft
Access, y muchas otras aplicaciones de Windows utilizan el mismo lenguaje. El Visual Basic
Scripting Edition (VBScript) es un lenguaje script usado ampliamente y es un subconjunto del
lenguaje Visual Basic. El esfuerzo hecho en aprender Visual Basic será de utilidad en estas otras
áreas.
Sea que se trate de crear una pequeña utilidad para sí mismo o para su equipo de trabajo, un gran
sistema corporativo, o una aplicación distribuida por el globo vía Internet, Visual Basic tiene las
herramientas que necesita.
Las características de acceso a datos permiten crear bases de datos y aplicaciones frontend para muchas bases de datos populares como SQL Server y otras bases de datos de
nivel corporativo.
La tecnología ActiveX permite utilizar la funcionalidad de otras aplicaciones, como es el
procesador de palabras de Microsoft Word, la hoja de cálculo de Microsoft Excel, y otras
aplicaciones Windows.
2001, Antonio Ortíz Ramírez
www.aortiz.net
4 de 47
Las capacidades para Internet hacen fácil acceder a documentos y aplicaciones a través de
Internet o una Intranet desde su Aplicación, o crear aplicaciones servidor de Internet.
La aplicación final es un verdadero archivo .exe que usa una máquina virtual Visual Basic
que puede distribuir libremente.
Lo nuevo en Visual Basic 6.0
ADO (ActiveX Data Objects). Esta nueva tecnología de acceso a datos contiene un modelo
de objeto más simple, mejor integración con otras tecnologías Microsoft y no Microsoft, una
interfaz común para acceso local y remoto a datos, y conjunto de registros (recordsets)
jerárquicos.
Es posible usar “drag and drop” para crear reportes rápidamente a partir de cualquier
recordset, incluyendo recordsets jerárquicos.
Podrá utilizar el administrador visual de datos para mostrar todas las bases de datos que
están conectadas y sus tablas, vistas, “stored procedures”, etc.
Existen un conjunto de rutinas que permiten utilizar el sistema de archivos y crear archivos
de texto y directorios.
Escriba aplicaciones Internet del lado Servidor que usan código Visual Basic para
responder a peticiones de usuarios desde un navegador.
El control CoolBar, es un control contenedor que puede ser usado para crear barras de
herramientas configurables por el usuario parecidas a las de Internet Explorer.
Las rutinas ahora pueden regresar arreglos, lo cual indica que las clases pueden tener
arreglos como propiedad. También es posible asignar el contenido completo de un arreglo
a otro, siempre que el arreglo de la parte izquierda de la asignación sea un arreglo
dinámico.
Cree componentes ActiveX que usan un ambiente aparte para ejecutar rutinas asíncronas
en hilos separados.
2001, Antonio Ortíz Ramírez
www.aortiz.net
5 de 47
REQUERIMIENTOS Y ESPECIFICACIONES DE VISUAL BASIC

Pentium® 90MHz o superior

VGA 640x480 o resolución superior soportada por Microsoft Windows.

Microsoft Windows NT 4.0 o posterior, o Microsoft Windows 95 o posterior.

24 MB de RAM para Windows 95/98, 32 MB parar Windows NT.

Microsoft Internet Explorer version 4.01 o posterior (version 4.01 Service Pack 1 o posterior
para desarrollo de aplicaciones DHTML, y 4.x para usuarios finales de estas aplicaciones).

Requerimientos de espacio en disco:
Standard Edition: instalación típica 48 MB, completa 80 MB.
Professional Edition: instalación típica 48 MB, completa 80 MB.
Enterprise Edition: instalación típica 128 MB, completa 147 MB.
Componentes adicionales (si se requieren): MSDN (para documentación): 67 MB, Internet
Explorer 4.x: aproximadamente 66 MB.

CD-ROM
LIMITACIONES DE PROYECTO
Un proyecto puede contener hasta 32,000 identificadores (cualquier palabra no reservada), que
incluye, pero no limitado a, formularios, controles, módulos, variables, constantes, procedimientos,
funciones, y objetos.
Los nombres de variables en Visual Basic no pueden ser más largos de 255 caracteres, y los
nombres de formularios, controles, módulos, y clases no pueden ser más largos de 40 caracteres.
Visual Basic no impone un límite sobre el número de objetos distintos en un proyecto.
LIMITACIONES DE CONTROLES
Cada control no gráfico (todos los controles excepto shape, line, image, y etiqueta) utiliza una
ventana. Cada ventana usa recursos del sistema, limitando el número total de ventanas que
pueden existir al mismo tiempo. El límite exacto depende de los recursos disponibles del sistema y
del tipo de controles utilizados.
2001, Antonio Ortíz Ramírez
www.aortiz.net
6 de 47
Para reducir el consumo de recursos del sistema, use los controles shape, line, label, e image en
lugar de picture box para crear o desplegar gráficos.
NUMERO TOTAL DE CONTROLES
El número máximo de controles permitidos en un formulario depende del tipo de controles usados
y los recursos del sistema disponibles. Aunque, hay un límite fijo de 254 nombres de controles por
formulario. Un arreglo de controles cuenta como un sólo control, ya que todos los controles en el
arreglo comparten el mismo nombre de control.
El límite de elementos en un arreglo de controles es de 0 a 32767 en todas las versiones.
LIMITE PARA CONTROLES ESPECIFICOS
Propiedad
Aplica a
Límite
List y ListCount
List box y Combo box
El número máximo de elementos es de 32K; el límite
para el tamaño de cada elemento es de 1K
Text
Text box
64K
Caption
Label
1024 bytes
Command,
Check 255 caracteres. Cualquier título sobre estos límites es
box, Frame, y Option
truncado. Los títulos en propiedades de controles
personalizados están limitados a 32K
Menú control
235 caracteres
Tag
Todos los controles
Limitado sólo por la memoria disponible
Name
Todos los controles
Limitado a 40 caracteres
NOTA: en Visual Basic, los nombres de propiedades de control están limitados a 30 caracteres
LIMITACIONES DE CODIGO
La cantidad de código en una forma, clase, o módulo está limitado a 65534 líneas. Una línea de
código puede contener hasta 1023 bytes. Hasta 256 espacios en blanco pueden preceder el texto
2001, Antonio Ortíz Ramírez
www.aortiz.net
7 de 47
en una línea, y no más de 24 caracteres de continuación de línea ( _ ) pueden ser incluidos en una
línea lógica.
PROCEDIMIENTOS, TIPOS Y VARIABLES
No hay límite sobre el número de procedimientos por módulo. Cada procedimiento puede contener
hasta 64K de código. Si un procedimiento o módulo excede este límite, Visual Basic genera un
error al tiempo de compilación. Visual Basic usa tablas para guardar los nombres de
identificadores (variables, procedimientos, constantes, etc) en el código. Cada tabla está limitada a
64K.
TABLA DE DECLARACION DE DLL’s
Cada formulario y módulo de código usa una tabla que contiene una estructura describiendo un
punto de entrada a DLL’s. Cada estructura usa aproximadamente 40 bytes, con una restricción
total de 64K, resultando alrededor de 1500 declaraciones permitidas por módulo.
2001, Antonio Ortíz Ramírez
www.aortiz.net
8 de 47
CONCEPTOS
Sistema: Conjunto de métodos, recursos y dispositivos para realizar un fin específico.
Clase: Define las características (propiedades) y acciones de un tipo de objeto. A las clases
también se les llama “Moldes”.
Objeto: Entidad con características y acciones definidas de cierto tipo o clase.
Contenedor: Objeto que existe para contener otros objetos y además puede realizar alguna
acción.
Propiedad: Característica con nombre. Ejemplo de propiedades son: ancho, alto, color, etc.
Función: Conjunto de instrucciones agrupadas en un procedimiento y que regresa un valor.
Método: Acción que puede realizar un objeto. Por ejemplo: el método Refresh o Move. Un evento
sólo se ejecuta por una llamada mediante código.
Evento: Acción que puede realizar un objeto. Los eventos normalmente se ejecutan como
respuesta a una acción del usuario como presionar un botón. Los eventos también pueden
dispararse por el sistema (como el Timer) o por una llamada en el código.
Thread / Hilo: Un “thread” es básicamente un camino de ejecución a través de un programa.
También es una pequeña unidad de ejecución que el Win32 maneja. Un thread consiste de un
Stack, el estado de los registros del CPU, y una entrada en la lista de ejecución del Sistema. Cada
thread comparte todos los recursos del proceso.
Los hilos de baja prioridad pueden estar esperando mientras hilos de más alta prioridad completan
su trabajo. En equipos con múltiples procesadores, el programador de tareas puede mover hilos a
diferentes procesadores para “balancear” la carga de CPU’s.
Ejecución Asíncrona: Algunas funciones pueden ser ejecutadas de manera asíncrona, esto es, la
aplicación llama la función, y el manejador, después de un mínimo procesamiento, regresa el
control a la aplicación. Entonces la aplicación puede llamar otras funciones mientras la primera
función continúa ejecutándose.
2001, Antonio Ortíz Ramírez
www.aortiz.net
9 de 47
API: (Application Programming Interface). Son las funciones, mensajes, estructuras de datos, tipos
de datos, y sentencias que puede utilizar para crear aplicaciones. El API de Windows consiste de
un conjunto de Librerías de Ligado Dinámico (DLL’s) conteniendo los procedimientos relacionados
al sistema. Para llamar estos procedimientos desde Visual Basic, primero debe declararlos
utilizando la sentencia Declare. Entonces podrá llamarlos como cualquier otro procedimiento.
OLE: Object Linking and Embedded, un ambiente unificado de servicios basados en objetos con la
capacidad de personalizar estos servicios y arbitrariamente extender la arquitectura a través de
servicios personalizados, con el propósito de permitir total integración entre componentes.
Cursor: Un objeto de la base de datos utilizado por las aplicaciones para manipular datos por
renglones de manera similar a usar registros en un archivo secuencial.
Stored Procedure: Una colleción precompilada de sentencias Transact-SQL almacenadas bajo un
nombre y procesadas como unidad. Los Stored Procedures también sirven para administrar SQL
Server y mostrar información sobre las base de datos y usuarios. Los Stored Procedure
proporcionados por SQL Server son llamados “system stored procedured”.
Recordset: Objeto ADO usado para contener un resultado. También muestra un cursor,
dependiendo de las propiedades del recordset asignado por una aplicación.
Back End: Término aplicado al servidor de base de datos cuando está procesando, almacenando
datos, y obteniendo datos.
2001, Antonio Ortíz Ramírez
www.aortiz.net
10 de 47
El IDE de Visual Basic
Cuando inicia Visual Basic, aparece el Entorno Integrado de Desarrollo (IDE), como se muestra a
continuación
2001, Antonio Ortíz Ramírez
www.aortiz.net
11 de 47
EL ENTORNO INTEGRADO DE DESARROLLO (IDE) DE VISUAL BASIC CONSISTE DE LOS
SIGUIENTES ELEMENTOS:
Barra de Menús / Menu Bar
Muestra los comandos que utilizará para trabajar con Visual Basic. Existe menús estándar como
File / Archivo, Edit / Edición, y Help / Ayuda, también existen menús que proveen acceso a
funciones específicas para programación como son: Project / Proyecto, Format / Formato, o Debug
/ Depuración.
Menús Contextuales / Context Menus
Contienen atajos para acciones utilizadas con frecuencia. Para abrir un menú contextual, haga clic
con el botón derecho del mouse sobre el objeto que esté usando. La lista de atajos disponible en el
menú contextual depende de la parte del IDE donde haga clic con el botón derecho del mouse.
Barras de Herramientas / Toolbar
Permiten acceso rápido a comandos usados comúnmente en el ambiente de desarrollo. Por
defecto, la barra de herramientas Estándar es mostrada cuando inicia Visual Basic. Barras
adicionales para edición, diseño de formularios, y depuración pueden ser mostradas u ocultadas
de los comandos de las barras de herramientas a través del menú View / Ver.
Caja de Herramientas / Toolbox
Proveen un conjunto de herramientas que puede utilizar al tiempo de diseño para colocar controles
sobre una forma. Es posible personalizar el diseño de la caja de herramientas por defecto,
agregando o quitando controles.
Ventana del Explorador de Proyecto / Project Explorer Window
2001, Antonio Ortíz Ramírez
www.aortiz.net
12 de 47
Lista los formularios y módulos en el proyecto actual. Un proyecto es la colección de archivos que
se utilizan para construir una aplicación.
Visor de Objetos / Object Browser
Muestra los objetos disponibles para usar en el proyecto y permite una manera rápida de navegar
a través del código. Podrá usar el Visor de Objetos para explorar los objetos en Visual Basic y
otras aplicaciones, ver los métodos y propiedades disponibles para estos objetos, y pegar
procedimientos de código en su aplicación.
Diseñador de Formulario / Form Designer
Funciona como una ventana que puede personalizar para diseñar la interfase de su aplicación.
Agregue controles, gráficas, e imágenes a una forma para crear la apariencia que desee. Cada
forma en su aplicación tiene su propia ventana para Diseño de Formulario.
Ventana de Edición de Código / Code Editor Window
Funciona como un editor para escribir el código de la aplicación. Una ventana para edición de
código por separado es creada por cada forma o módulo de código en su aplicación.
Ventana Posición del Formulario / Form Layout Window
La ventana para posición del formulario permite posicionar los formularios en su aplicación
utilizando una pequeña representación gráfica en la pantalla.
Ventanas Inmediato, Local e Inspección / Inmediate, Locals, and Watch Windows
Estas ventanas son provistas para uso en depuración de su aplicación. Sólo están disponibles
mientras se ejecuta su aplicación con el IDE.
2001, Antonio Ortíz Ramírez
www.aortiz.net
13 de 47
INICIANDO CON VISUAL BASIC
Existen tres pasos principales para crear una aplicación en Visual Basic:
1) Crear la interfaz,
2) Asignar propiedades, y
3) Escribir el código
Crear la interfaz
Los “Formularios” son la base para la creación de la interfase de una aplicación. Puede utilizar
formularios para agregar ventanas y cajas de diálogo a su aplicación. También puede usarlos
como contenedores para elementos que no son parte visible de la interfase de la aplicación. Por
ejemplo, puede tener una formulario en su aplicación que sirve como contenedor para gráficas que
piensa mostrar en otros formularios.
El primer paso para construir una aplicación Visual Basic es crear los formularios que serán la
base de la interfase de la aplicación. Enseguida coloque los objetos que formarán la interfase en
los formularios que cree.
Asignar Propiedades
El siguiente paso es asignar propiedades para los objetos que ha creado, la ventana Propiedades
nos provee es una manera fácil de asignar propiedades a todos los objetos en el formulario actual.
La ventana Propiedades se muestra a través del menú View-“Properties Window”.
Escribir Código
La ventana “Edición de Código” es donde se escribe el código para su aplicación. El código
consiste en sentencias del lenguaje, constantes, y declaraciones. Utilizando la venta de Edición de
Código, podrá ver y editar rápidamente cualquier código en la aplicación.
2001, Antonio Ortíz Ramírez
www.aortiz.net
14 de 47
Para abrir la ventana de Código:

Haga Doble-clic en el formulario o control para el cual desea escribir código

Desde la ventana “Project Explorer” o Explorador del Proyecto, seleccione el nombre del
Formulario o Módulo y presione el botón “View Code” o Ver Código.
El código en una aplicación de Visual Basic está dividida en pequeños bloques llamados
Procedimientos, un procedimiento de evento, contiene el código que es ejecutado cuando ocurre
un evento (como cuando el usuario hace clic en un botón). Un procedimiento de evento para un
control combina el nombre del control actual (especificado en la propiedad “Name”), una subraya (
_ ), y el nombre del evento. Por ejemplo, si desea que un botón de comandos llamado Command1
ejecute
un
procedimiento
de
evento
cuando
es
presionado,
use
el
procedimiento
Command1_Click.
Ejercicio No. 1: Cree una aplicación llamada “Hola Mundo”, la cual contendrá un formulario con
sólo una caja de texto y un botón. Al presionar el botón la caja mostrará el texto “Hola Mundo”.
Cree un nuevo Proyecto
Cree un Formulario con nombre FmaPpal
Coloque un Botón de Comandos con nombre BtnHola
Coloque una Caja de Texto de nombre TxtHola
Haga doble clic en el objeto “BtnHola” y en la ventana de código asegúrese que se encuentre en el
evento Click, aquí escriba el código: TxtHola.Text = “Hola Mundo”
Presione F5 para ejecutar la aplicación
2001, Antonio Ortíz Ramírez
www.aortiz.net
15 de 47
Propiedades, Métodos y Eventos
Los formularios y controles en Visual Basic son objetos que tienen propiedades, métodos y
eventos. Las propiedades se conocen como los atributos de un objeto, los métodos como sus
acciones, y lo eventos como sus respuestas.
Por ejemplo, el globo de helio de un niño tiene sus propiedades, métodos y eventos. Las
propiedades del globo incluyen atributos visibles como el alto, diámetro y color. Otras propiedades
describen el estado (como inflado o desinflado), o atributos que no son visibles como su edad. Por
definición todos los globos tienen estas propiedades pero los valores de estas propiedades pueden
ser diferentes de un globo a otro.
Un globo también tiene métodos o acciones que puede realizar. Como el método inflar (la acción
de llenado con helio), un método desinflar (expeler su contenido).
Los globos también tienen respuestas predefinidas a ciertos eventos externos. Por ejemplo, un
globo responderá al evento de ser picado desinflándose por sí solo, o al evento de ser liberado por
flotar en el aire.
2001, Antonio Ortíz Ramírez
www.aortiz.net
16 de 47
CAPITULO II: CAJA DE HERRAMIENTAS DE VISUAL BASIC
La caja de herramientas, contiene los controles que se utilizan para crear una aplicación en Visual
Basic, estos son los principales controles en la barra de herramientas estándar:
Etiqueta / Label: Una etiqueta muestra texto que el usuario no puede cambiar directamente.
Podrá utilizar las etiquetas para identificar controles, como cajas de texto y barras de corrimiento,
que no tienen una propiedad título. el texto mostrado en la etiqueta es controlado por la propiedad
Caption, que puede ser asignada en tiempo de diseño en la ventana Propiedades o en tiempo de
ejecución por asignar un valor en el código. Por defecto, la propiedad Caption es la única parte
visible de la etiqueta.
La propiedad Autosize, determina si la etiqueta cambiará de tamaño de manera automática para
mostrar todo el contenido de la propiedad Caption. Esto es importante si se cambia el valor de esta
propiedad en tiempo de ejecución.
Cajas de Texto / TextBox: Las cajas de texto son controles que pueden ser usados para obtener
una entrada del usuario o para desplegar texto. Las cajas de texto no pueden ser utilizadas para
mostrar texto que no desea que el usuario cambie, a menos que asigne la propiedad Locked a
verdadero. El texto mostrado en la caja de texto es controlado por la propiedad Text. Esta puede
ser asignada de tres maneras diferentes: al tiempo de diseño en la ventana Propiedades, en
tiempo de ejecución por asignar un valor en el código, o por la entrada del usuario en tiempo de
ejecución.
2001, Antonio Ortíz Ramírez
www.aortiz.net
17 de 47
Casilla de Verificación / CheckBox: Indica cuando una condición particular es verdadera o falsa.
Las casillas de verificación se utilizan en una aplicación para capturar valores Verdadero/Falso o
Sí/No del usuario. Las casillas de verificación trabajan de manera independiente de otra, por lo
tanto, un usuario puede seleccionar cualquier número de casillas al mismo tiempo.
Botones de Opción / Options Buttons: Presentan un conjunto de dos o más opciones al usuario.
Al contrario de los check boxes, los botones de opción trabajan como parte de un grupo; al
seleccionar un botón, inmediatamente se limpian todos las demás opciones del grupo.
Cajas de Lista y Cajas Combinadas / List Boxes y Combo Boxes: Las cajas de lista y cajas
combinadas presentan una lista de opciones al usuario. Por defecto, las opciones son mostradas
verticalmente en sólo una columna, aunque también puede establecer múltiples columnas. Si el
número de elementos excede los que pueden ser mostrados en la caja combinada o caja de lista,
aparecerán barras de corrimiento de manera automática sobre el control.
List Box
Combo Box
2001, Antonio Ortíz Ramírez
www.aortiz.net
18 de 47
Barras de Corrimiento / Scroll Bars: Como estos controles indican la posición actual en una
escala, las barras de corrimiento pueden ser utilizadas para controlar la entrada en un programa,
por ejemplo, para controlar el volumen del sonido o ajustar los colores de una foto. Los controles
de barra horizontal (HScrollBar) y vertical (VScrollBar) operan independientemente de otros
controles y tienen sus propios eventos, propiedades, y métodos. Los controles de barras de
corrimiento no son los mismos que aparecen en las cajas de texto, cajas de listas, cajas
combinadas, o formularios MDI. La guía de interfase de Windows ahora sugiere utilizar controles
de desplazamiento (Slider Controls) como entrada en lugar de barras de corrimiento. Ejemplos de
estos controles de desplazamiento pueden ser vistos en el panel de control de Windows 95/98.
Picture Box: El principal uso del control Picture Box es mostrar una foto al usuario. La foto actual
que se muestra es determinada por la propiedad Picture. La propiedad Picture contiene el nombre
del archivo (y opcionalmente el path) de la archivo de imagen a ser mostrado. Para mostrar o
reemplazar una foto en tiempo de ejecución, puede utilizar la función LoadPicture para asignar la
propiedad Picture. Ejemplo: MiPct = LoadPicture(“Picasso.Bmp”)
El control Picture Box también puede ser usado como un contenedor para otros controles. Al igual
que el control frame, puede colocar otros controles sobre el control Picture Box. Los controles
contenidos son movidos con el control Picture Box y sus propiedades Top y Left serán relativos al
picture box en lugar del formulario.
Timer: Ejecuta el evento timer al intervalo de tiempo especificado.
Shape: Permite colocar un rectángulo, cuadrado, elipse o círculo en una forma, frame o picture
box.
2001, Antonio Ortíz Ramírez
www.aortiz.net
19 de 47
USANDO EL VALOR DE UN CONTROL
Todos los controles tienen una propiedad que es utilizada para guardar o tomar valores al referirse
al control, sin utilizar el nombre de la propiedad. Esto es llamado el valor del control y usualmente
es el más importante o la más utilizada de las propiedades del control. La siguiente tabla lista las
propiedad que es considerada el valor de cada control
CONTROL
VALOR
Check box
Value
Combo box
Text
Command button
Value
Common dialog
Action
Data
Caption
DataCombo
Text
DataGrid
Text
Directory list box
Path
Drive list box
Drive
File list box
FileName
FlexGrid
Text
Frame
Caption
Horizontal scroll bar
Value
Image
Picture
Label
Caption
Line
Visible
Cuando desea referirse a la propiedad de un control que es el valor del control, puede hacerlo sin
especificar el nombre de la propiedad en el código. Por ejemplo, esta línea asigna el valor de la
propiedad Text de un control text box:
Text1 = “Este texto es asignado a la propiedad Text of Text1”
En este ejemplo, la propiedad Caption de Label1 es asignada al valor de la propiedad Filename de
File1 cuando el usuario hace clic sobre un archivo en el cuadro file list.
Private Sub File1_Click ()
Label1 = File1
End Sub
2001, Antonio Ortíz Ramírez
www.aortiz.net
20 de 47
EL CONTROL ADO
El control ADO (ADO Data Control), usa Microsoft ActiveX Data Objects (ADO) para crear
conexiones entre controles conectados a datos (data-bound controls) y proveedores de datos (data
providers). Los controles con conexión a datos son todos los controles que cuentan con la
propiedad DataSource. Los proveedores de datos pueden ser cualquier fuente escrita para la
especificación OLE DB.
Aunque puede usar los ActiveX Data Objects (ADO) directamente en su aplicación, el control de
datos ADO tiene la ventaja de ser un control gráfico (con botones de avanzar y regresar) y una
interfase fácil de usar que permite crear aplicaciones de base de datos con un mínimo de código.
En versiones previas de Visual Basic se existían los controles “Data Control” y “Remote Data
Control” (RDC) para acceso a datos. Ambos controles se siguen incluyendo por compatibilidad. Sin
embargo, debido a la flexibilidad de ADO, se recomienda que las nuevas aplicaciones de base de
datos sean creadas usando el control ADO.
2001, Antonio Ortíz Ramírez
www.aortiz.net
21 de 47
OBTENIENDO EL ENFOQUE: El enfoque o focus es la capacidad de recibir entradas del usuario
a través del mouse o teclado. Cuando un objeto tiene el enfoque, puede recibir entradas del
usuario. En la interfase de Microsoft Windows, varias aplicaciones pueden estar ejecutándose al
mismo tiempo, pero sólo la aplicación con el enfoque tendrá una barra de título activa y podrá
recibir entradas del usuario. En un formulario de Visual Basic con varias cajas de texto, sólo la caja
de texto con el enfoque podrá mostrar el texto entrado por el teclado. Los eventos GotFocus y
LostFocus ocurren cuando un objeto recibe o pierde el enfoque. Los formularios y algunos
controles soportan estos eventos.
ESTABLECIENDO EL ORDEN DEL TAB: El “tab order”, es el orden en que el usuario se mueve
de un control a otro presionando la tecla TAB. Cada formulario tienen su propio “tab order”.
Normalmente el orden del tab es el mismo orden con el que fueron creados los controles.
Al presionar la tecla Tab, el enfoque se mueve de un control a otro. Usualmente, presionando la
tecla TAB en tiempo de ejecución selecciona cada control en el orden del tab. Puede quitar un
control del orden del tab estableciendo su propiedad TabStop a False (0).
Cuadros de diálogo: En aplicaciones basadas en Windows, los cuadros de diálogos son usadas
para preguntar al usuario por datos necesarios por la aplicación para continuar o para desplegar
información. Los cuadros de diálogo son un tipo especializado de objetos formulario que pueden
ser creados de tres maneras:
1. Diálogos predefinidos pueden ser creados usando las funciones MsgBox o InputBox.
2. Diálogos personalizados utilizando un formulario estándar o personalizando un diálogo
existente
3. Diálogos estándar, como Print y File Open, pueden ser creados usando el control common
dialog
2001, Antonio Ortíz Ramírez
www.aortiz.net
22 de 47
CAPITULO III: TIPOS DE DATOS
Tipo de dato
Memoria requerida
Rango
Byte
1 byte
0 a 255
Boolean
2 bytes
True ó False
Integer
2 bytes
-32,768 a 32,767
Long
4 bytes
-2,147,483,648 a 2,147,483,647
4 bytes
-3.402823E38 a -1.401298E-45 para valores
(long integer)
Single
(single-precision
negativos; 1.401298E-45 a 3.402823E38 para
floating-point)
valores positivos
Double
8 bytes
-1.79769313486231E308 a
(double-precision
-4.94065645841247E-324 para valores
floating-point)
negativos; 4.94065645841247E-324 a
1.79769313486232E308 para valores positivos
Currency
8 bytes
-922,337,203,685,477.5808 a
(scaled integer)
Decimal
922,337,203,685,477.5807
14 bytes
+/-79,228,162,514,264,337,593,543,950,335
sin punto decimal;
+/-7.9228162514264337593543950335 con 28
lugares a la derecha del punto decimal; el
número más pequeño superior al cero es:
+/-0.0000000000000000000000000001
Date
8 bytes
Enero 1, 100 to Diciembre 31, 9999
Object
4 bytes
Cualquier referencia a un objeto
String
10 bytes + string length 0 hasta aproximadamente 2 billion
(longitud variable)
String
Length of string
1 hasta aproximadamente 65,400
2001, Antonio Ortíz Ramírez
www.aortiz.net
23 de 47
(longitud fija)
Variant
16 bytes
Cualquier valor numérico hasta el rango de un
(con números)
doble
Variant
22 bytes + longitud de
El mismo rango que para String de longitud
(con caracteres)
la cadena
variable
User-defined
Número requerido por
el rango de cada elemento es el mismo que
(usando Type)
sus elementos
para su tipo de dato.
Notas:
- Los arreglos de cualquier tipo de dato requieren 20 bytes de memoria más 4 bytes por cada
dimensión más el número de bytes ocupados por el dato. La memoria ocupada por los datos
puede ser calculada por multiplicar el número de elementos de datos por el tamaño de cada
elemento. Por ejemplo, los datos en un arreglo unidimensional de 4 enteros de 2 bytes cada uno
ocupan 8 bytes. Los 8 bytes requeridos por los datos más los 24 bytes adicionales resulta en 32
bytes el total de memoria requerida para almacenar este arreglo.
- Un “Variant” conteniendo un arreglo requiere 12 bytes más que el arreglo por sí solo.
2001, Antonio Ortíz Ramírez
www.aortiz.net
24 de 47
CAPITULO IV: PRINCIPALES ESTRUCTURAS DE CONTROL Y SENTENCIAS DE VBA
Dim: Declara variables y reserva espacio para almacenarlas. Sintaxis:
Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As
[New] type]] . . .
Do - Loop: Repite un bloque de sentencias mientras la condición es verdadera o hasta que la
condición sea verdadera. Sintaxis:
Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop
también puede ser usada la siguiente sintaxis:
Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]
End: Termina un procedimiento o bloque. Sintaxis:
End
End Function
End If
End Property
End Select
End Sub
End Type
End With
2001, Antonio Ortíz Ramírez
www.aortiz.net
25 de 47
Exit: Sale de un bloque Do..Loop, For..Next, Function, Sub, o código Property. Sintaxis:
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub
For Each: Repite un grupo de sentencias por cada elemento en un arreglo o colección. Sintaxis:
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
For..Next: Repite un grupo de sentencias un número especificado de veces. Sintaxis:
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next [counter]
Function: Declara el nombre, argumentos, y código que forma parte del cuerpo de una función.
Sintaxis:
[Public | Private | Friend] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
2001, Antonio Ortíz Ramírez
www.aortiz.net
26 de 47
If..Then..Else: Condiciona la ejecución de un grupo de sentencias, dependiendo del valor de una
expresión. Sintaxis:
If condición Then
[sentencias]
Else
[sentencias]
End If
On Error: Activa una rutina manejador de errores y especifica la ubicación de la rutina sin un
procedimiento. También puede ser usada para desactivar una rutina manejador de errores.
Sintaxis:
On Error GoTo line
On Error Resume Next
On Error GoTo 0
On Error Goto line, activa el manejador de errores que inicia en la línea especificada en el
argumento line. El argumento line puede ser cualquier número de línea o etiqueta de línea. La
línea especificada debe estar en el mismo procedimiento que la sentencia On Error, de lo contrario
ocurrirá un error al compilar.
On Error Resume Next, especifica que al ocurrir un error en tiempo de ejecución el control vaya a
la sentencia que sigue a la sentencia que provocó el error.
On Error Goto 0, desactiva cualquier manejador de error.
Select Case: Ejecuta uno de varios grupos de sentencias, dependiendo del valor de una
expresión. Sintaxis:
2001, Antonio Ortíz Ramírez
www.aortiz.net
27 de 47
Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]
End Select
SendKeys: Envía uno o más teclazos a la ventana activa como si fueran escritos por el teclado.
Sintaxis:
SendKeys string[, wait]
Para especificar un caracter, use el símbolo por sí mismo. Por ejemplo, para representar la letra A,
use “A” para string. El signo suma (+), potencia (^), porcentaje (%), tilde (~), y paréntesis () tienen
significado especial para Senkeys. Para especificar uno de estos caracteres, enciérrelos con llaves
{}. Por ejemplo, para especificar el signo suma, use {+}.
Para especificar combinación de teclas con Shift, Ctrl, y Alt, preceda el código de la tecla con uno
de los siguientes códigos
SHIFT
+
CTRL
^
ALT
%
Para especificar que cualquier combinación de Shift, Ctrl, y Alt deben estar presionadas mientras
otras teclas son presionadas, encierre los códigos para estas teclas entre paréntesis. Por ejemplo,
para especificar que presione Shift mientras E y C son presionados, use “+(EC)”. Para especificar
Shift presionado mientras E es presionado, seguido de C sin Shift, use “+EC”.
Set, asigna una referencia a un objetos a una variable o propiedad. Sintaxis:
Set objectvar = {[New] objectexpression | Nothing}
Sub, Declara el nombre, argumentos, y código que forma parte del cuerpo de un procedimento.
Sintaxis:
2001, Antonio Ortíz Ramírez
www.aortiz.net
28 de 47
[Private | Public | Friend] [Static] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
Type, usado en el nivel módulo para definir un tipo de dato definido por el usuario conteniendo uno
o más elementos. Sintaxis:
[Private | Public] Type varname
elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
...
End Type
While..Wend, Ejecuta un bloque de sentencias mientras una condición es verdadera. Sintaxis:
While condition
[statements]
Wend
2001, Antonio Ortíz Ramírez
www.aortiz.net
29 de 47
CAPITULO V: PRINCIPALES FUNCIONES DE VBA
Asc, Regresa un entero representando el código del caracter que corresponde a la primera letra
en la cadena. Sintaxis:
Asc(string)
Chr, Regresa una cadena conteniendo el caracter asociado con el código especificado. Sintaxis:
Chr(charcode)
Date, Regresa un Variant (Date) conteniendo la fecha actual del sistema. Utilice Date para
actualizar la fecha del sistema. Sintaxis:
Date
DateDiff, Regresa un Variant (long) especificando el intervalo de tiempo entre dos fechas
específicas. Sintaxis:
DateDiff(intervalo, fecha1, fecha2)
El intervalo es una cadena que puede tener estos valores
Valor
Intervalo
yyyy
Años
m
Mes
d
Días
h
Horas
n
Minutos
s
Segundos
DoEvents, Pasa la ejecución al sistema operativo para que pueda procesar otros eventos.
Sintaxis:
DoEvents()
Error, Regresa el mensaje de error que corresponde al último error o al número de error
especificado. Sintaxis:
Error( [no. error] )
2001, Antonio Ortíz Ramírez
www.aortiz.net
30 de 47
Format, Regresa un Variant (string) conteniendo una expresión formateada de acuerdo a las
instrucciones contenidas en la expresión de formato. Sintaxis:
Format(expresión, formato)
Iif, Regresa una de dos partes, dependiendo de la evaluación de una expresión. Sintaxis:
Iif(expresión, valor cuando es verdadera, valor cuando es falso)
InputBox, Muestra un cuadro de diálogo, espera la entrada de texto del usuario o que haga clic en
un botón, y regresa una cadena con el contenido de la caja de texto. Sintaxis:
InputBox(mensaje[, título] [, default])
InStr, Regresa un variant (long) especificando la posición de la primera ocurrencia de una cadena
en otra. Sintaxis.
InStr([inicio,] cadena1, cadena2)
IsNull, Regresa un valor boleano que indica si una expresión contiene datos no válidos (Null).
Sintaxis:
IsNull(expresión)
IsNumeric, Regresa un valor boleano que indica si una expresión puede ser evaluada como un
número. Sintaxis:
IsNumeric(expresión)
LCase, Regresa una cadena que ha sido convertida a minúsculas. Sintaxis:
LCase(cadena)
Left, Regresa un Variant (string) conteniendo un número específico de caracteres de la parte
izquierda de una cadena. Sintaxis:
Left(cadena, longitud)
Len, Regresa un Long conteniendo el número de caracteres de una cadena o el número de bytes
requeridos para almacenar una variable.
Len(cadena | nombredevariable)
Mid, Regresa un Variant (string) conteniendo un número específico de caracteres de una cadena.
Sintaxis:
2001, Antonio Ortíz Ramírez
www.aortiz.net
31 de 47
Mid(cadena, inicio[,longitud])
MsgBox, Muestra un mensaje en un cuadro de diálogo, espera que el usuario presione un botón, y
regresa un Integer, indicando el botón que presionó el usuario. Sintaxis:
MsgBox(mensaje[,botones] [,título])
Now, Regresa un Variant (date) especificando la fecha y hora actual del sistema. Sintaxis:
Now
Right, Regresa un Variant (string) conteniendo un número específico de caracteres del lado
derecho de una cadena. Sintaxis:
Right(cadena, longitud)
Str, Regresa un Variant (string) que representa un número. Sintaxis:
Str(número)
Time, Regresa un Variant (date) indicando la hora actual del sistema. Sintaxis:
Time
UCase, Regresa un Variant (string) conteniendo la cadena especificada, convertida en
mayúsculas. Sintaxis:
UCase(string)
Val, Regresa los números contenidos en una cadena como un valor numérico del tipo apropiado.
Sintaxis:
Val(cadena)
2001, Antonio Ortíz Ramírez
www.aortiz.net
32 de 47
CAPITULO VI: PRINCIPALES OBJETOS DE VISUAL BASIC
App, El objeto App es un objeto global. Este obtiene o especifica la información sobre la aplicación
como el título, versión, ruta y nombre del archivo ejecutable y archivos de ayuda, y si existe o no
una instancia previa de la aplicación en ejecución. Principales propiedades del objeto App: Path,
ExeName, PrevInstance, Title. Ejemplo: If(App.PrevInstance) Then End
Clipboard, Provee acceso al portapapeles del sistema. Propiedades y métodos: Clear, GetData,
GetText, SetData, SetText. Ejemplo: Clipboard.SetText “Hola”
Err, Contiene información sobre el último error en tiempo de ejecución. Propiedades y métodos:
Clear, Description, Number, Source. Ejemplo: If( Err <> 0 ) Then Exit sub
Printer, el objeto Printer permite la comunicación con una impresora del sistema (inicialmente la
impresora predeterminada). Propiedades y métodos: Copies, CurrentX, CurrentY, DeviceName,
DriverName, EndDoc, KillDoc, Line, NewPage, Orientation, Page, Port.
Screen, Contiene información sobre la pantalla y controla el puntero del mouse fuera de los
formularios de su aplicación en tiempo de ejecución. El objeto Screen es el escritorio completo de
Windows. Propiedades: ActiveControl, ActiveForm, FontCount, Fonts, Height, Width.
Me, El objeto Me es una referencia al formulario actual. Muy útil si desea crear un código
independiente al nombre del formulario.
2001, Antonio Ortíz Ramírez
www.aortiz.net
33 de 47
CAPITULO VII: ACCESO A DATOS CON ADO
OLE DB es la estrategia de programación Microsoft a nivel sistema para interfase de datos. OLE
DB es una especificación abierta diseñada para construir sobre ODBC, esto es posible al proveer
un estándar abierto para acceder a todos los tipos de datos. ODBC fue creado para accesar bases
de datos relacionales (de manera primaria a SQL) en una ambiente multiplataforma. OLE DB está
diseñada para proveer acceso a todos los tipos de datos en ambiente OLE Component Object
Model (COM). OLE DB incluye la funcionalidad SQL definida en ODBC pero también define
interfaces para tener acceso a otros datos diferentes al tipo soportado por SQL.
Los componentes OLE DB consisten en “Data Providers” (que contienen y exponen los datos),
“Data Consumers” (que usan los datos), y “Service Components” (que procesan y transportan los
datos, por ejemplo, procesadores de querys e ingeniería de cursores).
2001, Antonio Ortíz Ramírez
www.aortiz.net
34 de 47
Microsoft® ActiveX® Data Objects (ADO) es la estrategia de programación Microsoft a nivel
aplicación para interfase a datos e información. ADO provee acceso a datos consistente, alto
rendimiento y soporta una amplia variedad de necesidades de desarrollo, incluyendo la creación
de clientes de bases de datos o front-end, usando aplicaciones, herramientas, lenguajes, o
navegadores de Internet. ADO está diseñado para ser la única interfase a datos necesaria para
sistemas cliente-servidor y desarrollos basados en Web.
ADO provee una interfase fácil de usar a nivel aplicación para OLE DB, que provee acceso a
diferentes formatos de datos. Como ADO fue diseñado para combinar las mejores características
y, eventualmente reemplazar RDO y DAO, usa notación similar con una semántica simplificada
para hacer de él el siguiente paso natural para los desarrolladores de hoy.
El modelo ADO contiene siete objetos:

Connection
2001, Antonio Ortíz Ramírez
www.aortiz.net
35 de 47
Command
Parameter
Recordset
Field
Property
Error
y cuatro tipos de colecciones:
Fields
Properties
Parameters
Errors
El Modelo ADO
2001, Antonio Ortíz Ramírez
www.aortiz.net
36 de 47
Otra vista del modelo ADO
Microsoft® Data Access Components (MDAC) es un conjunto de tecnologías redistribuibles que
implementan la estrategia Universal de Acceso a Datos. MDAC consiste de las últimas versiones
de ActiveX Data Objects (ADO), componentes OLE DB, y Open Database Conectivity (ODBC), que
ahora ha sido liberado como un conjunto integrado. Los desarrolladores creando soluciones
cliente-servidor y basados en Web seleccionan los componentes que necesitan y llaman a estos
desde su herramienta de selección, aplicaciones, lenguajes, o navegadores de Internet para crear
soluciones completas de base de datos.
Práctica: Escribir el siguiente programa que accede a datos a través de ADO. Colocar el código en
el evento load del formulario principal. Cree una base de datos .MDB con la tabla TbaAutor, la cual
contendrá el campo Autor. Además cree una fuente de datos Microsoft Access llamada Biblio que
haga referencia a la base de datos.
Forma #1:
Private Sub Form_Load()
Dim objData As ADODB.Recordset
Set objData = CreateObject("ADODB.RecordSet")
2001, Antonio Ortíz Ramírez
www.aortiz.net
37 de 47
objData.Open "select * from TbaAutor", "DSN=Biblio"
While Not objData.EOF
Debug.Print objData!Autor
objData.MoveNext
Wend
End Sub
Forma #2
Private Sub Form_Load()
Dim cnx As New Connection
Dim Rs As New ADODB.Recordset
cnx.Open "DSN=Biblio"
Rs.Open "select * from TbaAutor", cnx, adOpenForwardOnly
While Not Rs.EOF
Debug.Print Rs!Autor
Rs.MoveNext
Wend
Rs.Close
End Sub
EL OBJETO CONNECTION
El objeto connection permite establecer una conexión con fuentes de datos. En otra palabras, la
representa una conexión física a una fuente de datos. El objeto connection provee mecanismos
para inicializar y establecer la conexión.
Una vez que el objeto conexión fue creado puede usar sus métodos y propiedades para manipular
la fuente de datos (la base de datos) que fue conectada. También puede utilizar el objeto
connection para ejecutar filtros y usar transacciones
Métodos del objeto connection
2001, Antonio Ortíz Ramírez
www.aortiz.net
38 de 47
Método
Descripción
Open
Abre una nueva conexión a una fuente de datos
Close
Cierra una conexión y todos sus objetos dependientes
Execute
Ejecuta un query (una sentencia SQL)
BeginTrans
Inicia una transacción
CommitTrans
Procede con los cambios hechos durante la transacción
RollBackTrans
Cancela cualquier cambio hecho durante una transacción
Propiedades del objeto connection:
Propiedad
Descripción
ConnectionString
Contiene la información necesaria para establecer una conexión
ConnectionTimeOut
Determina el tiempo a esperar para establecer una conexión
CommandTimeOut
Determina el tiempo a esperar mientras ejecuta un comando
State
Indica si una conexión está abierta
Provider
Indica el nombre del proveedor de datos
Version
Indica la versión ADO
CursorLocation
Establece/Regresa la ubicación del “cursor engine”
Nosotros programamos para la interface ADO. Pero recuerde que seleccionamos OLE DB Provider
cuando construimos la propiedad “ConnectionString”. Esto es, el proveedor OLE DB sabe cómo
tomar comandos ADO y trasladarlos en lenguaje que la fuente de datos específica puede
entender. Como cada día más y más fabricantes crean proveedores OLE DB para sus fuentes de
datos, ADO se posiciona en el mundo.
Ejemplo de conexión, recordset y transacciones
Dim Cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
' Abre la conexión
Cn.Open "pubs", "sa"
2001, Antonio Ortíz Ramírez
www.aortiz.net
39 de 47
' Abre la tabla “titles”
rs.Open "SELECT * FROM titles", Cn, adOpenDynamic, adLockPessimistic
Cn.BeginTrans
' realiza cambios
Cn.CommitTrans
' O da marcha atrás
' cn.RollbackTrans
Cn.Close
2001, Antonio Ortíz Ramírez
www.aortiz.net
40 de 47
EL OBJETO RECORDSET
Un objeto Recordset representa los registros en una tabla o los registros que resultan de ejecutar
un comando. En cualquier momento dado, el objeto Recordset direcciona a un registro único al
que se refiere como el registro actual.
Utilice objetos Recordset para manipular datos de un proveedor. Todos los objetos Recordset son
construídos usando registros (renglones) y campos (columnas). Dependiendo de la funcionalidad
soportada por el proveedor, algunos métodos o propiedades del Recordset pueden no estar
disponible.
Existen cuatro tipos de cursores definidos en ADO:
Cursor dinámico (dynamic cursor), permite agregar, cambiar, y borrar en la vista; permite todos
los tipos de desplazamientos a través del Recordset que no son basados en bookmarks; y permite
bookmarks si el proveedor los soporta.
Cursor keyset, idéntico a un cursor dinámico, excepto que no podrá ver los registros que otros
usuarios agregan, y evita acceder a registros que otros usuarios borraron. Los cambios a datos por
otros usuarios serán visibles. También soporta bookmarks y todos los tipos de desplazamientos a
través del recordset.
Cursor estático (static cursor), provee una copia estática de un conjunto de registros que podrá
utilizar para localizar datos o generar reportes; también permite bookmarks y todos los tipos de
movimientos a través del recordset. Las adiciones, cambios, o eliminaciones de otros usuarios no
serán visibles. Este es el único tipo de cursor que puede abrir un objeto recordset (ADOR)
del lado del cliente
2001, Antonio Ortíz Ramírez
www.aortiz.net
41 de 47
Forward-only cursor, funciona idéntico a un cursor estático excepto que sólo permite
desplazamiento hacia delante a través de los registros. Este mejora el rendimiento en situaciones
donde sólo necesita recorrer de una manera a través del recordset.
Asigne la propiedad CursorType antes de abrir el recordset para elegir el tipo de cursor, o pase el
argumento CursorType del método Open. Algunos proveedores no soportan todos los tipos de
cursores. Verifique la documentación del proveedor. Si no especifica el tipo de cursor, ADO abre
un cursor forward-only por defecto.
Al usar algunos proveedores (como Microsoft ODBC Provider para OLE DB con Microsoft SQL
Server), puede crear objetos recordset sin definir un objeto connection con anterioridad, esto se
hace pasando una cadena de conexión con el método Open. ADO crea un objeto Connection, pero
no asigna este objeto a una variable objeto. Si no usa esta variable objeto cuando abre sus objetos
Recordset, ADO crea un nuevo objeto Connection por cada Recordset, aunque pase la misma
cadena de conexión.
Puede crear tantos objetos Recordset como necesite.
Cuando abre un Recordset, el registro actual es posicionado en el primer registro (si existe) y las
propiedades BOF y EOF son asignadas a False. Si no hay registros, las propiedades BOF y EOF
se establecen como True.
2001, Antonio Ortíz Ramírez
www.aortiz.net
42 de 47
EL OBJETO COMMAND
El objeto Command define información detallada sobre los datos que se obtienen de una conexión.
Los objetos Command pueden estar basados en cualquier objeto de la base de datos (como una
tabla, vista, stored procedure o similares) o en un filtro escrito en Structured Query Language
(SQL). También puede crear relaciones entre objetos Command para obtener un conjunto de datos
relacionados en forma de jerarquía.
Para ser un objeto Command válido, debe asociarlo con un objeto Connection.
Si un objeto Command regresa datos, es un “recordset returning”, y el resultado puede ser
accesado usando un objeto Recordset disponible desde el objeto DataEnviroment. Si un objeto
Command no regresa datos (por ejemplo, stored procedures o texto SQL que realiza
actualizaciones), es un “non-recordset returning”.
2001, Antonio Ortíz Ramírez
www.aortiz.net
43 de 47
CAPITULO VIII: EL API DE WINDOWS
EL API ó Application Programming Interface, es un “Conjunto de rutinas que una aplicación usa
para solicitar servicios de bajo nivel realizados por otro componente, como el sistema operativo de
la computadora o un servicio ejecutando en una computadora de la red.
Windows Application Programming Interface (API)
Las funciones, mensajes, estructuras de datos, tipos de datos, y sentencias que se utilizan para
crear aplicaciones que ejecutan bajo Microsoft Windows. Las partes del API que use deben
contener los elementos necesarios para llamar funciones API desde Windows. Estos incluyen
declaración de procedimientos (para las funciones de Windows), definiciones de tipos definidos por
el usuario (para estructuras de datos pasadas a estas funciones), y declaraciones de constantes
(para valores a pasar y a regresar de estas funciones).
API Win32
El término Win32 es usado para describir un API que es común a todas las plataformas Windows
32 bits. Estas plataformas incluyen:

Windows 95, 98 y Me

Windows NT

Windows CE
Los beneficios de un API común son muchos: facilidad de portar aplicaciones, requiere menor
aprendizaje cuando se emigra de una plataforma a otra, y una vasta librería de soporte de
programación existente, ejemplos, y recursos de otros fabricantes.
2001, Antonio Ortíz Ramírez
www.aortiz.net
44 de 47
Declarando funciones externas
Para llamar procedimientos externos desde VBA, se debe proveer información a VBA sobre el
procedimiento que se desea llamar. VBA requiere saber el nombre de archivo de la librería donde
se encuentra la subrutina o función a llamar, el nombre del procedimiento a llamar, los parámetros
que desea enviar, y, si el procedimiento es una función, el tipo de dato del valor que regresa.
Syntaxis 1
[Public|Private] Declare Sub name Lib "libname" [Alias "aliasname" ] [([argumentlist])]
Syntaxis 2
[Public|Private] Declare Function name Lib "libname" [Alias "aliasname"] [([argumentlist])] [As type]
Ejemplos de llamadas al API Win32
Ejemplo #1:
Const SND_SYNC = &H0
' play synchronously (default)
Const SND_ASYNC = &H1
' play asynchronously
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags
As Long) As Long
Function PlayWav(Archivo as string) As Long
PlayWav = sndPlaySound(Archivo, SND_ASYNC)
End Function
Ejemplo #2:
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize
As Long) As Long
Function NombrePC() As String
Dim Buff As String * 255
Dim N As Long
N = 255
GetComputerName Buff, N
NombrePC = Left(Buff, N)
End Function
2001, Antonio Ortíz Ramírez
www.aortiz.net
45 de 47
CAPITULO IX: DISTRIBUCION
Archivos que tiene permitido distribuir
Puede distribuir libremente cualquier aplicación o componente creado con Visual Basic. Además
del archivo ejecutable (.exe), su aplicación puede requerir otros archivos, como DLLs, controles
ActiveX (.ocx), o bitmaps (.bmp).
Puede distribuir de forma legal aplicaciones de ejemplo y cualquier otro archivo que fue copiado a
la subcarpeta \Icons de la carpeta \Visual Studio\Common\Graphics cuando instaló Visual Basic en
su equipo.
Nota: La carpeta \Graphics sólo es instalada si elige instalación personalizada (custom) cuando
instala Visual Basic, y elige instalar gráficos (Graphics).
Si ha comprado la edición Profesional o Enterprise de Visual Basic, también podrá distribuir
cualquier archivo copiado a las carpetas \Visual Studio\Common\Graphics y \Program
Files\Common Files\ODBC durante la instalación.
Nota: También podrá distribuir otros controles ActiveX, archivos .exe, y DLLs que haya comprado.
Consulte la licencia del fabricante para cada uno de estos archivos que desea distribuir para
determinar si tiene derechos para distribuir el archivo con su aplicación.
Pasos a seguir en el proceso de empaquetado
(The Package and Deployment Wizard)
1) Determine el tipo de paquete que desea crear. Puede crear un paquete estandar para
programas basados en Windows que serán distribuidos en disquete, CD, o en red, o puede crear
un paquete de Internet para programas que serán distribuidos en la Web. También puede elegir
crear sólo el archivo de dependencias.
2) Determine los archivos que necesita distribuir. El asistente determinará los archivos del
proyecto y de dependencias para la aplicación de manera automática, por ejemplo, el archivo .vbp
y su contenido. Los archivos de dependencias son archivos en tiempo de ejecución o
componentes que la aplicación necesita para funcionar. La información de dependencia es
2001, Antonio Ortíz Ramírez
www.aortiz.net
46 de 47
almacenada en el archivo vb6dep.ini, o en varios archivos .dep correspondiendo a los
componentes en el proyecto.
3) Determine dónde instalar los archivos en el equipo del usuario. Los archivos del programa
e instalación normalmente son instalados en la carpeta “Archivos de Programas” o “Program Files”,
dependiendo de la versión de Windows en español o inglés respectivamente, mientras que los
archivos del sistema y dependencias son instalados en la carpeta \Windows\System o
\Winnt\System32. Verifique si desea agregar archivos que no fueron incluidos por el asistente,
como pueden ser archivos de base de datos (.mdb), de imágenes, de sonido u otros.
4) Cree su paquete. El asistente crea el paquete y el programa de instalación (setup1.exe) por sí
mismo, referenciando todos los archivos necesarios. El resultado final de este paso es uno o más
archivos .cab y cualquier archivo necesario de instalación.
5) Cree su medio de distribución. Copie todos los archivos necesarios a la ubicación desde donde
los usuarios accederán al programa de instalación.
2001, Antonio Ortíz Ramírez
www.aortiz.net
47 de 47
TEMAS AVANZADOS
Sin lugar a duda, Basic a evolucionado mucho, ahora es una herramienta robusta y completa
donde se desarrollan grandes sistemas de diversa índole. Este curso ha sido un buen paso en el
aprendizaje de la programación Windows pero aún falta mucho por aprender. A continuación se
describen algunos temas que se recomiendan como seguimiento a este curso:
Cristal Reports
Sistemas Cliente-Servidor
SQL Server, Oracle u otro Servidor
Desarrollo en Internet
Intranets
Desarrollo de herramientas ActiveX
2001, Antonio Ortíz Ramírez
www.aortiz.net
Descargar