Vous êtes sur la page 1sur 58

CENTRO NACIONAL DE

CAPACITACIN Y CALIDAD
Coordinacin de Informtica








V
V
i
i
s
s
u
u
a
a
l
l
B
B
a
a
s
s
i
i
c
c
6
6
.
.
0
0
A
A
v
v
a
a
n
n
z
z
a
a
d
d
o
o


V i s u a l B a s i c a v a n z a d o

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 2
Coordinacin de Informtica

ndice
PRESENTACIN ............................................................................................... 3
INTRODUCCIN ................................................................................................ 4
MDULO I. PROCEDIMIENTOS Y FUNCIONES .............................................. 5
PROGRAMACIN ORIENTADA A EVENTOS ..................................................................... 5
PROCEDIMIENTOS .............................................................................................................. 6
Procedimientos Sub ............................................................................................................ 6
Funciones (Function) .......................................................................................................... 8
ARGUMENTOS ................................................................................................................... 10
Tipos de datos .................................................................................................................. 10
Paso de argumentos como valor: ByVal ........................................................................... 12
Paso de argumentos por referencia: ByRef ...................................................................... 12
COMENTARIOS .................................................................................................................. 13
ESTRUCTURAS DE CONTROL ......................................................................................... 14
Expresin condicional ....................................................................................................... 14
Estructura de decisin IF THEN .................................................................................... 14
Estructura de decisin SELECT CASE ............................................................................. 15
Estructura de decisin DO ................................................................................................ 15
Estructura de decisin FOR NEXT ................................................................................ 15
MDULO II. GESTIN DE BASES DE DATOS ............................................... 16
CONEXIONES CLIENTE SERVIDOR .............................................................................. 16
ODBC (CONECTIVIDAD ABIERTA A BASES DE DATOS) .............................................. 16
ESTABLECIMIENTO DE CONEXIONES CLIENTE-SERVIDOR ........................................ 17
ActiveX Data Object: ADO ................................................................................................ 18
El control FlexGrid en la gestin de datos ........................................................................ 22
Objeto Recordset .............................................................................................................. 24
Instrucciones SQL en Visual Basic ................................................................................... 26
Exportacin de Datos ........................................................................................................ 28
PROYECTO PRINCIPAL .................................................................................. 32
FORMULARIOS Y PROGRAMACIN EN VISUAL BASIC ............................................... 32
V i s u a l B a s i c a v a n z a d o

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 3
Coordinacin de Informtica

PRESENTACIN
El Instituto Mexicano del Seguro Social conjuntamente con el Sindicato
Nacional de Trabajadores del Seguro Social comprometidos con la superacin y
actualizacin del personal, impulsan la Capacitacin en materia de Informtica,
Humanstica, Promocional y de Programas Institucionales que se vinculen a la
solucin de los problemas de la operacin, favoreciendo el otorgamiento de
servicios de calidad.
En este contexto la Coordinacin de Informtica del Centro Nacional de
Capacitacin y Calidad, cumple con la tarea de elaborar los Materiales de
Apoyo Didctico del Participante para sustentar los cursos de los Planes de
Capacitacin en Informtica que integran el programa de trabajo de esta
Coordinacin y que estn abiertos a todos nuestros compaeros trabajadores.
A continuacin se presenta el Material de Apoyo Didctico del Participante
Visual Basic 6.0 Avanzado, que ha sido elaborado con informacin, actualizada
y el sustento pedaggico y didctico para que cumpla con el fin para el cual fue
elaborado: conducir y apoyar el aprendizaje de los trabajadores.
V i s u a l B a s i c a v a n z a d o

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 4
Coordinacin de Informtica

INTRODUCCIN
El presente material de apoyo incluye una exposicin detallada de las
herramientas empleadas con mayor frecuencia en el desarrollo de aplicaciones
con Visual Basic: trminos, definiciones, ejemplos, ilustraciones y un proyecto
cuyos contenidos permitirn a los participantes no slo obtener una idea global
sobre el empleo de estas, sino tambin la posibilidad de crear sistemas
informticos acordes a necesidades especficas en diversas reas de trabajo,
siguiendo los modelos aqu presentados.
Visual Basic 6.0 Avanzado incluye dos mdulos en los que se concentra la
informacin necesaria para desarrollar aplicaciones, siendo estos los
siguientes:
MDULO I. ---------------------------------------- PROCEDIMIENTOS Y FUNCIONES
MDULO II. ------------------------------------------ GESTIN DE BASES DE DATOS


P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 5
Coordinacin de Informtica

MDULO I. PROCEDIMIENTOS Y FUNCIONES
PROGRAMACIN ORIENTADA A EVENTOS
Los programas se relacionan con el usuario, esperan una respuesta y procesan las entradas
de datos de forma predecible. A esta manera de trabajar una aplicacin, se le conoce como
programacin orientada a eventos. Esta es una caracterstica fundamental de los programas
creados en Visual Basic; stos se construyen partiendo de un grupo de objetos inteligentes
que saben cmo responder al darse la interaccin con el usuario.
La orientacin a eventos de los programas desarrollados en Visual Basic, se traduce en que
gran parte de las operaciones que pueden llevar a cabo las aplicaciones que construya,
sern ejecutadas mediante procedimientos de evento. Estos bloques de cdigo (orientados a
evento) procesarn las entradas, calcularn valores, mostrarn la salida de datos y tambin
seran capaces de realizar otras tareas.
Cada objeto en Visual Basic tiene un conjunto predefinido de eventos, a los cuales puede
responder; estos eventos se listan en el cuadro de lista desplegable Procedure
(procedimiento) de la ventana Cdigo para cada uno de los objetos contenidos en el
formulario en uso. Es posible escribir un procedimiento de evento no slo para cada objeto,
sino tambin por cada uno de los eventos reconocidos por visual para los controles; y
aunque es muy probable que no necesite programar ms de un evento, considere que existe
un amplio nmero de alternativas entre las cuales elegir para adecuar el funcionamiento y
operatividad de sus programas segn los requerimientos especficos que sea necesario
satisfacer.


P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 6
Coordinacin de Informtica

Ejemplo 1: al cargarse un formulario, se ejecutar el procedimiento que incluya el evento
Form_Load(), en la pantalla de cdigo.
Private Sub Form_Load()
txtUsuario.Text=
txtContrasea.Text=
cmdAceptar.Enabled=False
cmdCancelar.Enabled=False
txtUsuario.SetFocus
End Sub
Ejemplo 2: al hacer click en un command button nombrado cmdAgregar, el procedimiento del
evento cmdAgregar_Click() es ejecutado.
Private Sub cmdAgregar_Click()
intInstruccion = Agregar
P_Cambios
txtArticulo.SetFocus
End Sub
De esta forma, la mayora de los controles estarn vinculados a eventos concretos, a partir
de los cuales tendrn efecto los procedimientos codificados.
PROCEDIMIENTOS
Procedimientos Sub
Un procedimiento Sub no puede retornar un valor, as que es una completa declaracin; La
sintaxis para cualquier procedimiento Sub es la siguiente:
Sub NombreProcedimiento(ArgList*) *vase el apartado de Argumentos
Declaraciones o expresiones
End Sub
Los procedimientos Sub pueden ser de tipo Private o Public. Los procedimientos Private
Sub tendrn efecto sobre el objeto o control al que se asocia el evento que desencadena el
procedimiento. En el siguiente ejemplo se establece que el procedimiento se llevar a cabo
cuando el usuario ejecute el evento doble clic sobre el objeto flxClientes. El cdigo escrito no
tendr utilidad alguna si el evento no ocurre.
Private Sub flxClientes_DblClick()
Dim strSql As String
Dim rstClieSel As New ADODB.Recordset
flxClientes.Col = 0
strSql = "SELECT * FROM Clientes WHERE Clie_Clave= " & flxClientes.Text
rstClieSel.Open strSql, strConexion, adOpenStatic, adLockReadOnly
txtClave.Text = rstClieSel("Clie_Clave")
txtNombre.Text = rstClieSel("Clie_Nombre")
txtRfc.Text = rstClieSel("Clie_Rfc")
Set rstClieSel = Nothing
End Sub
P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 7
Coordinacin de Informtica

Los procedimientos Public Sub generalmente se utilizan o son llamados desde cualquier
otro procedimiento pblico o privado (siempre y cuando ambos se encuentren cargados en
memoria, es decir, cuando ambas pantallas que los contengan se encuentren en ejecucin);
si el procedimiento se describe dentro de la pantalla de cdigo de alguno de nuestros
formularios, todos los controles u objetos dentro del formulario podrn utilizarlo, con su
evento respectivo, permitiendo ahorrar lneas de cdigo con tan slo nombrarlo. Observe el
siguiente ejemplo, en el que se describe como un procedimiento el formato que debe tener
un FlexGrid.
Public Sub P_FormatoGrid()
With flxClientes
.Cols = 3
.Rows = 1
.Row = 0
.Col = 0
.Text = "Clave"
.ColWidth(0) = 600
.Col = 1
.Text = "Nombre"
.ColWidth(1) = 3500
.Col = 2
.Text = "R.F.C."
.ColWidth(2) = 1600
End With
End Sub
Al cargarse el formulario en cuestin, el objeto flxClientes, referido en el procedimiento
P_FormatoGrid(), deber mostrarse con las caractersticas descritas; a continuacin vea
como es llamado este procedimiento desde el Private Sub Form_Load.
Private Sub Form_Load()
P_FormatoGrid
End Sub
Igualmente ser posible declarar un procedimiento Sub en algn Mdulo (o mdulo
estndar) del proyecto. Los mdulos son archivos especiales con extensin .bas que
contienen las variables y procedimientos que se desean compartir para todas las formas y
controles del proyecto. Esto permite reducir lneas de cdigo de programacin y evita
duplicar el cdigo. Cada mdulo puede contener: Declaraciones; es decir constantes y
variables globales y Procedimientos generales. Los procedimientos que se encuentran en un
mdulo estarn disponibles en todo momento mientras se ejecuta nuestro programa (estarn
n memoria todo el tiempo). Todos los procedimientos de un mdulo, pueden ser llamados
desde el cdigo. Ejemplo:
Cdigo en el mdulo:
Sub P_Bienvenida()
MsgBox "Bienvenido al Sistema de Administracin Empresarial"
End Sub
P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 8
Coordinacin de Informtica

Uso de este procedimiento en los mens del formulario principal en una aplicacin:
Private Sub mnuClientes_Click()
frmClientes.Show
P_Bienvenida
End Sub

Private Sub mnuProductos_Click()
frmProductos.Show
P_Bienvenida
End Sub

Private Sub mnuVentas_Click()
frmVentas.Show
P_Bienvenida
End Sub
Como se sugiere en el cdigo para cada men, al abrirse los formularios respectivos, se
llama al procedimiento P_Bienvenida, que en pantalla mostrar el mensaje: "Bienvenido al
Sistema de Administracin Empresarial", que se ha descrito en el Msgbox del Sub
P_Bienvenida, creado en el mdulo.
Es comn tambin desarrollar procedimientos dentro del mdulo principal del proyecto, que
sean vlidos para el arranque de la aplicacin en uso, pudiera tratarse por ejemplo, del
procedimiento en el que se detalla la informacin concerniente a la conexin del programa
con una Base de Datos y tal vez la invocacin de la primera pantalla que se mostrara al
ejecutarse.
Por ejemplo:
Sub Main()
Dim cntConexion As New ADODB.Connection
With cntConexion
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=C:\Visual Basic\Ejercicios\Empresa.mdb"
.Open
strConexion = .ConnectionString
.Close
End With
Set cntConexion = Nothing
mdiPrincipal.Show
End Sub
FUNCIONES (Function)
Una funcin puede retornar un valor y deber utilizarse como parte de una expresin; la
sintaxis habitual de una funcin es la siguiente;
Function NombreFuncin (ArgList) [As tipo]
Declaraciones
End Function
P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 9
Coordinacin de Informtica

