Man Visual Basic 6
Man Visual Basic 6
Man Visual Basic 6
0
Introducción
Este curso provee al estudiante las habilidades técnicas requeridas para
desarrollar sistemas con Visual Basic 6.0.
Al terminar el Curso
Al final del curso, el estudiante tendrá las habilidades para describir los
diferentes elementos que integran un buen desarrollo de sistemas; describir los
conceptos de la programación en Visual Basic; acceso a bases de datos usando
Activex Data Object (ADO); crear ventanas de altas/bajas/cambios usando
diferentes motores de bases de datos con una sola conexión; implementar
sistemas en modalidad SDI, MDI y mezcla; hacer gráficas hacia Excel usando
OLE Automation; elaborar reportes con Data Report y Crystal Report; manejar
código de barras (generación y lectura); manejar imágenes en base de datos;
manejar Recordset con Crystal Report;; así como manejar la concurrencia de
Visual Basic con SQL Server.
Módulo 2: Programación
Eventos Vs Procedimientos
Funciones Vs Procedimientos
Alcance del Código
Uso del Object Browser
Tipos de Dato
Alcance de las variables
Módulo 6: Errores
Verificación de Errores
Atrapar Errores
• Propiedades
Características de un objeto (color “Color”, tamaño “Size”,titulo “Caption”)
Form1.Caption = “Forma de Entrada de Datos”
• Métodos
Lo que hace un objeto. Son los procedimientos con los que actúa el objeto.
Form1.Show
Cada objeto en Visual Basic es definido por una Clase. La clase define el tipo de
objeto. Los controles en el Toolbox representan clases. Cuando se coloca un
control sobre una forma usted puede crear un objeto de la clase controles.
Los métodos son procedimientos que provee un objeto. Por ejemplo, la forma
provee el método Show que causa que la forma se despliegue en el monitor.
El beneficio de trabajar con objetos es que los objetos proveen de código que no
tenemos que escribir. Usted simplemente activa las propiedades e invoca a los
métodos de los objetos, y el objeto ejecuta varias funciones.
Ejecuta F5
Abrir Proyecto Pega Propiedades F4
Para crear un objeto MDIForm, elija Agregar formulario (forma) MDI en el menú
Proyecto.
Una aplicación sólo puede tener un objeto MDIForm, pero varias formas
secundarias MDI. Si una forma secundaria MDI tiene menús, la barra de menús
de la forma secundaria reemplazará automáticamente a la barra de menús del
objeto MDIForm cuando la forma secundaria MDI esté activa. Una forma
secundaria MDI minimizado se mostrará como un icono en el MDIForm.
Ventana Hija
Una forma hija es una forma común y corriente con la propiedad MDIChild =
true.
Caption. Le permite escribir el nombre del comando o del menú que desea que
aparezca en la barra de menús o en un menú.
Si desea crear una barra separadora en el menú, escriba un único guión (-) en el
cuadro Caption.
Para dar al usuario acceso a través del teclado a un elemento del menú, escriba
el signo & delante de una letra. En tiempo de ejecución, esta letra aparecerá
subrayada (el signo & no será visible) y el usuario tendrá acceso al menú o al
comando si presiona las teclas ALT y la correspondiente a la letra subrayada. Si
necesita que aparezca en el menú el signo &, deberá escribir dos signos &
consecutivos.
Para hacer uso de este control deberá agregar el control “Microsoft Windows
Common Controls-3 6.0” en la opción del menú Proyecto y Componentes.
como se observa el CoolBar se crea con tres paneles, para este ejercicio
usaremos solo dos.
2. Enseguida saque las propiedades del CoolBar haciendo click derecho sobre
este y en la carpeta de Bandas quite una banda, de manera que solo queden
dos.
4. Agregue ahora los botones con sus respectivas imágenes a cada Toolbar
haciendo uso del control ImageList.
Archivos de Formas
Cada archivo de formas incluye una descripción de los objetos de la forma y el
código relacionado. Si una forma contiene gráficos, la información de éstos la
salva en un archivo del mismo nombre de la forma pero con extensión .FRX.
Módulos Estándar
Un módulo estándar en Visual Basic contiene solo código. Cualquier forma
puede hacer uso del código contenido en el módulo BAS. La característica de
este código es que se comparte por toda la aplicación. Generalmente son
funciones y procedimientos de propósito general.
Módulos de Clases
Un módulo de clases es una plantilla, a través de la cual se pueden crear objetos
a tiempo de ejecución.
Archivo de Recursos
Cada proyecto puede contener solo un archivo de recursos. Este archivo
contiene Bitmaps, Iconos, Mensajes, y otros datos usados en la aplicación. Este
archivo de recursos hace que los proyectos sean más ligeros. Adicionalmente el
archivo de recursos se puede usar para crear sistemas que presenten los
mensajes en varios idiomas.
• Procedimientos Generales
Se requiere que se invoquen para poder ser
ejecutados.
Pueden ser funciones o procedimientos Sub.
Eventos
Cada control tiene un conjunto de eventos que se pueden usar. Visual Basic
automáticamente invoca a los procedimientos de eventos en respuesta al
teclado, mouse, o acción del sistema.
Procedimientos Generales
Un procedimiento general no es ejecutado si no es invocado. Usted puede crear
un nuevo procedimiento tecleando el encabezado SUB, seguido del nombre del
procedimiento, sobre una línea en blanco en la ventana de código.
Cuando usted invoca un procedimiento, Visual Basic busca el procedimiento en
la forma actual. Si el nombre del procedimiento no es encontrado, Visual Basic
busca el procedimiento en todos los módulos.
• Procedimientos Sub
• Este no retorna ningún valor.
• Invocación
• Procedimientos Function
• Este retorna un valor
• Invocación
I = CalcVentas(s:=”Windows 98”)
Procedimientos Sub
Los procedimientos Sub no retornan ningún valor. Usted invoca un
procedimiento Sub especificando el nombre del procedimiento y enseguida la
lista de parámetros.
Procedimientos Function
Los procedimientos Function regresan un valor. El siguiente procedimiento
recibe un número y regresa el número al cuadrado.
Si requiere el valor que regresa la función deberá incluir los parámetros entre
paréntesis.
J = Cuadrado(5)
Cuadrado 5
Los procedimientos Public para una forma vienen siendo sus métodos. El
procedimiento puede ser invocado desde cualquier parte de la aplicación,
especificando el nombre de la Forma y el nombre del procedimiento.
Los procedimientos Public en un módulo están disponibles en toda la
aplicación y pueden ser invocados especificando solo el nombre del
procedimiento.
El Object Browser (acceso directo con F2) es una ventana en la que se pueden
ver todos los procedimientos que se encuentran en su aplicación, de igual
manera se pueden ver todos los objetos que proveen otras aplicaciones.
Tipos de Datos
Tipos de Datos en Visual Basic
I.S.C. Alejandro Guzmán Zazueta 16
a_zazuetag@hotmail.com • Use el tipo de dato apropiado para cada situación
• Variant es el tipo de dato por default.
Tipos de Datos en Visual Basic
El tipo de dato de una variable determina el tipo de información que la variable
puede almacenar y un rango de posibles valores.
Si usted no provee el tipo de dato cuando declara una variable, la variable
automáticamente obtiene el tipo Variant. El tipo de dato Variant puede
almacenar valores nulos, numéricos, fecha/tiempo, cadena de caracteres. Sin
embargo, los tipos de dato Variant requieren más memoria que los otros tipos de
dato. Si usted desea crear aplicaciones rápidas no use variables de tipo Variant.
Tipo de Datos:
Las variables tipo Long (entero largo) se almacenan como números con
signo de 32 bits (4 bytes) con un valor comprendido entre –2,147,483,648
a 2,147,483,647.
Una cosa importante por recordar sobre las variables es que no sobreviven al
procedimiento en el cual están definidas. Cuando un procedimiento termina,
todas sus variables locales se remueven de la memoria, lo cual es bueno desde
el punto de vista de conservación de recursos. Sin embargo, esto significa que
las variables locales de un procedimiento son reinicializadas cada vez que se
llama el procedimiento. En otras palabras, usted no debe esperar que una
variable local conserve su valor entre llamadas al procedimiento.
.Maxlength = 10
.Locked = True
.PasswordChar
.Default = True
.Cancel = True
Propiedad MaxLength
La propiedad MaxLength determina la máxima longitud de texto permitido en un
TextBox. El sistema emite una señal bip cuando el usuario trata de teclear más
de la longitud permitida.
Propiedad PasswordChar
La propiedad PasswordChar determina el caracter que va a ser desplegado
cuando el usuario teclee un texto en el TextBox. Cualquier caracter puede ser
usado, la mayoría de las aplicaciones basadas en Windows usan el asterisco (*).
Esta propiedad no afecta la propiedad Text; la propiedad Text contiene
exactamente lo que el usuario tecleó.
Propiedad Locked
La propiedad Locked determina si el usuario puede modificar los datos dentro de
un TextBox. Si la propiedad Locked es verdadera, el usuario solo podrá ver los
datos dentro del TextBox.
Propiedad Default
Si la propiedad Default de un CommandButton es verdadera, el evento Click
para este botón es ejecutado cuando el usuario presiona la tecla de Enter. Solo
un CommandButton en la forma puede tener activada esta propiedad.
Propiedad Cancel
Si la propiedad Cancel de un CommandButton es verdadera, el evento Click
para este botón es ejecutado cuando el usuario presiona la tecla de ESC. Solo
un CommandButton en la forma puede tener activada esta propiedad.
Para ver una lista de todas las constantes de Visual Basic, abra el Object
Browser y seleccione de la lista de librerías VBRUN, entonces seleccione
Globals de la lista Classes/modules.
Propiedad KeyPreview
La forma tiene la propiedad KeyPreview la cual determina si la forma recibe los
eventos del teclado antes que los controles. Si la propiedad KeyPreview es
verdadera, la forma recibe el evento del teclado antes que los controles de ésta.
Si la propiedad KeyPreview de la forma es falsa, la forma no recibe los eventos
del teclado.
El evento Chage puede usarse para validar cuando el usuario haya efectuado un
cambio a la fecha, en coordinación con la propiedad Value para acceder al valor.
A través de la propiedad Tab del SSTab puede saber en que Tab se encuentra
por ejemplo:
Private Sub SSTab1_Click(PreviousTab As Integer)
MsgBox SSTab1.Tab
End Sub
SSTab1.TabEnabled(2) = False
¿Por qué hay tres interfases de acceso a datos en Visual Basic Ado,
Rdo y Dao?
La tecnología de acceso a datos evoluciona constantemente y cada una de
estas tres interfaces corresponde a un estado de la evolución. La tecnología más
reciente es ADO, con un modelo de objetos más sencillo (y aún más flexible)
que RDO o DAO. Para sus nuevos proyectos debe usar ADO como la interfaz de
acceso a datos.
¿Porqué usar ADO?
La interfaz ADO se ha diseñado como una interfaz de nivel de aplicación fácil de
usar para el más nuevo y eficaz paradigma de acceso a datos de Microsoft, OLE
DB. OLE DB proporciona un acceso de alto rendimiento a cualquier origen de
datos, incluidos bases de datos relacionales y no relacionales, correo electrónico
y sistemas de archivos, texto y gráficos, objetos de negocios personalizados y
mucho más. La implementación de ADO genera una cantidad mínima de
transferencias a través de la red en escenarios clave de Internet y utiliza un
número mínimo de capas entre el servidor y el origen de datos para proporcionar
una interfaz compacta de alto rendimiento. Una metáfora habitual es hacer
referencia a ADO como la interfaz de automatización de OLE. Además ADO
utiliza convenciones y funciones similares a las de DAO y RDO, con una
semántica simplificada que facilita su aprendizaje.
Sintaxis
Parámetros
ConnectionString Opcional. Es un string conteniendo información de la
conexión.
UserID Opcional. Es un string conteniedo el nombre del
usuario con el que desea establecer la conexión.
Password Opcional. Es un string conteniendo el password que
se usará para establecer la conexión.
Cuando haya concluido las operaciones con la conexión, use el método Close
para liberar los recursos asociados con el sistema.
Cn.Close
Sintaxis
Cuando el comando no regresa ningún registro usar:
Regresa Valores
Los renglones los regresan en un RecordSet.
Parámetros
Dim Rs As ADODB.Recordset
Sintaxis
Parámetros
Constante Descripción
adOpenForwardOnly Cursor de tipo Forward-only. Predeterminado. Idéntico a un
cursor estático, excepto sólo permite desplazarse hacia delante
en los registros. Esto mejora el rendimiento en situaciones en
las que sólo se quiere pasar una vez por cada registro.
Constante Descripción
adUseClient Usa cursores del lado del cliente suministrados por una
biblioteca de cursores locales. Los motores de cursores
locales admitirán a menudo muchas características que
los cursores proporcionados por controladores no
admitirán; por tanto, el uso de esta configuración puede
proporcionar una ventaja con respecto a características
que serán habilitadas.
Propiedad Combo1.NewIndex
Devuelve el índice del último elemento agregado a un control
ComboBox.
Método Combo1.Clear
Borra el contenido de los controles ComboBox.
Propiedad Combo1.ListIndex
Devuelve o establece el índice del elemento seleccionado
actualmente en el control.
Elemento Llave
Elemento – Es el texto
que aparece dentro del Llave – Generalmente es la
ComboBox. Es la llave primaria del catálogo
información que se desplegado. Esta no se
puede ver. visualiza en el combo.
• Evento ColumnClick
' Evento ColumnClick, se dispara cuando el usuario hace click
' en los encabezados del ListView con el fin de que se ordene por
' por esa columna.
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)
If ListView1.SortOrder = lvwAscending Then
ListView1.SortOrder = lvwDescending
Else
ListView1.SortOrder = lvwAscending
End If
ListView1.SortKey = ColumnHeader.Index - 1
End Sub
Este evento unido con la propiedad Sorted en true hacen que los registros del ListView se
puedan ordenar haciendo click en las columna de éste.
ListView1.View = lvwSmallIcon
ListView1.View = lvwList
ListView1.View = lvwReport
ListView1.View = lvwIcon
' Funcion Nulos para validar que alguna columna del Listview, no contenga valores Null
Public Function nulos(ResultSet As Recordset, iIndice As Integer, Optional esNumero As
Boolean) As String
If IsNull(ResultSet(iIndice)) Then
If esNumero Then
nulos = 0
Else
nulos = ""
End If
Else
nulos = Trim(ResultSet(iIndice))
End If
End Function
Propiedades
Number
Description
Source
Métodos
Raise
Clear
Err es un Objeto
Err es un objeto que contiene información sobre el error que ha ocurrido. Este
tiene propiedades y métodos que usted puede verificar cuando un error ocurre,
limpiar el valor de un error, o generar un error.
Propiedades
La propiedad Number es un entero que indica el último error ocurrido.
Cheque el valor de Err.Number para determinar qué error ocurrió.
Método
El método Clear limpia un error.
Ejemplo:
4. Ahora inserte la estructura del reporte para los datos de la tabla, para lo cual
entre a la opción del menú Proyecto y elija Agregar Data Report. Deberá
tener tanto la estructura de la conexión como la estructura del reporte
abiertos al mismo tiempo como se muestra en la siguiente imagen:
DataMember Command1
DataSource DataEnvironment1
Order ID Long 1
Customer Name String 50 Sample string value
Order Date Date Jan 5, 2000
Order Amount Currency $1.00
10. Cuando termina la nueva definición de datos aparece en la ventana del paso
1.
Nota: Una vez terminado el reporte asegúrese de que la bandera de Save Data
with Report está desactivada en la opción del menú File.
Dim crpApplication As CRPEAuto.Application ‘ Variable para crear una aplicación de Cristal con Automation Server
Dim crpReport As CRPEAuto.Report ‘ Variable para abrir el reporte
Dim crpDatabase As CRPEAuto.Database ‘ Variable para la Base de Datos
Dim crpTables As CRPEAuto.DatabaseTables ‘ Variable para tablas de la base de datos
Dim crpTable As CRPEAuto.DatabaseTable ‘ Variable para una tabla
‘Una vez que se tiene el objeto tabla de base de datos para el objeto Report, usted puede pasar el Origen de Datos al
A + ABS(A<=49)*48 + ABS(A>=50)*142
‘ El numero a codificar esta fijo pero se puede colocar el nombre de un campo de la base de
‘ datos
DataToEncode = "2002141520"
'DataToEncode = Anio & TipoPago & Referencia
DataToPrint = ""
StartCode = Chr(40)
StopCode = Chr(41)
Para leer el código de barras deberá contar con un lector, ya sea con entrada
para teclado o serial. En el caso de que sea entrada por teclado, no se requiere
agregar código alguno para leer el código, tan solo basta ubicar el cursor en la
caja de textos en la que desea aparezca el número y pasar el código por el
lector. Para el caso de que sea serial, a continuación se muestra un ejemplo:
' MSComm1.Settings = "9600,O,7,1" 'Velocidad de 9600, con Paridad, 7 Bits de Datos y uno de paro
MSComm1.Settings = "9600,N,8,1" 'Velocidad de 9600, Sin Paridad, 8 Bits de Datos y uno de paro
' Indicar al control que lea todo el búfer al usar Input.
MSComm1.PortOpen = True
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until Len(Buffer$) > 12
' Leer los datos de respuesta de aceptación en el puerto serie.
' Cerrar el puerto serie.
MsgBox Buffer$ 'Manda el número de código a la ventana.
MSComm1.PortOpen = False
End Sub
Para este ejemplo deberá agregar el control “Microsoft Comm Control 6.0” en el
menú Proyecto – Componentes.
En caso de contar con un lector de código de barras por teclado, solo coloque el
cursor en una caja de textos y el lector pondrá el numero leído.
Requerimientos:
ActiveX Data Objects (ADO), version 2.5
Microsoft Visual Basic Enterprise Editions for Windows, version 6.0
Microsoft OLE DB Provider for SQL Server, version 7.0
Microsoft SQL Server version 7.0
El Stream Object introducido en Actives Data Object 2.5 puede ser usado para
simplificar el acceso y modificación de datos binarios largos (BLOB) en SQL
Server, a continuación se muestra un código de ejemplo:
Command1
Picture
Picture
Command2
CommonDialog1
Option Explicit
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mstream As ADODB.Stream
' Hace uso del control commondialog para abrir una ventana de
' salvar como y así poder seleccionar el nombre con que queremos
' salvar la imagen y su ubicación
With CommonDialog1
.FileName = ""
.Filter = "Image (*.gif)|*.gif"
.ShowSave
' Hace uso del control commondialog para poder seleccionar la imagen
' que desea almacenar en la base de datos (ventana de abrir)
With CommonDialog1
.FileName = ""
.Filter = "Image (*.gif)|*.gif"
.ShowOpen
If Len(.FileName) <> 0 Then
' carga en el stream la imagen del archivo
1. Agregue en las referencias del proyecto “Microsoft Excel x.0 Object Library”
a partir de los datos que se almacenen en esta tabla se generará una gráfica de
Pie en Excel.
Command2
Command1
xl.Range(strVar).Select
Set xlChart = xl.Charts.Add()
xlChart.HasLegend = False
xlChart.Type = xl3DPie ' Determinación del tipo de gráfica
xlChart.HasLegend = True ' Para colocar una leyenda dentro de la gráfica
xlChart.HasTitle = True
xlChart.ChartTitle.Text = "Gráfica Promedios" ' Titulo de la grafica
' Procedimiento para que rote la grafica solo en caso de que esta sea de tres dimensiones
For i = 30 To 180 Step 5
xlChart.Rotation = i
Next
Screen.MousePointer = vbDefault
End Sub
' Este procedimiento es para tomar los datos de la base de datos y colocarlos en arreglos,
' así como para determinar el número de columnas que se usarán.
Public Sub RecuperaDatos()
Dim Sentencia As String
' obtenemos los datos de la tabla que generarán la gráfica
Set Rs = Cn.Execute("Select cveAlumno,NombreAlumno,PromedioAlumno From Alumno")
i=1
Do Until Rs.EOF()
' Determina el número de columnas que usará
Select Case Rs!cveAlumno
Case 1
B(i) = "B"
Case 2
B(i) = "C"
Case 3
B(i) = "D"
Case 4
B(i) = "E"
Case 5
B(i) = "F"
Case 6
B(i) = "G"
Case 7
B(i) = "H"
Case 8
B(i) = "I"
Case 9
B(i) = "J"
Case 10
B(i) = "K"
Case 11
B(i) = "L"
Case 12
B(i) = "M"
End Select
' Carga los datos en arreglos
A(i) = Rs!nombrealumno
F(i) = Rs!PromedioAlumno
Rs.MoveNext
'Cerrar la ventana
Private Sub Command1_Click()
Unload Me
End Sub
C:\WINDOWS\Msagent\CHARS\Peedy.acs
Una vez pegado el icono sobre la forma, en las propiedades del agente(F4), en
la propiedad Nombre se da el que deseé (en el siguiente código de ejemplo se
dio el nombre Agente), con el nombre que se dé se deberá trabajar el código.
Agente.Characters("Genio").Play "blink"
Agente.Characters("Genio").Play "alert"
Agente.Characters("Genio").Play "Acknowledge"
Agente.Characters("Genio").Play "decline"
Agente.Characters("Genio").Play "GestureDown"
Agente.Characters("Genio").Play "explain"
Está propiedad sirve para, desplazar el agente sobre la pantalla, por medio de
coordenadas, establecidas sobre el código, como sigue:
PROPIEDAD BOOKMARK
Características de DynamiCube
• Navegación gráfica y a altas velocidades de datos multidimensionales
• Trabaja con las ediciones Profesional y Empresarial de Visual Basic, así
como con Visual C++, Delphi, Power Builder, Optima ++, el Explorador de
Internet de Microsoft, y Microsoft Acces.
• Soporta datos
Utilizando DynamiCube
Una vez que el control esté en su caja de herramientas, arrástrelo hasta la forma
en donde quiere ponerlo y dele el tamaño adecuado, está se vera así