Las Function, pueden declararse como Private o Public, tal y como sucede con los
procedimientos Sub. Las Private Function pueden ser utilizadas dentro de un formulario, y
por uno o varios controles en el mismo, mientras que las Public Function ofrecen la
posibilidad de ser llamadas desde cualquier pantalla o control de la aplicacin.
Se puede utilizar la siguiente Private Function, definida como booleana, para exigir la
captura de datos en una caja de texto llamada txtNombre.Text dentro de un formulario.
Private Function F_ValidarDatos() As Boolean
F_ValidarDatos = False
If txtNombre.text = Then
Msgbox Debe capturar un nombre en la caja de texto
txtNombre.SetFocus
Exit Function
End if
F_ValidarDatos = True
End Function
Ahora bien, la funcin F_ValidarDatos tiene que llamarse desde otro procedimiento dentro
del cdigo del formulario donde se ha creado, para as ejecutarse; en nuestro ejemplo, en
una pantalla de captura, si el usuario no ha registrado el dato requerido en la caja de texto
indicada en la funcin, al intentar aceptar la informacin, el programa exigir la escritura de
los datos requeridos antes de continuar con la secuencia de instrucciones codificadas en el
procedimiento que invoca a la funcin:
Private Sub cmdAceptar_Click()
If Not F_ValidarDatos Then Exit Sub
Msgbox Los datos son vlidos
Unload me
frmSiguiente.Show
End Sub
Al describir alguna Function dentro de los mdulos, sta podr invocarse desde cualquier
forma o control del proyecto. Observe el desarrollo de la siguiente funcin:
Public Function F_ClaveConsecutiva(astrTabla As String, astrCampo As String) As Long
Dim rstConsecutiva As New ADODB.RecordSet
Dim strSql As String
strSql = SELECT & astrCampo & FROM & astrTabla & ORDER BY & astrCampo
rstConsecutiva.Open strSql, strConexion, AdOpenStatic, AdLockReadOnly
If rstConsecutiva.RecordCount = 0 Then
F_ClaveConsecutiva = 1
Else
rstConsecutiva.MoveLast
F_ClaveConsecutiva = rstConsecutiva(0) + 1
End If
Set rstConsecutiva = Nothing
End Function
P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 10
Coordinacin de Informtica

Tal y como ocurre con una Private Function, toda Public Function debe invocarse para ser
ejecutada. Recuerde que las Function son parte de una expresin, y no pueden devolver un
valor por s solas. Observe cmo la funcin anterior (F_ClaveConsecutiva) se utiliza en el
cdigo de un procedimiento Sub.
Private Sub cmdAceptar_Click()
Dim cntClientes As New ADODB.Conection
Dim strSql As String
If intInstruccion = Agregar Then
If Not F_ValidarDatos Then Exit Sub
strSql = INSERT INTO Clientes
strSql = strSql & (Clie_Clave, Clie_Nombre, Clie_Rfc)
strSql = strSql & VALUES (
strSql = strSql & F_ClaveConsecutiva (Clientes, Clie_Clave) & ,
strSql = strSql & txtNombre.Text & ,
strSql = strSql & txtRfc.Text & )
With cntClientes
.ConnectionString = strConexion
.Open
.Execute (strSql)
.Close
End with
Msgbox El registro se agreg correctamente
intInstruccin = Inactivo
P_ActualizarGrid
P_Inicial
End If
End Sub
ARGUMENTOS
Un procedimiento puede obtener datos externos necesarios para su propia ejecucin. Esta
informacin se contiene en variables que se cargan o transfieren al procedimiento cuando es
invocado. Para ello se utilizan los argumentos.
En el apartado de la sintaxis de los procedimientos Sub y Function se menciona el trmino
Arglist, que no es otra cosa ms que la lista de argumentos que emplea cada
procedimiento, separados por comas (,) si hay ms de uno, o bien vaco si no se considera
necesario incluirlos.
La sintaxis de un argumento es:
([ByRef|ByVal] Nombre_de_variable As Tipo)
Tipos de datos
Los argumentos de los procedimientos tienen el tipo de dato Variant de forma
predeterminada, es decir que puede asumir prcticamente cualquier tipo de dato reconocido
en Visual Basic. Sin embargo, es posible declarar otros tipos de datos para los argumentos,
segn se requiera, como se deja ver en los ejemplos siguientes:
P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 11
Coordinacin de Informtica

Public Function F_ClaveConsecutiva(astrTabla As String, strCampo As String) As Long
Dim rstConsecutiva As New ADODB.RecordSet
Dim strSql As String
strSql = SELECT & astrCampo & FROM & astrTabla & ORDER BY & astrCampo
rstConsecutiva.Open strSql,strConexion,AdOpenStatic,AdLockReadOnly
If rstConsecutiva.RecordCount = 0 Then
F_ClaveConsecutiva = 1
Else
rstConsecutiva.MoveLast
F_ClaveConsecutiva = rstConsecutiva(0) + 1
End If
Set rstConsecutiva = Nothing
End Function
En este ejemplo, astrTabla y astrCampo son los argumentos, definidos ambos con String
como el tipo de dato. Su uso se muestra en otro procedimiento dentro de la aplicacin:
Private Sub cmdAceptar_Click()
Dim cntClientes As New ADODB.Conection
Dim strSql As String
If intInstruccion = Agregar Then
If Not F_ValidarDatos Then Exit Sub
strSql = INSERT INTO Clientes
strSql = strSql & (Clie_Clave, Clie_Nombre, Clie_Rfc)
strSql = strSql & VALUES (
strSql = strSql & F_ClaveConsecutiva (Clientes, Clie_Clave) & ,
strSql = strSql & txtNombre.Text & ,
strSql = strSql & txtRfc.Text & )
With cntClientes
.ConnectionString = strConexion
.Open
.Execute (strSql)
.Close
End with
Msgbox El registro se agreg correctamente
intInstruccin = Inactivo
P_ActualizarGrid
P_Inicial
End If
End Sub
En este caso la expresin F_ClaveConsecutiva (Clientes, Clie_Clave), describe con
claridad la informacin que contendrn las variables, en cuyo caso hacen referencia al
nombre de una tabla y al nombre de un campo de la misma, respectivamente.
Sub P_Calculo (asngPrecio As Single, aintCantidad As Integer)
lblTotal.Caption = asngPrecio * aintCantidad
End Sub
P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 12
Coordinacin de Informtica

En donde asngPrecio y aintCantidad son los nombres de los argumentos; y Single e Integer
determinan el tipo de dato al que se refiere cada variable. La siguiente tabla muestra los
distintos tipos de datos que podrn asignarse a las variables en Visual Basic.
Nombre Descripcin Rango de valores Espacio requerido
Integer (entero) Numrico, entero de -32768 a 32767 16 bits (2 bytes)
Long (largo) Numrico, entero de -21474836 48 a 2147483647 32 bits (4 bytes)
String (cadena) texto de 0 a 65500 caracteres aprox. 8 bits (1 byte) por
carcter
Currency
(moneda)
Numrico, decimal
fijo
de -922337203685477,5807 a
9223372036854777,5807
64 bits (8 bytes)
Single (simple) Numrico real
de +- 1.40x10
45
a +-3.40x10
38

32 bits (4 bytes)
Double (doble) Numrico, real
de +- 4.94x10
324
a +- 1.79x10
308

64 bits (8 bytes)
Byte Carcter 0 a 255 1 byte
Boolean Boleano True False 2 bytes
Date Fecha/Hora 1/01/100 al 31/12/9999 8 bytes
Variant
(variable)
Adaptable Cualquiera de los anteriores Depende del valor
Paso de argumentos como valor: ByVal
ByVal es una expresin clave que indica a Visual Basic que debe gestionar una copia del
argumento original y devolverlo sin modificar cuando el procedimiento termina, an cuando
durante la ejecucin del mismo el valor de la variable haya sido actualizado; el cambio
afecta slo a la copia y no a la variable original. La forma predeterminada de pasar valores
en Visual Basic es por valor.
ByVal se utiliza dentro de una lista de argumentos tal y como se muestra en el ejemplo:
Private Function Operacion(ByVal adblIncremento As Double)
adblIncremento = adblIncremento * 1.05
adblIncremento = adblIncremento / 2
Operacin = adblIncremento
End Function
Al terminar, la variable que se haya utilizado como argumento contendr el valor original
sin sufrir ningn cambio.
Paso de argumentos por referencia: ByRef
Al pasar argumentos por referencia se permite al procedimiento el acceso al contenido real
de la variable en su direccin de memoria (ByRef significa por referencia, esta referencia
es hacia la ubicacin de la variable original en la memoria). Como resultado, el
P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 13
Coordinacin de Informtica

procedimiento al que se haya pasado la variable como argumento, puede modificar el valor
de la misma.
Esta expresin se empelar cuando sea necesario actualizar el valor de una variable al
ejecutarse un procedimiento.
Function F_OpcionCombo(ByRef acboCombo As ComboBox, alngIndice As Long)
Dim intContador As Integer
For intContador = 0 To acboCombo.ListCount 1
With acboCombo
If .ItemData(intContador) = alngIndice Then
F_OpcionCombo = intContador
Exit For
End If
End With
Next
End Function
Si el argumento no estuviera definido ByRef, no se realizaran los cambios en el combo.
COMENTARIOS
En Visual Basic el apstrofe () se utiliza para agregar lneas de comentario, las cuales
generalmente contendrn notas explicativas. El hecho de incluir comentarios en el cdigo de
un programa permite describir la funcin que cumplen las sentencias ms importantes; estas
notas no se procesan durante la ejecucin de los procedimientos, simplemente facilitan la
relectura y revisin del cdigo en sesiones posteriores. En la pantalla de Visual se distinguen
adems por mostrarse en color verde. Ejemplo:
Public Function F_ClaveConsecutiva(Astr_Tabla As String, Astr_Campo As String) As Long
'se dimensiona el RecordSet
Dim RSTConsecutiva As New ADODB.Recordset
'se dimensiona la variable SQL
Dim strsql As String
'instruccin que extraer informacin desde la base de datos
strsql = "SELECT " & Astr_Campo & " FROM " & Astr_Tabla & " ORDER BY " &
Astr_Campo
'expresin que crea el RecordSet
RSTConsecutiva.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
'el siguiente If determina el nmero consecutivo con el que un nuevo registro se agregar
a la base de datos
If RSTConsecutiva.RecordCount = 0 Then
F_ClaveConsecutiva = 1
Else
RSTConsecutiva.MoveLast
F_ClaveConsecutiva = RSTConsecutiva(0) + 1
End If
Set RSTConsecutiva = Nothing
End Function
P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 14
Coordinacin de Informtica

ESTRUCTURAS DE CONTROL
Como ya se ha descrito al comienzo de este primer mdulo, al activarse un evento o suceso,
Visual Basic responde llamando al procedimiento asociado con el objeto que reconoce tal
evento. La orientacin a eventos, caracterstica de los programas desarrollados en Visual
Basic, se traduce en que la mayora de las operaciones disponibles en las aplicaciones,
sern ejecutadas mediante procedimientos de eventos. El cdigo permite procesar la entrada
de datos, el clculo de nuevos valores y la salida de informacin, entre otras tareas. Podr
crear procedimientos capaces de responder a cualquier situacin en la medida en que
conozca y aplique las estructuras de control: las estructuras de decisin, que se utilizan
para comparar variables, propiedades y valores, y los bucles, que nos dan la posibilidad de
ejecutar un grupo de sentencias una y otra vez un nmero determinado de veces o hasta que
se cumpla una condicin
Expresin condicional
Una de las herramientas ms tiles en el procesamiento de informacin es la expresin
condicional, que forma parte de una sentencia de programa que realiza preguntas que
requieren respuestas del tipo True o False sobre una propiedad o variable en el cdigo del
programa. La siguiente expresin condicional:
Precio = 180
Resultar verdadera si la variable precio contiene un valor similar a 180, en caso contrario
resultar falsa. En este tipo de expresiones se utilizan los operadores de comparacin que se
muestran a continuacin:
OPERADOR DE
COMPARACIN
SIGNIFICADO
= Igual que
<> Distinto de
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
BETWEEN Entre (intervalos)
Estructura de decisin IF THEN
La estructura If Then permite evaluar una condicin en el programa y llevar a cabo una
serie de instrucciones, segn sea el resultado de dicha condicin. La sintaxis habitual en esta
estructura es la siguiente:

P r o c e d i m i e n t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 15
Coordinacin de Informtica

IF <<condicin>> THEN
<<instrucciones>> (verdadero)
ELSE
<<instrucciones>> (falso)
END IF
Estructura de decisin SELECT CASE
Funciona de manera similar a la estructura anterior, pero resulta ms conveniente cuando se
debe evaluar la bifurcacin de una variable clave en varias clusulas. La sintaxis empleada
se muestra en la pgina siguiente.
SELECT CASE <<objeto>>
CASE x
<<instrucciones>>
CASE y
<<instrucciones>>
CASE z
<<instrucciones>>
CASE ELSE
<<instrucciones>>
END SELECT
Estructura de decisin DO
Permite ejecutar un grupo de sentencias hasta que cierta condicin del bucle o ciclo sea
verdadera; los bucles con DO se utilizan cuando no se conoce con exactitud el nmero de
ocasiones en las que se repetir el conjunto de instrucciones. La sintaxis habitual es la
siguiente:
DO WHILE <<condicin>>
<<instrucciones>>
LOOP
Estructura de decisin FOR NEXT
Permite crear bucles para ejecutar un conjunto de sentencias contenidas en un
procedimiento un nmero determinado de veces.
FOR <<contador>> inicial TO final
<<instrucciones>>
NEXT

G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 16
Coordinacin de Informtica

MDULO II. GESTIN DE BASES DE DATOS
Visual Basic es compatible con una gran variedad de formatos de bases de datos, pues
permite utilizar gestores tales como Access, FoxPro, Paradox, Dbase o SQL Server. Con las
potentes herramientas que posee Visual Basic, podr mejorar la presentacin de la
informacin contenida en sus bases de datos y simplificar, simultneamente, la
administracin de la misma.
CONEXIONES CLIENTE SERVIDOR
Los sistemas Cliente-Servidor, se refieren elementalmente a aquellos equipos de cmputo
que contienen al mismo tiempo bases de datos (servidores) y la o las aplicaciones que
utilizan precisamente esas bases de datos (clientes). En una red, el concepto Cliente-
Servidor hace alusin a la conexin entre estaciones de trabajo (clientes) y un servidor de
archivos (bases de datos, aplicaciones); en este caso cada conexin permite un enlace
individual entre ambos. (Como recomendacin por dems necesaria, cuando desarrolle una
aplicacin que tenga acceso a una base de datos remota, debe implementar un modelo
relacional bien diseado).
Antes de tomar la decisin final sobre el modelo de programacin que va a implementar,
debe tener en cuenta una serie de aspectos que afectan al diseo independientemente del
modelo: para tener acceso a un servidor remoto, su aplicacin tiene que establecer una
conexin. Esta conexin crea un vnculo de comunicaciones en la red entre el servidor y el
cliente. A su aplicacin se le pasa un controlador de esta conexin. Una vez creada, la
conexin proporciona acceso a un servidor especfico, a una de las bases de datos del
servidor y a cualquiera de los objetos temporales especficos de la conexin que su
aplicacin cree en el servidor.
ODBC (CONECTIVIDAD ABIERTA A BASES DE DATOS)
La tecnologa ODBC (Conectividad abierta a bases de datos) proporciona una interfase
comn para acceder bases de datos heterogneas basadas en SQL. ODBC esta basado en
el lenguaje Estructurado de consultas (SQL) como una norma para acceder a los datos. Esta
interfase proporciona interoperabilidad al mximo: no solo la aplicacin puede acceder bases
de datos de diferentes Sistemas basados en SQL, a travs de un juego comn de cdigo.
Esto le permite a un diseador construir y distribuir una aplicacin cliente/servidor sin tener
un DBMS especfico. Se agregan drivers para unir la aplicacin, a la base de datos destino,
con el fin de que el usuario elija el DBMS deseado.
ODBC es un intermediario entre bases de datos y aplicaciones, cuya tarea es sostener una
conversacin de preguntas y respuestas entre dos "sujetos" que no hablan el mismo idioma y
que gestionan sus recursos de forma diferente, esto es una abstraccin de un concepto muy
tecnificado. Concretando, puedes tener un CAD, una hoja de calculo, un editor de texto, etc.,
cuyas finalidades son las que quieras, menos gestionar datos en la forma que lo hace un
sistema de base de datos; estas aplicaciones no saben como se obtienen y se guardan datos
en, por ejemplo, un archivo MDB de Microsoft Access, o en un DBF, o en SQL Server, o en
algn otro. Por otra parte, pero en lo mismo, que tal si un usuario de Paradox quiere extraer
informacin de SQL Pato, un nuevo sistema de lo ms avanzado que nadie conoce pero que
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 17
Coordinacin de Informtica

alguien uso para guardar informacin que resulta necesaria (no sabes cuntas veces
sucede), ambos son sistemas de bases de datos, Paradox conoce la forma de leer los
archivos de los sistemas conocidos, pero no los de SQL Pato.
En el ambiente Windows, Microsoft cre la tecnologa ODBC pensando en este problema. No
es una solucin de la comunidad informtica del orbe, es de Microsoft, y por eso se basa en
los impulsos estomacales del corazn de Microsoft; esto quiere decir que no se esta
recomendando esta tecnologa, sino que mientras sea en Windows, hay que usarla cuando
no hay algo mejor, punto. ODBC es una utilera que alberga controladores. La utilera sirve
para gestionar los controladores, y los controladores son los que saben "hablar" con las
bases de datos. Entonces el "acuerdo" entre Microsoft y los fabricantes de software para
Windows fue: "Ustedes, que hacen software no especifico para bases de datos, enseen, si
quieren, a sus aplicaciones a comunicarse con el armatoste llamado ODBC; y ustedes,
fabricantes de bases de datos, hagan controladores de sus sistemas para ponerlos en la
utilera, si quieren que otras aplicaciones puedan acceder su informacin".
As Excel puede leer una base de datos en Access o SQL Server, incluso SQL Pato (si es
que alguien fabric un controlador de ODBC). Siendo sinceros, esas no son todas las
razones ni los intereses por los que ODBC fue implementado, hay cierta oscuridad por ah.
En ODBC no se tiene que hacer gran cosa, es una simple tarea, se llama crear un origen de
datos, otros le denominan fuente en vez de origen. Un origen o fuente de datos consiste en el
nombre, el controlador y la base de datos. Por ejemplo, si un usuario quiere tener acceso a
una base de datos de Access, digamos que se llama Negocio.mdb, desde una hoja de
clculo de Excel para consultar su volumen de ventas por pas, este usuario crea un nuevo
origen de datos en ODBC llamado Volumen_Ventas (este es, pues, el nombre), despus
selecciona un controlador para Microsoft Access e indica el archivo de base de datos est en
"c:\LaEmpresa\Administracin\Negocio.mdb". Eso es bsicamente de lo que se trata.
ESTABLECIMIENTO DE CONEXIONES CLIENTE-SERVIDOR
Dependiendo del modelo de programacin cliente-servidor de acceso a datos que elija,
puede establecer una conexin con un servidor remoto desde el cdigo con los siguientes
mtodos descritos.
En Visual Basic, existen tres formas de acceso a datos: ActiveX Data Objects (ADO), Remote
Data Objects (RDO) y Data Access Objects (DAO). Una interface de acceso a datos es un
modelo de objetos que representan una forma de accesar datos desde una BD. La ltima
versin de conexin es ADO, que resulta simple y muy flexible, adems de que contiene la
facilidad de uso de DAO y la robustes de RDO.
DAO - Data Access Objects (Objetos de Acceso a Datos) es el mtodo anterior (VB 5) para
programar bases de datos. DAO usa la antigua tecnologa OLE para conectarse con las
bases de datos.
RDO - Remote Data Objects (Objetos de Datos Remotos) es el mtodo usado para conectar
PCs con bases de datos remotas en un ambiente cliente-servidor (por ejemplo una base de
datos Oracle en un equipo remoto Unix), Usa la ODBC (Open Data Base Conectivity, o
Conectividad Abierta de Bases de Datos), puesto que los controladores OBDC son el mtodo
que emplea en general Windows 9x para conectarse con bases de datos externas.
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 18
Coordinacin de Informtica

ADO - Activex Data Object (Objetos de Datos Activos) ADO es un elemento de la API
(Application Program Interface) de Microsoft que le permite escribir aplicaciones para
Windows que acceden a bases de datos relacionales y no-relacionales provenientes tanto de
Microsoft como de cualquier otro proveedor. Una aplicacin para ADO es por ejemplo cuando
se tiene una Sitio WEB y se desea tener una base de datos que los usuarios puedan
examinar y actualizar. Si la pgina posee una archivo de tipo IBM DB2 o de Oracle entonces
podremos escribir un programa con instrucciones en ADO dentro del archivo HTML que lo
identifique como un ASP (Active Server Page). Cuando el usuario haga la peticin de la
pgina ASP, sta devolver los datos pedidos por el usuario por medio de las Instrucciones
en ADO.
Al igual que otras interfaces de Microsoft, ADO esta orientado a objetos y es parte de una
estrategia de Microsoft llamada UDA (Universal Data Access) que consiste en intentar crear
un puente entre los diferentes formatos de archivos de los Sistemas Manejadores de Bases
de Datos para lograr una estandarizacin de la informacin y a su vez crear nuevos drivers
para los formatos de archivos venideros.
En este curso aprenderemos a manejar conexiones con bases de datos utilizando la interfase
ADO, para lo cual describiremos los procedimientos necesarios para crear la referencia
conveniente, la definicin de la conexin con sus caractersticas bsicas, y la ejecucin y
cierre de la base de datos mientras el programa est en uso.
ActiveX Data Object: ADO
Para crear la referencia a ADO, es decir activar la disponibilidad de las funciones y
propiedades de esta interfase, deber llevar a cabo el siguiente procedimiento:
1. Men Project
2. Opcin References
3. Seleccionar de la lista Microsoft ActiveX Data
Objects 2.5 Library (o la versin disponible)
4. Presionar OK
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 19
Coordinacin de Informtica


Una vez que se ha referenciado la librera ADO, ser posible dimensionar la conexin, para
ello considere la ubicacin de la base de datos; sta puede localizarse en servidor, en la
misma ruta de la aplicacin que se est desarrollando, o bien, en un directorio distinto al de
la aplicacin dentro del equipo de cmputo.
Al crear la conexin con la base de datos tendr que determinar si la conexin permanecer
abierta permanentemente o si estar disponible slo cuando la aplicacin necesite de acudir
a la base de datos para gestionar
la informacin de la misma
(actualizar, agregar, consultar,
eliminar registros). Por defecto,
la aplicacin reconocer la
conexin con la base de datos al
haber sido definida en el mdulo
principal, desde el arranque de la
misma, siempre que no haya
olvidado establecer como objeto
inicial al procedimiento principal.
(Startup Object: Sub Main)

G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 20
Coordinacin de Informtica

1. CONEXIONES PERMANENTES
a. EN EL MISMO EQUIPO Y UBICACIN
En primer lugar deber dimensionar una variable global que identifique la nueva conexin,
como nueva conexin ADO, dentro del mdulo principal del proyecto.
Global CNTventas As ADODB.Connection
Enseguida crear el procedimiento en el que se instancie o active la nueva conexin,
definiendo las propiedades principales para la misma, como son: el motor del gestor de la
base de datos y la ruta del origen de datos.
Sub Main()
Set CNTventas = New ADODB.Connection
With CNTventas
.Provider = "Microsoft.jet.oledb.4.0"
.ConnectionString = "Data Source=" & App.Path & "\BD_Procedimientos.mdb"
.Properties(15) = "PASSWORD"
.Open
End With
End Sub
La propiedad .Provider permite establecer el motor del DBMS, en este caso
Microsoft.Jet.Oledb.4.0 que es el motor de Microsoft Access XP, por lo cual recomendamos
utilizar tal versin de Access para verificar los ejercicios incluidos en este material.
.ConnectionString nos da la posibilidad de establecer la ubicacin en disco de la base de
datos; Data Source = App.Path sugiere que el archivo de base de datos se localiza en el
mismo directorio que el proyecto desarrollado en Visual Basic (App = Application). Por ltimo,
se incluye el nombre del archivo de base de datos, BD_Procedimientos.mdb.
Si ha definido algn password para ingresar al archivo de base de datos (recomendable),
deber indicarlo en Visual Basic, utilizando la propiedad 15, describiendo el password
correspondiente, .properties(15) = password.
Finalmente, abra la conexin declarando la sentencia .open. Ser necesario despus de
establecer la conexin, determinar qu formulario se mostrar en pantalla al iniciar su
aplicacin.
b. EN EL MISMO EQUIPO Y DISTINTA UBICACIN
Lo nico que deber hacer es redireccionar la propiedad .ConnectionString, eliminando la
cadena App.Path y describiendo en su lugar la ruta completa que define la ubicacin de la
base de datos y su nombre:
.ConnectionString = "Data Source=C:\Visual Basic\Mis Proyectos\Empresa.mdb"
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 21
Coordinacin de Informtica

c. CONEXIN A SERVIDOR
Para establecer una conexin permanente a servidor (DNS), bastar con modificar tambin
la propiedad .ConnectionString, de la siguiente forma:
.ConnectionString = "Data Source & \\Servidor\Carpeta1\Carpeta2\Archivo.mdb"
2. CONEXIONES PURAS (recomendadas)
Cuando ha establecido una conexin permanente, la carga de la aplicacin en memoria se
torna pesada y como usted sabe, la velocidad de respuesta de su programa se reduce y si lo
que pretendemos es simplificar y agilizar la operacin de aplicaciones, entonces tendramos
que establecer un tipo de conexin que se abra y cierre slo cuando exista la necesidad de
consultar o actualizar la base de datos.
Hacer esto implica posiblemente ms lneas de cdigo en Visual Basic, pero ms eficiencia
en el tiempo de respuesta del programa desarrollado.
Dimensione en el mdulo principal una variable global como cadena de texto, que servir
posteriormente para identificar la ruta de la base de datos.
Global STRconexion As String
Ahora dimensione, instancie y abra la nueva conexin ADO dentro del procedimiento
principal en el mdulo, sealando las propiedades principales.
Sub main()
Dim CNTconexion As New ADODB.Connection
With CNTconexion
.Provider = "Microsoft.jet.oledb.4.0"
.ConnectionString = "Data Source= & App.Path & \Empresa.mdb"
.Properties(15) = "PASSWORD"
.Open
Despus de abrir la conexin asigne la variable que defini para identificar la ruta de la base
de datos y cierre la conexin.
STRconexion = .ConnectionString
.Close
End With
En ltimo lugar desactive la conexin y finalice el procedimiento.
Set CNTconexion = Nothing
End Sub
Una vez concluido el procedimiento, la definicin de la nueva conexin ADO se vera de la
siguiente forma:
Sub main()
Dim CNTconexion As New ADODB.Connection
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 22
Coordinacin de Informtica

With CNTconexion
.Provider = "Microsoft.jet.oledb.4.0"
.ConnectionString = "Data Source= & App.Path & \Empresa.mdb"
.Properties(15) = "PASSWORD"
.Open
STRconexion = .ConnectionString
.Close
End With
Set CNTconexion = Nothing
End Sub
La sentencia Dim CNTconexion As New ADODB.Connection, permite simultneamente
dimensionar e instanciar la nueva conexin ADO. Ahorramos una de las siguientes lneas de
cdigo
Global CNTconexion As ADODB.Connection
Set CNTconexion = New ADODB.Connection
El control FlexGrid en la gestin de datos
El FlexGrid (rejilla flexible en espaol) es uno de los controles ActiveX que posee Visual
Basic, que se utilizan con el propsito de aadir nuevas funciones a los programas que
desarrollamos para el ambiente Windows. Con este control podremos administrar datos en
una especie de tabla o rejilla de celdas, de manera similar a como se visualizan en una hoja
de trabajo en Excel Observe los grids siguientes:


G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 23
Coordinacin de Informtica

Cada vez que abre un nuevo proyecto, Visual Basic muestra un conjunto bsico de controles
de la interfaz en el cuadro de herramientas; el control FlexGrid constituye una herramienta
avanzada y por tal razn debe habilitarla mediante el siguiente procedimiento:
1. Men Project
2. Opcin Components
3. Activar de la lista de Controls la casilla de Microsoft FlexGrid Control 6.0 o la versin
existente y Aceptar.
En el cuadro de herramientas se mostrar un icono similar a este . A partir de entonces
tendremos la posibilidad de insertar en los formularios del proyecto en uso, los FLexGrid que
sean convenientes y comenzar a gestionar la informacin contenida en nuestra base de
datos: mostrar los registros de alguna tabla, agregar registros, buscar registros, eliminar
registros, consultar o exportar informacin. Al trazarse sobre el formulario, todos los FlexGrid
mostrarn solamente y por defecto dos columnas y dos filas en la esquina superior izquierda
del mismo.

G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 24
Coordinacin de Informtica

Defina el formato de un FlexGrid tomando como ejemplo la descripcin de cdigo que a
continuacin se muestra.
Sub P_FormatoGrid()
With FLX_nombre
.Cols = 3
.Rows = 1
.Row = 0
.Col = 0
.Text = "CLAVE"
.ColWidth(0) = 600
.Col = 1
.Text = "NOMBRE"
.ColWidth(1) = 3500
.Col = 2
.Text = "R.F.C."
.ColWidth(2) = 1600
End With
End Sub
Las propiedades descritas se refieren a los siguientes elementos:
.cols determina el nmero de columnas en el grid
.rows fija el nmero de filas
.row posiciona el cursor en el nmero de columna especificado
.col posiciona el cursor en el nmero de fila indicado
.text sugiere el texto que contendr la columna como encabezado
.colwidth determina el ancho de la columna
Objeto Recordset
En Visual Basic un Recordset es un objeto que representa el bloque de informacin de una
base de datos con la que se est trabajando en el programa en un momento determinado. El
objeto Recordset posee propiedades y mtodos con los cules es posible buscar, ordenar,
agregar y eliminar registros. Algunas de las propiedades que manejar de un Recordset en
el desarrollo de los proyectos contemplados en este material son:
.close (cierra el Recordset)
.movefirst (se mueve al primer registro)
.movelast (se mueve al ltimo registro)
.movenext (se mueve al siguiente registro)
.moveprevious (se mueve al registro anterior)
.open (abre el Recordset)
.recordcount (cuenta el nmero de registros que contiene el Recordset)
Cuando se disponga a utilizar el Recordset, deber dimensionarlo e instanciarlo, ejemplos:
Dim rst_nombre As ADODB.Connection
Set rst_nombre = New ADODB.Recordset
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 25
Coordinacin de Informtica

O bien, ahorre una lnea de cdigo
Dim rst_nombre As New ADODB.Recordset
Despus de haber creado el Recordset podr cargar en l la informacin que contenga la
base de datos, comenzando con una sentencia como la siguiente:
rst_nombre.open Strsql,Cnt_conexion,AdOpenStatic,AdLockReadOnly
en donde rst_nombre describe el nombre del Recordset y la expresin .open indica la
apertura del mismo; en seguida se muestra la cadena Strsql (vea el apartado de
instrucciones SQL) que invoca las operaciones que se llevarn a cabo con la instruccin SQL
empleada en el Recordset y que adems define el origen o fuente de datos; Cnt_conexion,
que seala el nombre de la conexin activa; AdOpenStatic, que define el Recordset como
esttico y AdLockReadOnly, utilizado para activar la propiedad de slo lectura.
Al finalizar la definicin del Recordset y al asegurarse tambin de que la gestin de la
informacin de la base de datos ha concluido en el desarrollo del procedimiento, tendr que
cerrarlo
Rst_nombre.close
Y destruirlo:
Set Rst_nombre = Nothing
Verifique el manejo del Recordset en este procedimiento:
Sub P_ActualizaGrid()
Dim RSTClientes As ADODB.Recordset
Dim strsql As String
Dim IntFila As Integer
Set RSTClientes = New ADODB.Recordset
strsql = "SELECT * FROM CLIENTES"
RSTClientes.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
If RSTClientes.RecordCount = 0 Then Exit Sub
RSTClientes.MoveFirst
IntFila = 1
Do Until RSTClientes.EOF = True
With FLXClientes
.Rows = IntFila + 1
.Row = IntFila
.Col = 0
.Text = RSTClientes("CLIE_CLAVE")
.Col = 1
.Text = RSTClientes("CLIE_NOMBRE")
.Col = 2
.Text = RSTClientes("CLIE_RFC")
End With
IntFila = IntFila + 1
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 26
Coordinacin de Informtica

RSTClientes.MoveNext
Loop
RSTClientes.Close
Set RSTClientes = Nothing
End Sub
Instrucciones SQL en Visual Basic
SQL, Structured Query Language, es un lenguaje interactivo que permite realizar consultas a
bases de datos. Actualmente es el protocolo para gestin de bases de datos en la mayora
de las plataformas y proporciona diversas ventajas, tanto para la administracin de las bases
de datos y la interaccin con stas mismas, como en el desarrollo de sistemas de
informacin con bases de datos.
El SQL naci como un lenguaje para usuario final, aunque con las facilidades grficas
actuales, existen herramientas an ms intuitivas que ocultan al usuario final los comandos
SQL involucrados. Puede ser considerado como un lenguaje de programacin y puede ser
infiltrado en algn otro lenguaje como Visual Basic, Java, C++, etc.
SQL es un lenguaje no slo para consultas sino para definicin y administracin de bases de
datos. Tambin provee de las facilidades para el control a los datos par parte de varios
usuarios en un ambiente de transacciones concurrentes.
Las cuatro sentencias principales de manejo de datos son: Select, Insert, Update, Delete.
Sel e c t . Es un comando que consulta los registros de una o varias tablas y que puede
enviar los resultados de la misma directamente a una matriz. Sintaxis:
SELECT campo1, campo2... FROM tabla1, tabla2
WHERE condicin 1, condicin2 ORDER BY campo1, campo2
En donde campo1, campo2 hacen referencia al nombre de las columnas que contienen la
informacin a consultar; si se desean todos los campos de una tabla se escribe asterisco (*)
delante de SELECT.
Tabla1, tabla2 seala el nombre de las tablas de la base de datos desde donde sern
extrados los registros.
Condicin1, condicin2 definen los criterios de seleccin de los registros en la tabla. Los
registros seleccionados sern aquellos registros que cumplan la condicin especificada con
WHERE; si se omite WHERE, se retornan todos los registros.
CAMPO
OPERADORES DE
COMPARACIN VALOR DEL CAMPO
X
=
<=
>=
<>
>
<
LIKE
X
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 27
Coordinacin de Informtica

CAMPO
OPERADORES DE
COMPARACIN VALOR DEL CAMPO
BETWEEN
OPERADORES LGICOS
NOT
OR
AND
La clusula ORDER BY permite al usuario especificar si requiere los registros ordenados por
algn campo en particular, de manera ascendente o descendente utilizando los operadores
de modo ASC y DESC.
Ejemplo:
strsql = "SELECT * FROM CLIENTES"
I ns er t . Anexa un registro al final de una tabla que contiene los valores de campo
especificados. Sintaxis:
INSERT INTO nombre_dbf [(fnombre1 [, fnombre2, ...])]
VALUES (eExpresin1 [, eExpresin2,...])
Ejemplo:
strsql = "INSERT INTO CLIENTES"
strsql = strsql & "(CLIE_CLAVE, CLIE_NOMBRE, CLIE_RFC)"
strsql = strsql & "VALUES ('"
strsql = strsql & F_ClaveConsecutiva("CLIENTES", "CLIE_CLAVE") & "', '"
strsql = strsql & TXTNombre.Text & "', '"
strsql = strsql & TXTRfc.Text & "')"
Upda t e . Actualiza registros de una tabla con nuevos valores. Sintaxis:
UPDATE [NombreBaseDatos1!]NombreTabla1
SET Nombre_Columna1 = eExpresin1
[, Nombre_Columna2 = eExpresin2 ...]
WHERE CondicinFiltro1 [AND | OR CondicinFiltro2 ...]]
Ejemplo:
strsql = "UPDATE CLIENTES "
strsql = strsql & "SET CLIE_NOMBRE = '" & TXTNombre.Text & "', "
strsql = strsql & "CLIE_RFC = '" & TXTRfc.Text & "' "
strsql = strsql & "WHERE CLIE_CLAVE =" & TXTClave.Text
De l e t e . Marca registros para eliminarlos. Sintaxis:
DELETE FROM [NombreBaseDatos!]NombreTabla
[WHERE CondicinFiltro1 [AND | OR CondicinFiltro2 ...]]
Ejemplo:
strsql = "DELETE FROM CLIENTES WHERE CLIE_CLAVE = " & TXTClave.Text
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 28
Coordinacin de Informtica

Exportacin de Datos
Se pueden generar informes por medio de los distintos reporteadores hechos
especficamente para ese propsito, sin embargo, tambin podemos reportear hacia
herramientas poderosas tales como Word o Excel.
Por medio de objetos en Visual Basic podemos ejecutar Word o Excel (entre otros), crear o
abrir archivos, modificarlos y guardarlos, todo a travs de cdigo.
EXPORTAR DATOS A WORD:
En primer lugar tenemos que hacer la referencia:
1. Men Project
2. Opcin Referentes

3. Seleccionar de la lista Microsoft Word 11.0 Object Library (o la versin disponible)
4. Presionar OK
Creamos e instanciamos el objeto que nos permitir manipular a Word como una aplicacin.
Dim docInforme as New Word.Application
Set docInforme = CreateObject("Word.Application")
Se recomienda crear un documento en Word que sirva como plantilla, puede protegerlo
contra escritura. Teniendo esto en cuenta, abrimos el archivo con la siguiente instruccin:
.Application.Documents.Open "\\Servidor\Carpeta1" & "\Archivo.doc"
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 29
Coordinacin de Informtica

La siguiente instruccin permite colocar datos en un marcador predefinido llamado MARCA:
docInforme.Documents(1).Bookmarks("MARCA").Range.Text = Dato
Esto escribe la palabra Dato, recordando que cualquier texto entre comillas lo toma
directamente como cadena. Se puede colocar en vez del texto entrecomillado, tambin una
variable, o un elemento de un Recordset, o una funcin, etc.
La siguiente instruccin permite colocar texto en una celda de una tabla creada previamente
en el archivo:
docInforme.Documents(1).Tables(1).Cell(2, 1).Range.Text = Dato
Coloca en la fila 2, columna 1 la palabra Dato, teniendo en cuenta las mismas opciones de la
instruccin anterior.
La siguiente instruccin agrega una fila en la tabla:
docInforme.Documents(1).Tables(1).Rows.Add
La siguiente instruccin hace visible la aplicacin:
docInforme .Application.Visible = True
El usuario podr guardar el archivo utilizando las herramientas propias de Word.
EXPORTAR DATOS A EXCEL:
Hacemos la referencia:
1. Men Project
2. Opcin Referentes

G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 30
Coordinacin de Informtica

3. Seleccionar de la lista Microsoft Excel 11.0 Object Library (o la versin disponible)
4. Presionar OK
En este caso necesitamos dos objetos principales, el objeto que manejar a la aplicacin, y
el objeto que utilizaremos para manipular la hoja:
Dim xlsApp As Object
Dim xlsSheet As Object
Luego instanciamos el objeto para la aplicacin:
Set xlsApp = CreateObject("Excel.Application")
La siguiente instruccin abre un archivo de Excel creado previamente, puede protegerse
contra escritura:
xlsApp.Workbooks.Open FileName:="" & "\\Servidor\Carpeta1" & "\Archivo.xls", ReadOnly:=True
Luego instanciamos el objeto para la hoja:
Set xlsSheet = xlsApp.Worksheets(1)
La siguiente instruccin, coloca texto en una celda:
xlsSheet.Cells(2, 1).Value = Dato
Esto escribe la palabra Dato en la celda A2, recordando que cualquier texto entre comillas
lo toma directamente como cadena. Se puede colocar en vez del texto entrecomillado,
tambin una variable, o un elemento de un Recordset, o una funcin, etc.
La siguiente instruccin hace visible la aplicacin:
xlsApp.Visible = True
El usuario podr guardar el archivo utilizando las herramientas propias de Excel.
Ejemplo de exportacin de datos a Excel:
Private Sub CMDExportar_Click()
Dim XlsAplicacion As Object
Dim XlsHoja As Object
Dim IntFila As Integer
Dim IntFactura As Integer
Screen.MousePointer = vbHourglass
FLXFacturas.Row = 1
Set XlsAplicacion = CreateObject("Excel.Application")
XlsAplicacion.Workbooks.Open FileName:="" & App.Path & "\Reporte1.XLS", ReadOnly:=True
Set XlsHoja = XlsAplicacion.Worksheets(1)
XlsAplicacion.Range("A2", "G1000") = ""
IntFila = 2
For IntFactura = 1 To FLXFacturas.Rows - 1
With XlsHoja
FLXFacturas.Col = 0
.Cells(IntFila, 1).Value = FLXFacturas.Text
FLXFacturas.Col = 1
G e s t i n d e B a s e d e D a t o s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 31
Coordinacin de Informtica

.Cells(IntFila, 2).Value = FLXFacturas.Text
FLXFacturas.Col = 2
.Cells(IntFila, 3).Value = FLXFacturas.Text
FLXFacturas.Col = 3
.Cells(IntFila, 4).Value = FLXFacturas.Text
End With
IntFila = IntFila + 1
If IntFactura <> FLXFacturas.Rows - 1 Then FLXFacturas.Row = IntFactura + 1
Next
Screen.MousePointer = vbDefault
XlsAplicacion.Visible = True
Set XlsAplicacion = Nothing
End Sub
Formato del archivo de reporte generado en Excel:
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 32
Coordinacin de Informtica

PROYECTO PRINCIPAL
FORMULARIOS Y PROGRAMACIN EN VISUAL BASIC
FORMULARIO PRINCIPAL (FORMULARIO MDI)

CDIGO PARA LOS MENS EN EL FORMULARIO INICIAL
Private Sub MNUClientes_Click()
FRMclientes.Show
P_Bienvenida
End Sub
Private Sub MNUProductos_Click()
FRMProductos.Show
P_Bienvenida
End Sub
Private Sub MNUVentas_Click()
FRMVentas.Show
P_Bienvenida
End Sub
MDULO PRINCIPAL
DECLARACIONES
Global INTINSTRUCCION As Integer
Global STRCONEXION As String
Global Const AGREGAR = 1
Global Const MODIFICAR = 2
Global Const BUSCAR = 3
Global Const INACTIVO = 0
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 33
Coordinacin de Informtica

PROCEDIMIENTO DE ARRANQUE DE LA APLICACIN (CONEXIN CON LA BASE DE
DATOS Y EJECUCIN DE LA PANTALLA PRINCIPAL)
Sub main()
Dim CNTCONEXION As New ADODB.Connection
With CNTCONEXION
.Provider = "Microsoft.jet.oledb.4.0"
.ConnectionString = "Data Source=" & App.Path & "\Base de Datos.mdb"
.Properties(15) = "PASSWORD"
.Open
STRCONEXION = .ConnectionString
.Close
End With
Set CNTCONEXION = Nothing
MDIPrincipal.Show
End Sub
FUNCIN QUE INSERTAR CLAVES CONSECUTIVAS EN LAS TABLAS DE LA BASE
DE DATOS AL AGREGAR NUEVOS REGISTROS
Public Function F_ClaveConsecutiva(Astr_Tabla As String, Astr_Campo As String) As Long
Dim RSTConsecutiva As New ADODB.Recordset
Dim strsql As String
strsql = "SELECT " & Astr_Campo & " FROM " & Astr_Tabla & " ORDER BY " & Astr_Campo
RSTConsecutiva.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
If RSTConsecutiva.RecordCount = 0 Then
F_ClaveConsecutiva = 1
Else
RSTConsecutiva.MoveLast
F_ClaveConsecutiva = RSTConsecutiva(0) + 1
End If
Set RSTConsecutiva = Nothing
End Function
FUNCIN QUE LOCALIZAR EL REGISTRO QUE CUMPLA CON EL CRITERIO
INDICADO EN UN CUADRO COMBINADO
Function F_OpcionCombo(ByRef CboCombo As ComboBox, LngIndice As Long)
Dim IntContador As Integer
For IntContador = 0 To CboCombo.ListCount - 1
With CboCombo
If .ItemData(IntContador) = LngIndice Then
F_OpcionCombo = IntContador
Exit For
End If
End With
Next
End Function
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 34
Coordinacin de Informtica

PROCEDIMIENTO DEFINE EL MENSAJE DE BIENVENIDA A CADA VENTANA
Sub P_Bienvenida()
MsgBox "Ha iniciado el sistema de administracin empresarial"
End Sub
FORMULARIO DE CLIENTES (FORMULARIO SDI)

PROCEDIMIENTO QUE SE EJECUTA AL CARGARSE EL FORMULARIO CLIENTES
Private Sub Form_Load()
P_FormatoGrid
P_ActualizaGrid
P_INICIAL
End Sub
PROCEDIMIENTO QUE DEFINE EL FORMATO DEL FLEXGRID DE CLIENTES
Sub P_FormatoGrid()
With FLXClientes
.Cols = 3
.Rows = 1
.Row = 0
.Col = 0
.Text = "CLAVE"
.ColWidth(0) = 600
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 35
Coordinacin de Informtica

.Col = 1
.Text = "NOMBRE"
.ColWidth(1) = 3500
.Col = 2
.Text = "R.F.C."
.ColWidth(2) = 1600
End With
End Sub
PROCEDIMIENTO QUE ACTUALIZA EL CONTENIDO DEL FLEXGRID DE CLIENTES DE
ACUERDO A LA BASE DE DATOS
Sub P_ActualizaGrid()
Dim RSTClientes As ADODB.Recordset
Dim strsql As String
Dim IntFila As Integer
Set RSTClientes = New ADODB.Recordset
strsql = "SELECT * FROM CLIENTES"
RSTClientes.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
If RSTClientes.RecordCount = 0 Then Exit Sub
RSTClientes.MoveFirst
IntFila = 1
Do Until RSTClientes.EOF = True
With FLXClientes
.Rows = IntFila + 1
.Row = IntFila
.Col = 0
.Text = RSTClientes("CLIE_CLAVE")
.Col = 1
.Text = RSTClientes("CLIE_NOMBRE")
.Col = 2
.Text = RSTClientes("CLIE_RFC")
End With
IntFila = IntFila + 1
RSTClientes.MoveNext
Loop
RSTClientes.Close
Set RSTClientes = Nothing
End Sub
PROCEDIMIENTO QUE DEFINE EL ESTADO INICIAL DE LOS CONTROLES EN EL
FORMULARIO CLIENTES
Sub P_INICIAL()
TXTClave.Text = ""
TXTNombre.Text = ""
TXTRfc.Text = ""
TXTNombre.Enabled = False
TXTRfc.Enabled = False
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 36
Coordinacin de Informtica

CMDAceptar.Enabled = False
CMDAceptar.Visible = False
CMDCancelar.Enabled = False
CMDCancelar.Visible = False
CMDAgregar.Enabled = True
CMDAgregar.Visible = True
CMDModificar.Enabled = False
CMDModificar.Visible = True
CMDEliminar.Enabled = True
CMDEliminar.Visible = True
FLXClientes.Enabled = True
End Sub
PROCEDIMIENTO DEFINIDO AL EJECUTARSE EL EVENTO DOBLE CLICK SOBRE
ALGUNO DE LOS REGISTROS EN EL FLEXGRID
Private Sub FLXClientes_DblClick()
Dim strsql As String
Dim RSTClieSel As New ADODB.Recordset
FLXClientes.Col = 0
strsql = "SELECT * FROM CLIENTES WHERE CLIE_CLAVE= " & FLXClientes.Text
RSTClieSel.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
TXTClave.Text = RSTClieSel("CLIE_CLAVE")
TXTNombre.Text = RSTClieSel("CLIE_NOMBRE")
TXTRfc.Text = RSTClieSel("CLIE_RFC")
Set RSTClieSel = Nothing
P_CONSULTA
End Sub
PROCEDIMIENTO DE CONSULTA QUE DEFINE EL ESTADO DE LOS CONTROLES EN
EL FORMULARIO
Sub P_CONSULTA()
TXTNombre.Enabled = False
TXTRfc.Enabled = False
CMDAceptar.Enabled = False
CMDAceptar.Visible = False
CMDCancelar.Enabled = False
CMDCancelar.Visible = False
CMDAgregar.Enabled = True
CMDAgregar.Visible = True
CMDModificar.Enabled = True
CMDModificar.Visible = True
CMDEliminar.Enabled = True
CMDEliminar.Visible = True
P_ActualizaGrid
FLXClientes.Enabled = True
End Sub
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 37
Coordinacin de Informtica

INSTRUCCIONES CODIFICADAS AL PRESIONAR EL BOTN AGREGAR
Private Sub CMDAgregar_Click()
INTINSTRUCCION = AGREGAR
P_CAMBIOS
TXTNombre.SetFocus
End Sub
PROCEDIMIENTO CAMBIOS QUE MODIFICA EL ESTADO DE LOS CONTROLES AL
AGREGAR O MODIFICAR UN REGISTRO
Sub P_CAMBIOS()
If INTINSTRUCCION = AGREGAR Then
TXTClave.Text = ""
TXTNombre.Text = ""
TXTRfc.Text = ""
End If
TXTNombre.Enabled = True
TXTRfc.Enabled = True
CMDAceptar.Enabled = True
CMDAceptar.Visible = True
CMDCancelar.Enabled = True
CMDCancelar.Visible = True
CMDAgregar.Enabled = False
CMDAgregar.Visible = False
CMDModificar.Enabled = False
CMDModificar.Visible = False
CMDEliminar.Enabled = False
CMDEliminar.Visible = False
FLXClientes.Enabled = False
End Sub
FUNCIN QUE ESTABLECE COMO REQUERIDOS LOS DATOS NOMBRE DE CLIENTE
Y RFC PARA ACTUALIZAR CORRECTAMENTE LA BASE DE DATOS
Private Function F_ValidaDatos() As Boolean
F_ValidaDatos = False
If TXTNombre.Text = "" Then
MsgBox "escriba un nombre en el campo cliente"
TXTNombre.SetFocus
Exit Function
End If
If TXTRfc.Text = "" Then
MsgBox "escriba el RFC del cliente"
TXTRfc.SetFocus
Exit Function
End If
F_ValidaDatos = True
End Function
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 38
Coordinacin de Informtica

INSTRUCCIONES CODIFICADAS AL PRESIONAR EL BOTN MODIFICAR
Private Sub CMDModificar_Click()
INTINSTRUCCION = MODIFICAR
P_CAMBIOS
End Sub
INSTRUCCIONES DEL PROCEDIMIENTO CAMBIOS, QUE DEFINE EL ESTADO DE LOS
CONTROLES AL AGREGAR O MODIFICAR REGISTROS
Sub P_CAMBIOS()
If INTINSTRUCCION = AGREGAR Then
TXTClave.Text = ""
TXTNombre.Text = ""
TXTRfc.Text = ""
End If
TXTNombre.Enabled = True
TXTRfc.Enabled = True
CMDAceptar.Enabled = True
CMDAceptar.Visible = True
CMDCancelar.Enabled = True
CMDCancelar.Visible = True
CMDAgregar.Enabled = False
CMDAgregar.Visible = False
CMDModificar.Enabled = False
CMDModificar.Visible = False
CMDEliminar.Enabled = False
CMDEliminar.Visible = False
FLXClientes.Enabled = False
End Sub
PROCEDIMIENTO DEL EVENTO CLICK EN EL BOTN ACEPTAR QUE ACTUALIZAR
LA BASE DE DATOS, AL AGREGAR O MODIFICAR ALGN REGISTRO
Private Sub CMDAceptar_Click()
Dim CNTCLIENTES As New ADODB.Connection
Dim strsql As String
If INTINSTRUCCION = AGREGAR Then
If Not F_ValidaDatos Then Exit Sub
strsql = "INSERT INTO CLIENTES"
strsql = strsql & "(CLIE_CLAVE, CLIE_NOMBRE, CLIE_RFC)"
strsql = strsql & "VALUES ('"
strsql = strsql & F_ClaveConsecutiva("CLIENTES", "CLIE_CLAVE") & "', '"
strsql = strsql & TXTNombre.Text & "', '"
strsql = strsql & TXTRfc.Text & "')"
With CNTCLIENTES
.ConnectionString = STRCONEXION
.Open
.Execute (strsql)
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 39
Coordinacin de Informtica

.Close
End With
MsgBox "el registro se agreg correctamente"
INTINSTRUCCION = INACTIVO
P_ActualizaGrid
P_INICIAL
End If
If INTINSTRUCCION = MODIFICAR Then
strsql = "UPDATE CLIENTES "
strsql = strsql & "SET CLIE_NOMBRE = '" & TXTNombre.Text & "', "
strsql = strsql & "CLIE_RFC = '" & TXTRfc.Text & "' "
strsql = strsql & "WHERE CLIE_CLAVE =" & TXTClave.Text
With CNTCLIENTES
.ConnectionString = STRCONEXION
.Open
.Execute (strsql)
.Close
End With
Set CNTCLIENTES = Nothing
INTINSTRUCCION = INACTIVO
P_ActualizaGrid
P_INICIAL
End If
End Sub
CDIGO QUE SE EJECUTA AL CANCELAR LA INSERCIN DE UN NUEVO REGISTRO
O LA EDICIN DE UNO EXISTENTE EN EL FLEXGRID
Private Sub CMDCancelar_Click()
P_INICIAL
End Sub
CDIGO QUE SE EJECUTA AL ELIMINAR UN REGISTRO
Private Sub CMDEliminar_Click()
Dim CNTCLIENTES As New ADODB.Connection
Dim strsql As String
Dim IntRespuesta As Integer
If TXTClave.Text = "" Then
MsgBox "selecciona un registro para eliminar"
Exit Sub
End If
IntRespuesta = MsgBox("deseas dar de baja al cliente?", vbYesNo)
If IntRespuesta = vbYes Then
strsql = "DELETE FROM CLIENTES WHERE CLIE_CLAVE = " & TXTClave.Text
With CNTCLIENTES
.ConnectionString = STRCONEXION
.Open
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 40
Coordinacin de Informtica

.Execute (strsql)
.Close
End With
Set CNTCLIENTES = Nothing
P_ActualizaGrid
P_INICIAL
End If
End Sub
FORMULARIO DE PRODUCTOS (FORMULARIO SDI)

DECLARACIN DE VARIABLE GESTIONABLE EN EL FORMULARIO DE PRODUCTOS Y
SUS CONTROLES
Dim CLAPROD As Integer
PROCEDIMIENTO AL CARGARSE EL FORMULARIO
Private Sub Form_Load()
P_FormatoGrid
P_ActualizaGrid
P_INICIAL
End Sub

P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 41
Coordinacin de Informtica

PROCEDIMIENTO QUE DEFINE EL FORMATO DEL FLEXGRID DE PRODUCTOS
Sub P_FormatoGrid()
With FLXProductos
.Cols = 3
.Rows = 1
.Row = 0
.Col = 0
.Text = "CLAVE"
.ColWidth(0) = 600
.Col = 1
.Text = "DESCRIPCIN"
.ColWidth(1) = 3500
.Col = 2
.Text = "PRECIO $"
.ColWidth(2) = 1000
End With
End Sub
PROCEDIMIENTO QUE ACTUALIZA LA INFORMACIN DEL FLEXGRID PRODUCTOS
Sub P_ActualizaGrid()
Dim RSTArticulos As ADODB.Recordset
Dim strsql As String
Dim IntFila As Integer
Set RSTArticulos = New ADODB.Recordset
strsql = "SELECT * FROM PRODUCTOS"
RSTArticulos.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
If RSTArticulos.RecordCount = 0 Then Exit Sub
RSTArticulos.MoveFirst
IntFila = 1
Do Until RSTArticulos.EOF = True
With FLXProductos
.Rows = IntFila + 1
.Row = IntFila
.Col = 0
.Text = RSTArticulos("PROD_CLAVE")
.Col = 1
.Text = RSTArticulos("PROD_NOMBRE")
.Col = 2
.Text = RSTArticulos("PROD_PRECIO")
End With
IntFila = IntFila + 1
RSTArticulos.MoveNext
Loop
RSTArticulos.Close
Set RSTArticulos = Nothing
End Sub
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 42
Coordinacin de Informtica

PROCEDIMIENTO QUE DETERMINA EL ESTADO INICIAL DE LOS CONTROLES
Sub P_INICIAL()
TXTArticulo.Text = ""
TXTPrecio.Text = ""
TXTArticulo.Enabled = False
TXTPrecio.Enabled = False
CMDAceptar.Enabled = False
CMDAceptar.Visible = False
CMDCancelar.Enabled = False
CMDCancelar.Visible = False
CMDAgregar.Enabled = True
CMDAgregar.Visible = True
CMDModificar.Enabled = False
CMDModificar.Visible = True
CMDEliminar.Enabled = True
CMDEliminar.Visible = True
FLXProductos.Enabled = True
End Sub
PROCEDIMIENTO DEFINIDO AL EJECUTARSE EL EVENTO DOBLE CLICK SOBRE
ALGUNO DE LOS REGISTROS EN EL FLEXGRID
Private Sub FLXProductos_DblClick()
Dim strsql As String
Dim RSTProdSel As New ADODB.Recordset
FLXProductos.Col = 0
CLAPROD = FLXProductos.Text
Strsql = "SELECT * FROM PRODUCTOS WHERE PROD_CLAVE= " & FLXProductos.Text
RSTProdSel.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
TXTArticulo.Text = RSTProdSel("PROD_NOMBRE")
TXTPrecio.Text = RSTProdSel("PROD_PRECIO")
Set RSTProdSel = Nothing
P_CONSULTA
End Sub
ESTADO DE LOS CONTROLES AL EFECTUAR LA CONSULTA DE ALGN REGISTRO
Sub P_CONSULTA()
TXTArticulo.Enabled = False
TXTPrecio.Enabled = False
CMDAceptar.Enabled = False
CMDAceptar.Visible = False
CMDCancelar.Enabled = False
CMDCancelar.Visible = False
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 43
Coordinacin de Informtica

CMDAgregar.Enabled = True
CMDAgregar.Visible = True
CMDModificar.Enabled = True
CMDModificar.Visible = True
CMDEliminar.Enabled = True
CMDEliminar.Visible = True
P_ActualizaGrid
FLXProductos.Enabled = True
End Sub
PROCEDIMIENTO CORRESPONDIENTE AL BOTN AGREGAR
Private Sub CMDAgregar_Click()
INTINSTRUCCION = AGREGAR
P_CAMBIOS
TXTArticulo.SetFocus
End Sub
PROCEDIMIENTO QUE DETERMINA EL ESTADO DE LOS CONTROLES AL AGREGAR
O MODIFICAR UN REGISTRO
Sub P_CAMBIOS()
If INTINSTRUCCION = AGREGAR Then
TXTArticulo.Text = ""
TXTPrecio.Text = ""
End If
TXTArticulo.Enabled = True
TXTPrecio.Enabled = True
CMDAceptar.Enabled = True
CMDAceptar.Visible = True
CMDCancelar.Enabled = True
CMDCancelar.Visible = True
CMDAgregar.Enabled = False
CMDAgregar.Visible = False
CMDModificar.Enabled = False
CMDModificar.Visible = False
CMDEliminar.Enabled = False
CMDEliminar.Visible = False
FLXProductos.Enabled = False
End Sub
PROCEDIMIENTO EN EL BOTN ACEPTAR QUE ACTUALIZAR LA BASE DE DATOS,
AL AGREGAR O MODIFICAR ALGN REGISTRO
Private Sub CMDAceptar_Click()
Dim CNTPRODUCTOS As New ADODB.Connection
Dim strsql As String
If INTINSTRUCCION = AGREGAR Then
If Not F_ValidaDatos Then Exit Sub
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 44
Coordinacin de Informtica

strsql = "INSERT INTO PRODUCTOS"
strsql = strsql & "(PROD_CLAVE, PROD_NOMBRE, PROD_PRECIO)"
strsql = strsql & "VALUES ('"
strsql = strsql & F_ClaveConsecutiva("PRODUCTOS", "PROD_CLAVE") & "', '"
strsql = strsql & TXTArticulo.Text & "', '"
strsql = strsql & TXTPrecio.Text & "')"
With CNTPRODUCTOS
.ConnectionString = STRCONEXION
.Open
.Execute (strsql)
.Close
End With
MsgBox "el registro se agreg correctamente"
INTINSTRUCCION = INACTIVO
P_ActualizaGrid
P_INICIAL
End If
If INTINSTRUCCION = MODIFICAR Then
strsql = "UPDATE PRODUCTOS "
strsql = strsql & "SET PROD_NOMBRE = '" & TXTArticulo.Text & "', "
strsql = strsql & "PROD_PRECIO = '" & TXTPrecio.Text & "' "
strsql = strsql & "WHERE PROD_CLAVE =" & CLAPROD
With CNTPRODUCTOS
.ConnectionString = STRCONEXION
.Open
.Execute (strsql)
.Close
End With
Set CNTPRODUCTOS = Nothing
MsgBox "los datos del artculo se han modificado"
INTINSTRUCCION = INACTIVO
P_ActualizaGrid
P_INICIAL
End If
End Sub
CDIGO QUE SE EJECUTA AL CANCELAR LA INSERCIN DE UN NUEVO PRODUCTO
O LA MODIFICACIN DE UN REGISTRO EXISTENTE
Private Sub CMDCancelar_Click()
P_INICIAL
End Sub
CDIGO QUE SE EJECUTA AL ELIMINAR UN PRODUCTO
Private Sub CMDEliminar_Click()
Dim CNTPRODUCTOS As New ADODB.Connection
Dim strsql As String
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 45
Coordinacin de Informtica

Dim IntRespuesta As Integer
If TXTArticulo.Text = "" Then
MsgBox "SELECIONA UN ARTCULO PARA ELIMINAR"
Exit Sub
End If
IntRespuesta = MsgBox("REALMENTE DESEA ELIMINAR EL ARTCULO?",
vbYesNo)
If IntRespuesta = vbYes Then
strsql = "DELETE FROM PRODUCTOS WHERE PROD_CLAVE = " & CLAPROD
With CNTPRODUCTOS
.ConnectionString = STRCONEXION
.Open
.Execute (strsql)
.Close
End With
Set CNTPRODUCTOS = Nothing
P_ActualizaGrid
P_INICIAL
End If
End Sub
FORMULARIO DE VENTAS (FORMULARIO SDI)

P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 46
Coordinacin de Informtica

VARIABLE DESCRITA EN EL BLOQUE GENERAL DE LA VENTANA DE CDIGO
Dim IntFila As Integer
ACCIONES AL CARGARSE EL FORMULARIO
Private Sub Form_Load()
Dim strsql As String
Dim RSTCOMBO As New ADODB.Recordset
P_INICIAL
strsql = "SELECT CLIE_CLAVE, CLIE_NOMBRE FROM CLIENTES"
RSTCOMBO.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
If RSTCOMBO.RecordCount <> 0 Then
Do Until RSTCOMBO.EOF = True
With cbocliente
.AddItem RSTCOMBO("CLIE_NOMBRE")
.ItemData(.NewIndex) = RSTCOMBO("CLIE_CLAVE")
End With
RSTCOMBO.MoveNext
Loop
End If
RSTCOMBO.Close
strsql = "SELECT PROD_CLAVE, PROD_NOMBRE FROM PRODUCTOS"
RSTCOMBO.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
If RSTCOMBO.RecordCount <> 0 Then
Do Until RSTCOMBO.EOF = True
With cboproducto
.AddItem RSTCOMBO("PROD_NOMBRE")
.ItemData(.NewIndex) = RSTCOMBO("PROD_CLAVE")
End With
RSTCOMBO.MoveNext
Loop
End If
RSTCOMBO.Close
Set RSTCOMBO = Nothing
End Sub
PROCEDIMIENTO QUE DEFINE EL ESTADO INICIAL DE LOS CONTROLES
Sub P_INICIAL()
txtfactura.Enabled = False
txtfactura.Visible = True
txtfactura.Text = ""
cmdbuscar.Enabled = True
cmdbuscar.Visible = True
cbocliente.Enabled = False
cbocliente.Visible = True
cbocliente.ListIndex = -1
cboproducto.Enabled = False
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 47
Coordinacin de Informtica

cboproducto.Visible = True
cboproducto.ListIndex = -1
txtcantidad.Enabled = False
txtcantidad.Visible = True
txtcantidad.Text = ""
cmdmas.Enabled = False
cmdmas.Visible = True
flxproductos.Enabled = False
flxproductos.Visible = True
cmdnueva.Enabled = True
cmdnueva.Visible = True
cmdmodificar.Enabled = False
cmdmodificar.Visible = True
cmdeliminar.Enabled = True
cmdeliminar.Visible = True
cmdaceptar.Enabled = False
cmdaceptar.Visible = False
cmdcancelar.Enabled = False
cmdcancelar.Visible = False
cmdquitar.Enabled = False
cmdquitar.Visible = True
P_FormatoGrid
End Sub
PROCEDIMIENTO QUE DEFINE EL FORMATO DEL GRID EN VENTAS
Sub P_FormatoGrid()
With flxproductos
.Rows = 1
.Cols = 5
.Row = 0
.Col = 0
.Text = "CLAVE"
.Col = 1
.Text = "PRODUCTO"
.Col = 2
.Text = "PRECIO"
.Col = 3
.Text = "CANTIDAD"
.Col = 4
.Text = "SUBTOTAL"
.ColWidth(0) = 50
.ColWidth(1) = 3000
.ColWidth(2) = 1000
.ColWidth(3) = 1000
.ColWidth(4) = 1000
End With
End Sub
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 48
Coordinacin de Informtica

PROCEDIMIENTO QUE DEFINE AL BOTN DE COMANDO NUEVA VENTA
Private Sub cmdnueva_Click()
INTINSTRUCCION = AGREGAR
P_CAMBIOS
End Sub
PROCEDIMIENTO CAMBIOS (DEFINE EL ESTADO DE LOSCONTROLES AL PEDIR UNA
NUEVA VENTA)
Sub P_CAMBIOS()
If INTINSTRUCCION = AGREGAR Then
txtfactura.Text = ""
'listindex=-1 limpia el combobox
cbocliente.ListIndex = -1
lblrfc.Caption = ""
cboproducto.ListIndex = -1
lblprecio.Caption = ""
txtcantidad.Text = ""
P_FormatoGrid
End If
txtfactura.Enabled = False
txtfactura.Visible = True
cmdbuscar.Enabled = False
cmdbuscar.Visible = False
cbocliente.Enabled = True
cbocliente.Visible = True
cboproducto.Enabled = True
cboproducto.Visible = True
txtcantidad.Enabled = True
txtcantidad.Visible = True
cmdmas.Enabled = True
cmdmas.Visible = True
flxproductos.Enabled = True
flxproductos.Visible = True
cmdnueva.Enabled = False
cmdnueva.Visible = False
cmdmodificar.Enabled = False
cmdmodificar.Visible = False
cmdeliminar.Enabled = False
cmdeliminar.Visible = False
cmdaceptar.Enabled = True
cmdaceptar.Visible = True
cmdcancelar.Enabled = True
cmdcancelar.Visible = True
cmdquitar.Enabled = True
cmdquitar.Visible = True
End Sub
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 49
Coordinacin de Informtica

PROCEDIMIENTO QUE CARGA AL COMBO CLIENTE
Private Sub cbocliente_Click()
Dim strsql As String
Dim RSTClientes As New ADODB.Recordset
strsql = "SELECT CLIE_RFC FROM CLIENTES WHERE CLIE_CLAVE = " &
cbocliente.ItemData(cbocliente.ListIndex)
RSTClientes.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
lblrfc.Caption = RSTClientes("CLIE_RFC")
Set RSTClientes = Nothing
End Sub
PROCEDIMIENTO QUE CARGA AL COMBO PRODUCTO
Private Sub cboproducto_Click()
Dim strsql As String
Dim RSTPRODUCTOS As New ADODB.Recordset
strsql = "SELECT PROD_PRECIO FROM PRODUCTOS WHERE PROD_CLAVE = " &
cboproducto.ItemData(cboproducto.ListIndex)
RSTPRODUCTOS.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
lblprecio.Caption = RSTPRODUCTOS("PROD_PRECIO")
Set RSTPRODUCTOS = Nothing
End Sub
PROCEDIMIENTO QUE DEFINE AL BOTN MS (AGREGAR EL PRODUCTO
SELECCIONADO AL FLEXGRID)
Private Sub cmdmas_Click()
Dim SNGSUBTOTAL As Single
Select Case INTINSTRUCCION
Case AGREGAR
If cboproducto.ListIndex = -1 Then
MsgBox "SELECCIONA UN PRODUCTO"
Exit Sub
End If
If txtcantidad.Text = "" Then txtcantidad.Text = 1
With flxproductos
.Rows = .Rows + 1
.Row = .Rows - 1
.Col = 0
.Text = cboproducto.ItemData(cboproducto.ListIndex)
.Col = 1
.Text = cboproducto.Text
.Col = 2
.Text = lblprecio.Caption
.Col = 3
.Text = txtcantidad.Text
.Col = 4
SNGSUBTOTAL = CSng(lblprecio.Caption) * CInt(txtcantidad.Text)
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 50
Coordinacin de Informtica

.Text = SNGSUBTOTAL
End With
cboproducto.Text = ""
lblprecio.Caption = "0.00"
txtcantidad.Text = ""
Case BUSCAR
If cboproducto.ListIndex = -1 And txtcantidad.Text = "" Then
MsgBox "SELECCIONE UN PRODUCTO O ESCRIBA UNA CANTIDAD"
cboproducto.SetFocus
Exit Sub
End If
With flxproductos
.Rows = .Rows + 1
.Row = .Rows - 1
.Col = 0
If cboproducto.ListIndex <> -1 Then
.Text = cboproducto.ItemData(cboproducto.ListIndex)
.Col = 1
.Text = cboproducto.Text
.Col = 2
.Text = lblprecio.Caption
End If
If txtcantidad.Text <> "" Then
.Col = 3
.Text = txtcantidad.Text
End If
End With
cboproducto.Text = ""
lblprecio.Caption = "0.00"
txtcantidad.Text = ""
End Select
End Sub
PROCEDIMIENTO QUE DEFINE AL BOTN QUITAR (ELIMINAR UN PRODUCTO DEL
FLEXGRID)
Private Sub cmdquitar_Click()
On Error GoTo ManejaError
flxproductos.RemoveItem (IntFila)
cmdquitar.Enabled = False
Exit Sub
ManejaError:
Select Case Err.Number
Case 30015
P_FormatoGrid
Case Else
MsgBox "ERROR :" & Err.Number & " " & Err.Description & Chr(13) & _
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 51
Coordinacin de Informtica

"CONSULTE AL PROVEEDOR DEL SISTEMA"
End Select
End Sub
ACCIONES QUE OCURREN AL SITUAR EL CURSOR EN EL FLEXGRID
Private Sub flxproductos_GotFocus()
cmdquitar.Enabled = True
IntFila = flxproductos.Row
End Sub
PROCEDIMIENTO QUE DEFINE AL BOTN CANCELAR
Private Sub CMDCancelar_Click()
Unload Me
End Sub
FUNCIN QUE EXIGE LA CAPTURA DE DATOS ANTES DE GRABAR LA VENTA
Private Function F_Validaventa() As Boolean
F_Validaventa = False
If cbocliente.ListIndex = -1 Then
MsgBox "selecciona un cliente"
cbocliente.SetFocus
Exit Function
End If
If flxproductos.Rows < 2 And txtcantidad.Text = "" Then
MsgBox "selecciona un producto, si omites la cantidad, se asignar el valor 1"
cboproducto.SetFoc0us
Exit Function
End If
F_Validaventa = True
End Function
PROCEDIMIENTO QUE DEFINE AL BOTN ACEPTAR
Private Sub CMDAceptar_Click()
Dim CNTCARGAR As New ADODB.Connection
Dim strsql As String
Dim CurTOTAL As Currency
Dim IntCuentaproducto As Integer
Dim LngClaveFactura As Long
Dim RSTConsulta As New ADODB.Recordset
Select Case INTINSTRUCCION
Case AGREGAR
If Not F_Validaventa Then Exit Sub
LngClaveFactura = F_ClaveConsecutiva("FACTURAS", "FAC_CLAVE")
strsql = "INSERT INTO FACTURAS"
strsql = strsql & "(FAC_CLAVE, CLIE_CLAVE, FAC_TOTAL, FAC_FECHA) "
strsql = strsql & "VALUES ('" & LngClaveFactura & "', '"
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 52
Coordinacin de Informtica

strsql = strsql & cbocliente.ItemData(cbocliente.ListIndex) & "', '"
flxproductos.Col = 4
For IntCuentaproducto = 1 To flxproductos.Rows - 1
flxproductos.Row = IntCuentaproducto
CurTOTAL = CurTOTAL + CCur(flxproductos.Text)
Next
strsql = strsql & CurTOTAL & "', #"
strsql = strsql & Format(Now, "DD/MM/YY HH:NN:SS") & "# )"
With CNTCARGAR
.Open STRCONEXION
.Execute (strsql)
.Close
End With
For IntCuentaproducto = 1 To flxproductos.Rows - 1
flxproductos.Row = IntCuentaproducto
strsql = "INSERT INTO VENTAS"
strsql = strsql & "(VENTA_CLAVE, FAC_CLAVE, PROD_CLAVE,
VENTA_CANTIDAD) "
strsql = strsql & "VALUES ('" & F_ClaveConsecutiva("VENTAS", "VENTA_CLAVE") &
"', '"
strsql = strsql & LngClaveFactura & "', '"
flxproductos.Col = 0
strsql = strsql & flxproductos.Text & "', '"
flxproductos.Col = 3
strsql = strsql & flxproductos.Text & "')"
With CNTCARGAR
.Open STRCONEXION
.Execute (strsql)
.Close
End With
Next
MsgBox "la factura y venta(s) correspondiente(s) se han registrado en la BD"
cbocliente.Text = ""
P_FormatoGrid
Case BUSCAR
Load FRMBusquedas
strsql = "SELECT DISTINCT FACTURAS.FAC_CLAVE, CLIE_NOMBRE,
FAC_TOTAL, FAC_FECHA "
strsql = strsql & "FROM FACTURAS, VENTAS, CLIENTES "
strsql = strsql & "WHERE FACTURAS.FAC_CLAVE=VENTAS.FAC_CLAVE "
strsql = strsql & "AND FACTURAS.CLIE_CLAVE = CLIENTES.CLIE_CLAVE "
If txtfactura <> "" Then
strsql = strsql & "AND FACTURAS.FAC_CLAVE= " & txtfactura.Text & " "
End If
If cbocliente.ListIndex <> -1 Then
strsql = strsql & "AND FACTURAS.CLIE_CLAVE = " &
cbocliente.ItemData(cbocliente.ListIndex) & " "
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 53
Coordinacin de Informtica

End If
If flxproductos.Rows <> 1 Then
strsql = strsql & "AND (("
For IntCuentaproducto = 1 To flxproductos.Rows - 1
With flxproductos
.Row = IntCuentaproducto
.Col = 0
If .Text <> "" Then
strsql = strsql & "PROD_CLAVE = " & .Text & " "
End If
.Col = 3
If .Text <> "" Then
strsql = strsql & "AND VENTA_CANTIDAD = " & .Text & " "
End If
If IntCuentaproducto <> flxproductos.Rows - 1 Then
strsql = strsql & ") OR ("
Else
strsql = strsql & "))"
End If
End With
Next
End If
RSTConsulta.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
If RSTConsulta.RecordCount = 0 Then
MsgBox "NO SE ENCONTR FACTURA CON ESOS CRITERIOS"
RSTConsulta.Close
Else
Do Until RSTConsulta.EOF
With FRMBusquedas.FLXFacturas
'aumenta una fila
.Rows = .Rows + 1
'se coloca en la ltima fila
.Row = .Rows - 1
.Col = 0
.Text = RSTConsulta("FAC_CLAVE")
.Col = 1
.Text = RSTConsulta("CLIE_NOMBRE")
.Col = 2
.Text = RSTConsulta("FAC_TOTAL")
.Col = 3
.Text = Format(RSTConsulta("FAC_FECHA"), "DD/MM/YY HH:NN:SS:")
End With
RSTConsulta.MoveNext
Loop
End If
Set RSTConsulta = Nothing
FRMBusquedas.Show
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 54
Coordinacin de Informtica

End Select
End Sub
PROCEDIMIENTO QUE DEFINE AL BOTN BUSCAR
Private Sub cmdbuscar_Click()
INTINSTRUCCION = BUSCAR
P_CRITERIOS
End Sub
PROCEDIMIENTO CRITERIOS (ESTABLECE EL ESTADO DE LOS CONTROLES
DURANTE LA BSQUEDA)
Sub P_CRITERIOS()
txtfactura.Enabled = True
txtfactura.Visible = True
txtfactura.Text = ""
cmdbuscar.Enabled = True
cmdbuscar.Visible = False
cbocliente.Enabled = True
cbocliente.Visible = True
cbocliente.ListIndex = -1
cboproducto.Enabled = True
cboproducto.Visible = True
cboproducto.ListIndex = -1
txtcantidad.Enabled = True
txtcantidad.Visible = True
txtcantidad.Text = ""
cmdmas.Enabled = True
cmdmas.Visible = True
flxproductos.Enabled = True
flxproductos.Visible = True
cmdnueva.Enabled = False
cmdnueva.Visible = False
cmdmodificar.Enabled = False
cmdmodificar.Visible = False
cmdeliminar.Enabled = False
cmdeliminar.Visible = False
cmdaceptar.Enabled = True
cmdaceptar.Visible = True
cmdcancelar.Enabled = True
cmdcancelar.Visible = True
cmdquitar.Enabled = True
cmdquitar.Visible = True
P_FormatoGrid
End Sub
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 55
Coordinacin de Informtica

FORMULARIO DE RESULTADOS DE BSQUEDA

INSTRUCCIONES AL CARGARSE EL FORMULARIO
Private Sub Form_Load()
P_FormatoGrid
End Sub
PROCEDIMIENTO QUE DEFINE EL FORMATO DEL GRID DE CONSULTAS
Public Sub P_FormatoGrid()
With FLXFacturas
.Rows = 1
.Cols = 4
.Row = 0
.Col = 0
.Text = "FACTURA N"
.Col = 1
.Text = "NOMBRE DEL CLIENTE"
.Col = 2
.Text = "TOTAL"
.Col = 3
.Text = "FECHA"
.ColWidth(0) = 1000
.ColWidth(1) = 2500
.ColWidth(2) = 1000
.ColWidth(3) = 1000
End With
End Sub
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 56
Coordinacin de Informtica

PROCEDIMIENTO QUE DEFINE EL FORMATO DEL GRID DE CONSULTAS
Private Sub FLXFacturas_DblClick()
Dim RSTBuscar As New ADODB.Recordset
Dim strsql As String
With FLXFacturas
.Col = 0
strsql = "SELECT * FROM VENTAS, FACTURAS, PRODUCTOS WHERE
FACTURAS.FAC_CLAVE = VENTAS.FAC_CLAVE AND VENTAS.PROD_CLAVE =
PRODUCTOS.PROD_CLAVE "
strsql = strsql & "AND VENTAS.FAC_CLAVE = " & .Text
RSTBuscar.Open strsql, STRCONEXION, adOpenStatic, adLockReadOnly
End With
FRMVentas.txtfactura.Text = RSTBuscar("FACTURAS.FAC_CLAVE")
FRMVentas.cbocliente.ListIndex = F_OpcionCombo(FRMVentas.cbocliente,
RSTBuscar("CLIE_CLAVE"))
FRMVentas.P_FormatoGrid
Do Until RSTBuscar.EOF = True
With FRMVentas.FLXProductos
.Rows = .Rows + 1
.Row = .Rows - 1
.Col = 0
.Text = RSTBuscar("PRODUCTOS.PROD_CLAVE")
.Col = 1
.Text = RSTBuscar("PROD_NOMBRE")
.Col = 2
.Text = RSTBuscar("PROD_PRECIO")
.Col = 3
.Text = RSTBuscar("VENTA_CANTIDAD")
.Col = 4
.Text = CSng(RSTBuscar("PROD_PRECIO")) * CInt(RSTBuscar("VENTA_CANTIDAD"))
End With
RSTBuscar.MoveNext
Loop
Unload Me
FRMVentas.Show
FRMVentas.CMDModificar.Visible = True
FRMVentas.CMDModificar.Enabled = True
End Sub
PROCEDIMIENTO QUE DEFINE AL BOTN EXPORTAR
Private Sub CMDExportar_Click()
Dim XlsAplicacion As Object
Dim XlsHoja As Object
Dim IntFila As Integer
Dim IntFactura As Integer
Screen.MousePointer = vbHourglass
P r o y e c t o P r i n c i p a l

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 57
Coordinacin de Informtica

FLXFacturas.Row = 1
Set XlsAplicacion = CreateObject("Excel.Application")
XlsAplicacion.Workbooks.Open FileName:="" & App.Path & "\REPORTE1.XLS",
ReadOnly:=True
Set XlsHoja = XlsAplicacion.Worksheets(1)
XlsAplicacion.Range("A2", "G1000") = ""
IntFila = 2
For IntFactura = 1 To FLXFacturas.Rows - 1
With XlsHoja
FLXFacturas.Col = 0
.Cells(IntFila, 1).Value = FLXFacturas.Text
FLXFacturas.Col = 1
.Cells(IntFila, 2).Value = FLXFacturas.Text
FLXFacturas.Col = 2
.Cells(IntFila, 3).Value = FLXFacturas.Text
FLXFacturas.Col = 3
.Cells(IntFila, 4).Value = FLXFacturas.Text
End With
IntFila = IntFila + 1
If IntFactura <> FLXFacturas.Rows - 1 Then FLXFacturas.Row = IntFactura + 1
Next
Screen.MousePointer = vbDefault
XlsAplicacion.Visible = True
Set XlsAplicacion = Nothing
End Sub
ARCHIVO DE EXPORTACIN A EXCEL (DE SLO LECTURA)

PROCEDIMIENTO QUE DEFINE AL BOTN SALIR
Private Sub Cmdsalir_click()
Unload me
End Sub
N o t a s F i n a l e s

CENTRO NACIONAL DE CAPACITACIN Y CALIDAD PGINA 58
Coordinacin de Informtica


Notas Finales

Deseamos que el presente material de apoyo le haya facilitado el aprendizaje de los temas que componen cada
mdulo de este evento y que le sea til para futuras consultas. Le felicitamos por haber concluido este curso de
capacitacin, contine practicando; recuerde que su habilidad depender del manejo cotidiano de esta
paquetera. Tambin le reiteramos que el equipo de Instructores estar en la mejor disposicin de apoyarle con
cualquier asesora en Informtica, y le invitamos a que consulte el calendario de cursos y contine con este
proceso de capacitacin, segn sus necesidades, en el puesto que desempea. Las puertas del Centro
Nacional de Capacitacin y Calidad estarn siempre abiertas para brindarle el servicio en Informtica que
requiera.

Bibliografa: Microsoft Visual Basic 6.0 Enterprise, Michael Halvorson y Michael Young, Mc Graw Hill
Microsoft Visual Basic 6.0 paso a paso, Halvorson Kinata, Mc Graw Hill

Registrado ante la Secretaria de Educacin Publica
Obra Literaria
Registr en Trmite

Vous aimerez peut-être aussi