Está en la página 1de 28

Curso Visual Basic Prctico

Entrega N 1
5 de Octubre de 1998

Autor: Mario Rosas Len


Para: Web del Programador

Introduccin:

Este curso pretende, mediante un ejemplo, ensear a los usuarios poco


avanzados de V.B. a realizar un programa completo, desde el diseo de los formularios
hasta el diseo de la base de datos. Se utilizar VB5, aunque si vuestra versin de V.B.
es distinta no habr problema, bueno si, puede que algunas cosas estn en otro sitio o
no existan en esa versin pero son cosas que pueden pasar.
En cada una de las entregas se incluir el cdigo fuente del programa hasta ese
momento. El objetivo no es que el usuario copie y modifique el fuente que le mando sino
que, siguiendo las instrucciones que aqu se detallan, realice su propia visin del
problema e improvise segn sus gustos y, por que no, sus necesidades.
El programa que vamos a realizar es un organizador de discos, cintas, videos,
libros, juegos, etc... desde la base de datos hasta los formularios.
Va a ser un programa muy bsico, aadir, mantenimiento e imprimir, pero una de
las cosas ms importantes en este tipo de programas es la esttica y la facilidad de uso.
Yo, por mi parte, quiero fomentar esto ya que si a mi me ofrecen dos programas que
hacen lo mismo y al mismo precio prefiero el que sea ms "bonito y fcil".
El programa:

Como ya dije antes, el programa ser un organizador multimedia. Constar de 6


formularios que sern: Men Principal, Aadir Entradas, Mantenimiento de Datos,
Buscar, Mostrar Bsqueda e Imprimir. Como ya he dicho es muy bsico, la idea es que
vosotros lo ampliis.
Entrega N 1: Creacin del proyecto y el primer formulario, El Men Principal.

Primero crear el nuevo proyecto. Yo os recomiendo crear primero un directorio


donde iris guardando el proyecto, los formularios, mdulos, base de datos, etc. Una vez
tengis el directorio (p.e. c:\archivos de programa\Orgamul\) empezamos con V.B.
Al arrancar V.B. nos pregunta que tipo de proyecto queremos crear nuevo, aqu
seleccionamos Exe Estndar. Una vez pulsado esto tenemos el nuevo proyecto y nuestro
primer formulario.
El siguiente paso es poner las propiedades del proyecto: Pulsamos en Proyecto,
Propiedades de Proyecto 1. Ponemos el nombre de nuestro proyecto y la descripcin del
mismo. (por qu hacer esto?, para que al crear el ejecutable se incluya tambin esta
informacin, la cual ser visible al pulsar en las propiedades del archivo).
Todava queda algo ms que hacer para poder empezar que es configurar las
opciones de V.B.: Herramientas, Opciones. Aqu pulsamos en Entorno y en Guardar los
Cambios (por qu?, para que antes de probar el programa se guarde automticamente
y as, en el caso de que el programa bloquee la mquina o no responda V.B. tengamos
guardada la copia del cdigo fuente).

Ya estamos preparados. La verdad es que estoy suponiendo algunas cosas (como


que sabis las instrucciones de V.B., como los bucles, condicionales, etc... espero que
as sea).
1. Cambiamos el nombre del formulario inicial, se va a llamar frmMenuPrincipal. Vamos
a las propiedades y cambiamos Name, en un principio ser Form1, pues ponemos
frmMenuPrincipal, con las maysculas donde estn (por qu?, al hacer referencia en
cdigo a este formulario pondremos frmmenuprincipal, al pasar de lnea
automticamente se pondrn en maysculas la M y la P, con lo cual sabremos que lo
hemos escrito bien, si no se pone en maysculas puede ser que hayamos escrito mal el
nombre. Esto tambin es aplicable a variables, globales y controles).
2. Cambiamos el ttulo de la aplicacin, la propiedad Caption del formulario. En
principio es Form1, ponemos Organizador de aplicaciones.
3. Ahora incluiremos los botones a utilizar. En el men principal hay cinco opciones
(por lo tanto cinco botones). Con las siguientes propiedades:
Botn

Name

Caption

cmbAadir

Aadir Nuevos

cmbMantenimiento

Mantenimiento

cmbBuscar

Bsqueda

cmbImprimir

Imprimir

cmbSalir

Salir

4. Si todo ha ido bien, ya tendris el formulario principal con los botones dentro. Y ser
una cosa + o - as:

5. Ahora incluiremos el cdigo del botn cmbSalir. Pulsamos doble encima del control y
aparecer el editor de cdigo con el evento cmbSalir_click(). Ponemos lo siguiente:
Private Sub cmbSalir_Click()
Unload Me
End Sub

Este cdigo har que al pulsar sobre Salir, se descargue el formulario (osea, salga a
Windows).

6. Por ltimo, cambiar otra propiedad del formulario. Salimos del editor de cdigo y
pulsamos en el formulario para ver sus propiedades. Una de ellas es Border Style, lo
ponemos a 3 (por qu?, para evitar que el usuario pueda cambiar el ancho y alto del
formulario.)
7. Esto es todo, recordad que cuando hay veinte programas que hacen lo mismo, el
mejor siempre es el ms fcil y vistoso. Tenemos una herramienta con la que podemos
hacer esto fcilmente. Todo depende de cada programador. Cualquier pregunta podis
realizarla a travs de la lista de la Web del Programador, en la misma Web o a mi
direccin de correo.

Curso Visual Basic Prctico


Entrega N 2
10 de Octubre de 1998

Autor: Mario Rosas Len


Para: Web del Programador

Anterior:

En la anterior entrega (1) llegamos al punto de tener ya realizado


el men principal. En esta segunda primero explicar un poco la
nomenclatura que utilic en los botones (extendible a todos los dems
controles) y comenzaremos una especie de relacin con los campos que
vamos a guardar en nuestro organizador multimedia. Preparados.....
Listos..... Comenzamos....
La nomenclatura:

Esta nomenclatura es la que yo utilizo y su evolucin ha sido


personal, no es el estandar de Microsoft (est por ahi pero yo no he
podido encontrarlo), as que este es el que yo utilizo y creo que est bien.
Los nombres de los controles comienzan con tres letras relativas al
control. P.E. Si es un Command Button (Botn normal) sus tres primeras
letras sern 'cmb' seguido de algo relativo a la accin que va a realizar.
P.E. El botn Salir, pondremos cmbSalir, con la 'S' en mayscula como ya
exliqu en la entrega anterior.
Esto es extensible a otros controles. Por ejemplo, un Text Box que
contendr el ttulo del disco/programa/etc pondremos txtTitulo y as
sucesivamente.
Os repito que este es el sistema que utilizo, podeis seguirlo, podeis
seguir con el que teneis o podeis buscar el estandar de Microsoft (y
cuando lo encontreis lo publicais aqui).

La Base de Datos: Qu datos vamos a guardar?.

A continuacin pondremos las tablas y campos que tendr la base


de datos.
Tabla

Campos

Tipo

multimedia

numero

entero

Contendr un nmero asignado


automticamente

titulo

texto * 50

Ttulo de la entrada

autor

texto * 40

Autor de la entrada

fecha

fecha

Fecha de entrada (mas que nada para que


veais cmo se utiliza un campo date)

tipo

text * 20

Tipo de entrada (CD Musica, CD-Rom, etc)

contenido

text * 30

Tipo de contenido (pop, rock, arcade,


varios, aventuras, lucha, cifi, etc)

prestado

boolean

Mostrar true si est prestado o false si no

Descripcin

Esa es la nica tabla por ahora. Vamos a crearla para que podamos
comenzar a utilizarla. Primero abrimos el VB y nuestro proyecto que
comenzamos la anterior entrega. Una vez abierto pulsamos
Complementos, Administrador Visual de Datos.
Este es el Administrador de Datos:

Estos son los pasos a seguir para crear la base de datos:


1. Pulsamos Archivo, Nueva, Microsoft Access, MDB Versin 7.0 (No he
probado la otra as que utilizad esta que si se que funciona)
2. Nos pide una localizacin en el disco duro, seleccionamos EL MISMO
DIRECTORIO DE LA APLICACIN. Aunque no sea necesario, si es importante
a la hora de realizar los discos de instalacin que todos los datos estn en
el mismo directorio.

3. Nombre de la base de datos OM.mdb. Y ya estamos preparados para


aadir la tabla primera. Vamos a la ventana de datos, pulsamos al botn
derecho en mitad y seleccionamos Nueva Tabla.

4. Ponemos el nombre de la tabla (Multimedia) y pulsamos en agregar


campo. Vamos aadiendo los datos cmo se explica en la tabla de arriba y,
al terminar, pulsamos en Generar la Tabla.
5. Una vez terminado tenemos ya lista la base de datos para comenzar a
realizar los formularios de entrada y consulta de datos.
6. En la creacin de la base de datos podeis improvisar, aadir nuevos
campos o lo que querais con el fin de hacer un programa MEJOR que el que
yo os estoy mostrando.
7. En la siguiente entrega realizaremos los formularios de entrada de
datos y al finalizar podremos intentar aadir algunas cosas mediante el
programa.

Curso Visual Basic Prctico


Entrega N 3
20 de Octubre de 1998

Autor: Mario Rosas Len

Para: Web del Programador


Anterior:

Pues eso, los formularios de entrada de datos. Como dije en la


anterior entrega vamos a poder introducir los primeros datos. Adems
tendreis la primera entrega en cdigo que os mando con lo que comento
aqui. As que, ahi va....
Opcin: Aadir Nuevo

Este es el formulario de entrada de datos. Como ya vimos en la


anterior entrega, tenemos los siguientes campos en nuestra base de
datos.
Tabla

Campos

Tipo

multimedia

numero

entero

Contendr un nmero asignado


automticamente

titulo

texto * 50

Ttulo de la entrada

autor

texto * 40

Autor de la entrada

fecha

fecha

Fecha de entrada (mas que nada para que


veais cmo se utiliza un campo date)

tipo

text * 20

Tipo de entrada (CD Musica, CD-Rom, etc)

contenido

text * 30

Tipo de contenido (pop, rock, arcade,


varios, aventuras, lucha, cifi, etc)

prestado

boolean

Mostrar true si est prestado o false si no

Descripcin

As que comenzaremos realizando el formulario. Supongo que ya


tendreis arrancado VB sino, a que esperais?..... venga.
Supongo que ya lo tendreis, vale, vale, sin prisa. Ahora cargais el
proyecto del organizador multimedia y seguiremos.
Estupendo, ahora creamos un nuevo formulario bsico. Podeis
hacerlo pulsando en Proyecto - Agregar Formulario. As tendremos un
formulario en vacio y podremos seguir palante.
Una vez tenemos el formulario, cambiaremos las siguientes
propiedades del mismo:
frmAadirEntrada
Propiedad

Valor

Descripcin

Name

frmAadirEntrada

BorderStyle

3 - Fixed Dialog

Nombre del formulario, para referirnos a l.


Como dije en la Entrega 1

Caption

Aadir Entrada

Ttulo del formulario

StartUpPosition

2 - Center Screen

Posicin del formulario cuando se carga.

As tenemos ya el formulario con sus propiedades, el ancho y alto


del formulario lo estableceremos con el ratn pulsando en las esquinas del
formulario. Este ancho y alto est en funcin de lo que pongamos ahora
nosotros dentro del formulario.

Empezaremos aadiendo una etiqueta o control Label, como


querais. Lo situamos en pantalla, a gusto del 'consumidor' y le ponemos
las siguientes propiedades:
lblFecha
Propiedad

Valor

Name

lblFecha

Alignment

2 - Center

Caption

Fecha

Descripcin
Nombre de la Etiqueta
Texto centrado
Es la etiqueta del campo Fecha

El tipo de letra y color a vuesto gusto. Hay que hacer lo mismo para
las etiquetas de: TITULO, AUTOR, TIPO y CONTENIDO. Slo sequir los pasos
anteriores.
Si ya hemos aadido todas las Etiquetas, aadiremos las Cajas de
Texto o text box, como querais. Aadimos el primero (el de la fecha) y
ponemos las siguientes propiedades:
txtFecha
Propiedad

Valor

Name

txtFecha

Text

Descripcin
Nombre de la Caja de Texto
Ponemos la caja de texto vacia

Al igual que con las etiquetas, la fuente, color, etc es a vuestro


gusto. Hacer lo mismo para las dems cajas que quedan que son: TITULO y
AUTOR ya que en TIPO y CONTENIDO pondremos Cajas Combo.
Aadimos la caja combo del tipo, que llamaremos comTipo
(propiedad Name) y pondremos la propiedad Text="Elije el tipo". Haremos
lo mismo con la caja combo de Contenido.
Faltan los botones. Uno para Aadir y otro para Volver. Los
aadimos y, para finalizar tenemos esto:

Tranquilos que aqui abajo esta el link para que os lleveis el cdigo
fuente (para los que estn diciendo, uff que dificil).

As que ya lo tenemos, pues vamos a poner un control data para


poder aadir los datos. Acerca del control data, antes de que alguien me
venga con eso de que es muy malo, lento y patatin y patatan, es el control
que viene con vb para realizar funciones con bases de datos, es fcil y si,
es lento con bases de datos grandes pero para esto sirve y para aprender
no veas lo fcil que es. Si alguien quiere utilizar el mtodo ms avanzado
que lo haga.
Bueno, despus del discursito sigo. Aadimos el control Data y
cambiamos las propiedades por:
dbMul
Propiedad

Valor

Descripcin

Name

dbMul

Nombre del control Data

Caption

dbMul

Ponemos el nombre que nosotros vemos en


diseo

DataBaseName

Ruta de la Base de
Datos

RecordSource

Multimedia

Visible

False

Pues eso
Tabla que vamos a utilizar
Que en ejecucin no se vea

Ya tenemos la base de datos enlazada y podemos empezar a


escribir cdigo. Aqui empiezan los eventos, para los que no lo sepan
explicar un poquito lo que son. Cada objeto (control, formulario, en fin
cualquier cosa) tiene sus propios eventos. Los eventos ocurren en
determinadas condiciones, cuando se carga un formulario, cuando se
pulsa en un botn, cuando cambia el texto de un Text Box, etc. En fin,
nosotros debemos controlar estos eventos.
Empezaremos por el evento Load del formulario. Pulsamos doble en
el formulario (no en cualquier control sino en el fondo, en el formulario) y
aparecer la ventana de cdigo y el primer evento del formulario que es el
Load (que suerte no?). Pues empezaremos con l con el siguiente cdigo:
Private Sub Form_Load()
' aadimos las categoras y tipos
comTipo.AddItem "CD-Msica"
comTipo.AddItem "CD-ROM"
comTipo.AddItem "CD-I"
comTipo.AddItem "Video-CD"
comTipo.AddItem "DVD"
comTipo.AddItem "Cassette"
comTipo.AddItem "Vinilo"
comTipo.AddItem "VHS"
comTipo.AddItem "BETA"
comTipo.AddItem "Diskette 3 1/2"
comTipo.AddItem "Diskette 5 1/4"
comTipo.AddItem "Disco ZIP 100"
comTipo.AddItem "Disco ZIP 50"
comTipo.AddItem "Backup"
comContenido.AddItem "Pop"
comContenido.AddItem "Rock"
comContenido.AddItem "New Age"
comContenido.AddItem "B.S.O."
comContenido.AddItem "Msica Otros"

comContenido.AddItem "Aventura"
comContenido.AddItem "Arcade"
comContenido.AddItem "Emuladores"
comContenido.AddItem "Programacin"
comContenido.AddItem "Ordenador Otros"
End Sub
Y me dir alguno de vosotros, Y esto que XXXXX hace?. Pues lo
que hace es cargar en los controles Combo las opciones que apareceran al
pulsar sobre ellos, tanto en el combo de Tipos como en el de Contenidos.
Es muy fcil, simplemente: nombre.AddItem "lo que quieras aadir"
Ahora, si ejecutamos el programa, al pulsar sobre el control Combo,
apareceran todas las caractersticas que hemos puesto. Eso es todo lo que
pondremos en el evento Load del formulario.
Por ltimo pondremos el cdigo de los botones: cmbAadir y
cmbVolver, en el evento Click de cada uno de ellos.
Private Sub cmbVolver_Click()
Unload Me
End Sub
Y aqui est el de cmbAadir, comentado en el mismo cdigo.
Private Sub cmbAadir_Click()
' recomendaciones iniciales
' hay que controlar los datos que vamos a introducir
' si introducimos una fecha incorrecta ---> ERROR
' si introducimos una cadena ms larga de lo que coge ---> ERROR
dbMul.Recordset.AddNew ' esto es para decirle
' que vamos a aadir
dbMul.Recordset("titulo") = Trim$(txtTitulo.Text)
' aadimos el titulo (el trim es para quitar los espacios de ms)
dbMul.Recordset("autor") = Trim$(txtAutor.Text)
' igual con el autor
dbMul.Recordset("fecha") = Format(txtFecha.Text, "dd/mm/yyyy")
' la fecha utiliza el format que es simplemente para decirle en qu
' formato la aadimos que es dia/mes/ao (con 4 digitos)
dbMul.Recordset("tipo") = Trim$(comTipo.Text)
' el tipo lo cogemos del combo
dbMul.Recordset("contenido") = Trim$(comContenido.Text)
' igual con el contenido
dbMul.Recordset.Update ' lo aade definitivamente
' ya est todo
' mostramos un mensaje de que se ha aadido
MsgBox ("Ya est dentro")
' vaciamos los campos para aadir otro
txtTitulo.Text = ""
txtAutor.Text = ""
txtFecha.Text = ""
comTipo.Text = "Elije el tipo"
comTipo.ListIndex = -1 ' indice de la lista, ya lo explicaremos
comContenido.Text = "Elije el contenido"
comContenido.ListIndex = -1 ' indice de la lista, ya lo explicaremos

txtFecha.SetFocus ' mandamos el cursor a la fecha


' ya est
End Sub
Aqui teneis el Zip con el cdigo fuente de to este rollo que os he
metido. Exctamente AQUI.
Ya os dejo, el prximo da pondremos un dbGrid en Mantenimiento
para poder eliminar, modificar y to eso.
Hasta pronto, ah saludos a todos los que estais siguiendo 'esto'.

Autor: Mario Rosas Len

Curso Visual Basic Prctico


Entrega N 4
2 de Noviembre de 1998

Autor: Mario Rosas Len


Para: Web del Programador

Primero.

Disculpas a todos los que esperabais esta entrega ya que ha salido


un poco tarde, ya sabeis, el resfriado, el trabajo, en fin, mucho estres.
Adems tambien quiero aclarar un problema que hubo en la
entrega anterior sobre el control Data. Algunas personas han preguntado
cual es el control Data, as que es el que tiene este iconito en la barra de
herramientas:

Anterior:

En la anterior entrega creamos el primer formulario de entrada de


datos, ahora realizaremos otro formulario para modificar, eliminar y ver
los datos que tenemos introducidos. Yo lo llamo Mantenimiento de los
Datos.
Preparados porque comenzamos 10 ... 9 ... 8 ... 7 ... 6 ... 5 ... 4 ...
3 ... 2 ... 1 ... Lanzamiento (por eso de Pedro Duque).
Opcin: Mantenimiento de Datos.

En este formulario, como he dicho antes, podremos ver, modificar y


eliminar los datos que ya tenemos introducidos.
As que, como en la entrega anterior, comenzaremos realizando el
formulario. Venga, pulsad en el icono de VB y comenzamos.
Cargad el proyecto del organizador multimedia y seguiremos.
Como ya dije en la entrega anterior, creamos un formulario nuevo y
ponemos las siguientes propiedades:
frmMantenimiento
Propiedad

Valor

Name

frmMantenimiento

Descripcin
Nombre del formulario, para referirnos a l.

BorderStyle

3 - Fixed Dialog

Caption

Mantenimiento de
Datos

Como dije en la Entrega 1


Ttulo del formulario

StartUpPosition

2 - Center Screen

Posicin del formulario cuando se carga.

Ya hemos creado el formulario, establecemos el ancho y alto segn


las necesidades y continuamos.
Creamos, tal y como dije en la entrega anterior, las mismas
etiquetas y cajas de texto que en el formulario de entrada de datos.
Podeis utilizar Copiar y Pegar si quereis.
Una vez con todas las etiquetas y cajas de texto aadiremos el
control DBGrid. Si no lo tenemos en la barra de herramientas debemos
hacer lo siguiente: Proyecto - Componentes. Una vez dentro seleccionar el
control Microsoft Data Bound Grid como indica la imagen.

Aadimos tres botones, Modificar, Eliminar y Volver.


Ahora vamos a poner el control data (antes que el DBGrid) para
poder modificar, ver y eliminar los datos. El objetivo ser que, al pulsar en
una fila del DBGrid se muestren los datos en las cajas de texto y en ese
momento poder modificarlo o eliminarlo.
Aadimos el control Data y cambiamos las propiedades por:
dbMul
Propiedad

Valor

Descripcin

Name

dbMul

Nombre del control Data

Caption

dbMul

Ponemos el nombre que nosotros vemos en


diseo

DataBaseName

Ruta de la Base de
Datos

RecordSource

Multimedia

Pues eso
Tabla que vamos a utilizar

Visible

False

Que en ejecucin no se vea

Ya tenemos la base de datos enlazada y podemos aadir el DBGrid.


Este control va a mostrar los datos del control Data por lneas (un registro
en cada lnea y un campo en cada columna).
Lo ponemos y tendremos algo as:

Ahora cambiaremos las propiedades del control DBGrid.


dbgMalla
Propiedad

Valor

Name

dbgMallal

DataSource

dbMul

Descripcin
Nombre del control DBGrid
El control data con el que enlazamos

Eso es lo que pondremos, ahora cargamos los campos a mostrar de


la siguiente forma:
Nos colocamos encima del control DBGrid con el ratn y pulsamos
el botn derecho. Escogemos la opcin Recuperar Campos y, fijate,
obtendremos los siguiente:

Si queremos podemos cambiar el ancho de las columnas con el


comando Editar (pulsando el botn derecho del ratn encima del DBGrid) o
cambiar las propiedades del control.
Ahora enlazaremos las cajas de texto y los combo box con la base
de datos de la siguiente forma:
El primero ser el txtFecha, lo enlazaremos con el campo Fecha del
control data. Cambiaremos las siguientes propiedades de la caja de texto
txtFecha:
DataSource=dbMul
DataField=fecha
La semana pasada cambie a VB6, este te permite otra propiedad
que es el formato (la cual no est en VB5).
El campo txtFecha ya est enlazado, haremos lo mismo para los
dems pero cambiando los campos por los correspondientes.
Una vez terminado podemos ver el resultado (bueno antes hay que
llamar a este formulario desde el men principal, pero eso sabeis ya como
se hace, o no?).
Probad a ejecutar la aplicacin y vereis el resultado (pero antes
debeis introducir algunos datos).
Ahora, debemos continuar con el cdigo que pondremos, primero
empezaremos por el evento Load del formulario. Pulsamos doble en el

formulario (no en cualquier control sino en el fondo, en el formulario) y


aparecer la ventana de cdigo y el primer evento del formulario que es el
Load (que suerte no?). Pues empezaremos con l con el siguiente cdigo:
Private Sub Form_Load()
' aadimos las categoras y tipos
comTipo.AddItem "CD-Msica"
comTipo.AddItem "CD-ROM"
comTipo.AddItem "CD-I"
comTipo.AddItem "Video-CD"
comTipo.AddItem "DVD"
comTipo.AddItem "Cassette"
comTipo.AddItem "Vinilo"
comTipo.AddItem "VHS"
comTipo.AddItem "BETA"
comTipo.AddItem "Diskette 3 1/2"
comTipo.AddItem "Diskette 5 1/4"
comTipo.AddItem "Disco ZIP 100"
comTipo.AddItem "Disco ZIP 50"
comTipo.AddItem "Backup"
comContenido.AddItem "Pop"
comContenido.AddItem "Rock"
comContenido.AddItem "New Age"
comContenido.AddItem "B.S.O."
comContenido.AddItem "Msica Otros"
comContenido.AddItem "Aventura"
comContenido.AddItem "Arcade"
comContenido.AddItem "Emuladores"
comContenido.AddItem "Programacin"
comContenido.AddItem "Ordenador Otros"
End Sub
Es como en el formulario de entrada, simplemente para que al
modificar tengamos tambin todas las opciones
Por ltimo pondremos el cdigo de los botones: cmbEliminar,
cmbModificar y cmbVolver, en el evento Click de cada uno de ellos.
Private Sub cmbVolver_Click()
Unload Me
End Sub
Y aqui est el de cmbModificar, que ser.
Private Sub cmbModificar_Click()
dbMul.RecordSet.Edit
dbMul.RecordSet.Update
End Sub
Ahora el de Eliminar:
Private Sub cmbEliminar_Click()
dbMul.RecordSet.Delete
dbMul.Refresh
End Sub

Y preguntareis algunos, ya est?. Pues no, este modo es el ms


fcil pero ocasiona muchos problemas como indico aqui:
1. Al pulsar en el control DBGrid nos deja modificar los campos,
probad a pulsar en cualquier celda y modificarla. El problema llega al
tener que validar una entrada como, por ejemplo, la fecha (poned una
fecha incorrecta vers que chow).
2. La base de datos se modifica sin tener que pulsar en el botn
modificar.
3. No se realizan las comprobaciones pertinentes de fechas,
longitudes, etc que son necesarias como indiqu en el cdigo de la opcin
Aadir en la entrega anterior.
4. En fin, esto no es una aplicacin comercial en absoluto. Fallar
mas que una escopeta de caa.
Intentad solucionarlo y en la prxima entrega indicar cmo
hacerlo, pero intentarlo es lo que cuenta.
Por ltimo comentar un par de cosas:
a) En la imagen de arriba (componentes) podeis ver que el control
DBGrid tiene al final lo siguiente (SP3). Quizs el vuestro no lo tenga, esto
es que yo tengo instalado el Service Pack 3 que no es, ni mas ni menos,
que un paquete para solucionar errores en los componentes de VB. Quizs
vosotros no llegueis a ver esos errores (en el caso de que no tengais el
SP3) pero siempre es conveniente. Por otra parte, no debeis preocuparos
si no lo teneis, pero podeis bajarlo de internet desde la web de microsoft
(aunque son unas 13 Mb).
b) Gracias a todos los que seguis este curso y perdonad por lo tarde
que ha llegado esta entrega, espero poder ser ms puntual a partir de
ahora.
Esto es todo, por ahora. En la siguiente entrega veremos 'algo' de
SQL. Y digo 'algo' porque es un tema demasiado extenso, quizs podreis
ver por ahi algn manual en condiciones.
Download del cdigo fuente hasta ahora: AQUI
Hasta pronto.... hay que ver lo alto que ha llegado el Pedro Duque,
tendrn Internet ahi arriba?, Estar viendo este curso?, y si lo esta
viendo Es que se aburre tanto ahi arriba?. Esto es como un Expediente X.
Preguntas sin respuesta.

Curso Visual Basic Prctico


Entrega N 5
9 de Noviembre de 1998

Autor: Mario Rosas Len


Para: Web del Programador

Primero.

Tarde, como siempre, aqui teneis la quinta y no ltima entrega de


este curso prctico de VB.
Anterior:

Como ya os dije en la anterior entrega hoy os comentar algo de


SQL (Structured Query Languaje) o algo as. No lo mostrar todo, pero si
lo suficiente para que podais hacer consultas bastante buenas.
Y, como Pedro Duque ya ha bajado, no se que decir. Slo espero que
suba otra vez a por mi porque yo estoy todava en las nubes.
SQL (Structured Query Languaje)

Pues si, el SQL que tanto se oye hablar y tan poco se comenta
detenidamente. Pues esto es sql, un lenguaje estructurado de consultas.
Con este lenguaje podemos conseguir una consulta del tipo de 'todas las
chicas de la base de datos que tengan los ojos verdes y el pelo negro y
ordenadas por edad'. (lo que falta es la base de datos). :-)
En nuestro caso (dejando la base de datos anterior, aunque si
alguien la tiene que la mande) podemos hacer una consulta de este tipo:
'Todos los cd-roms cuyo contenido sea aventuras y que su autor sea EA
Sports' pero las posibilidades de consultas y accesos a la base de datos
son inmensas.
Bueno, pasamos a cmo hacerlo, es que me he inspirado y no dejo
de escribir. Cmo lo hacemos en visual basic?. Pues, sencillamente,
ponemos la sentencia SQL en la propiedad RecordSource del control Data.
Y cmo cojxxxx hago la sentencia SQL?, pues a eso vamos, no seamos tan
impacientes.
Podemos decir que una sentencia SQL tiene tres partes:

1. SELECT
2. WHERE
3. ORDER
Un ejemplo de sentencia sera:
SELECT * FROM multimedia WHERE autor='EA Sports' ORDER BY
contenido
Esto nos SELECCIONA (select) TODOS los campos (*) DE LA
tabla (from) multimedia DONDE (where) el autor sea igual a EA Sports y
que se ORDENE (order) por (by) contenido.
En esa sentencia est lo ms necesario para que podais hacer
vuestra primera sentencia propia, bueno, no todo. Ahora os explicar lo
que no est escrito.
Primera Parte: SELECT

Pues esta la podeis dejar casi fija, cambiando la tabla claro. El


objetivo de esta sentencia (que es obligatoria) es decirle que campos
queremos en la consulta, le decimos que todos con el asterisco pero, si
queremos podemos poner la lista de los campos que vamos a utilizar, por
ejemplo: SELECT autor, titulo, tipo, contenido FROM multimedia
Como ya he dicho es OBLIGATORIA y siempre debe ponerse, si
utilizamos SQL, si no lo hacemos basta con poner el nombre de la tabla,
como ya hemos hecho en el mdulo de mantenimiento.
Segunda Parte: WHERE
Esta clausula no es obligatoria, puedes ponerla o no, pero slo
tiene sentido omitirla si lo que hacemos es slo ordenar la base de datos.
Considerando que autor='EA Sports' es la consulta, en la
clausula where podemos poner tantas como queramos enlazadas con OR,
AND, NOT, etc. Entonces podramos poner: (select) WHERE autor='EA
Sports' AND titulo='FIFA 98', nos dara como resultado todos los registros
cuyo autor sea EA Sports y cuyo titulo sea FIFA 98, fcil no?.
Si, si, lo de las comillas, por qu lo de las comillas? pues por
el tipo de campo que es, es un campo de texto, pues comillas simples. En
esta tabla os indico los distintos tipos y su forma de consulta en SQL.
TIPO
Texto
Nmero
Fecha

EJEMPLO con WHERE


WHERE campo_texto = 'texto_busqueda'
WHERE campo_numero = numero
WHERE campo_fecha = fecha ----------> problema, la fecha en formato
mes/dia/ao

Antes lo di por hecho pero en las consultas podemos poner


cualquier tipo de lgica, he utilizado = pero podemos poner <, >, <>, >=,
<=, LIKE (que ahora lo explico).
El LIKE, es cmo PARECIDO A. Por ejemplo: SELECT * FROM
multimedia WHERE autor like 'EA*' , esto hara lo siguiente, coge todos los
campos de la tabla multimedia donde el campo autor tenga sus dos
primeras letras como EA. Osea, tendriamos un registro cuyo autor fuese
EA Sports, otro que fuese EA Games, otro EAT ALL, etc, todo los que
empiezan por EA. Quizs el ejemplo ms claro es el siguiente: Select *
from clientes where apellidos like 'Rosas*', y saldran todos mis familiares.

dems.

Pero ATENCIN, slo con campos texto, no funciona con los

Otro truco, para la fecha. En el caso de que queramos saber


todos los registros cuya fecha est en un determinado mes (que se lo
damos en una variable), esto ya es cdigo operativo 100X100.
private sub Command1_click()
' el control Data se llama dbCon
mes=10

select="SELECT * FROM multimedia "


where=" WHERE MONTH(fecha)="&str$(mes)
1/10/1998 y el 1/10/1950)

' mes de octubre (puede salir el

'osea, todos cuyo mes sea octubre


' where=" WHERE fecha BETWEEN 2/1/1998 AND 12/31/1998" 'fecha entre el 1 de Febrero y
el 31 de Diciembre
' where=" WHERE fecha > 1/17/1998" ' fecha mayor que el 17 de Enero de 1998
order=" ORDER BY autor"
dbCon.RecordSource=select & where & order
dbCom.Refresh
end sub
Os pongo estos ejemplos porque es muy importante lo de las
fechas ya que yo estuve mucho tiempo liado con ellas y, casi siempre, se
equivoca uno al ponerlas y hacer las consultas. Sobre todo si trabaja con
el sistema de Espaa que es dia/mes/ao. Otra cosilla, poned siempre en
las consultas el ao completo (no seamos tan malos como para hacer un
programa que no funcione con los cuatro dgitos, luego puede haber
problemas).
Tercero: ORDER
Simplemente, por que campo o campos quieres que te ordene el
resultado. Por ejemplo, ORDER BY autor, titulo. Ordenara el resultado por
autor y, dentro de cada autor, por ttulo.
Creo que ya est. Podeis probar, en el formulario de
Mantenimiento poneis un botn y en su evento CLICK pegais el cdigo que
he puesto aqui arriba. Aadeis varios registros a la base de datos y
despues pulsais en el botn. Lo ms fcil sera poner una de texto con
LIKE que son las que antes se ve el resultado. De todas formas, lo debeis
hacer en el formulario de mantenimiento porque se actualizara la base de
datos y el DBGrid con lo que veriamos los resultados al instante en
pantalla. Bueno no se si ha quedado claro. La prxima mando un ejemplo
que en esta ya no me llega.
Hasta pronto, aqui me quedo escuchando a Celine Dion y su Let's
talk about love, es que soy un sentimental, no puedo remediarlo :-)

SENTENCIAS DE SELECCIN O CONSULTAS


Bien, SQL permite realizar consultas mediante sentencias de seleccin "SELECT".
Lo q hace esta sentencia SELECT es tomar datos de una base de datos para devolverlos a
quien se lo pidi (en nuestro caso quien se lo pide es el objeto TBL).

SELECT consta de seis clusulas: las dos primeras obligatorias (SELECT y FROM) y las otras
opcionales (WHERE, GROUP BY, HAVING, UNION, ORDER BY).
SELECT y FROM
FUNCIONES DE AGRUPAMIENTO
WHERE
GROUP BY
HAVING
UNION
ORDER BY
CONSULTAS A MAS DE UNA TABLA

SELECT y FROM
Veamos, con un ejemplo, como funciona:
SQL = "SELECT * FROM tabla1"
Set TBL = BDD.OpenRecordset(SQL) 'TBL almacena todos los valores de la tabla
Nuestra orden SQL es: seleccionar (SELECT) todos los campos (*) de (FROM) la tabla1.
Ahora vamos a mostrar en la lista lo q almacenamos.
TBL.MoveFirst 'nos posicionamos en el primer registro de la tabla
Do Until TBL.EOF ''La propiedad EOF se pone TRUE cuando se a llegado al final de la tabla
List1.AddItem TBL("nombre")
TBL.MoveNext 'pasamos al siguiente registro
Loop
De esta manera, al ejecutar, nos debe aparecer en la lista todos los nombres de la tabla.
Si queremos mostrar "nombre" "apellido":
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("nombre") & " " & TBL("apellido")
TBL.MoveNext
Loop
Si queremos listar "nombre" "apellido" tiene "edad":
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")
TBL.MoveNext
Loop
Qu sucede si solo quera tomar de la tabla1 los campos nombre y edad (no el apellido). En
este caso la sentencia SQL quedara:
SQL = "SELECT nombre,edad FROM tabla1"

Por lo tanto el formato de la sentencia SELECT hasta ahora es:


SELECT campo1,campo2,...,campoN FROM nombre_de_la_tabla
NOTA: si ya terminamos de trabajar con la tabla y con la base de datos las podemos cerrar de
la siguiente manera:
TBL.Close 'cierra tabla
BDD.Close 'cierra base de datos

FUNCIONES DE AGRUPAMIENTO
Las funciones de agrupamiento son:
DISTINCT: Dijimos q si usabamos el * nos seleccionaba todos los campos. Tambin hay un
operador llamado DISTINCT, ste elimina las filas o registros duplicados del resultado de la
consulta. Esto se ve bien en el siguiente ejemplo:
SQL = "SELECT DISTINCT edad FROM tabla1" 'almacena todas las edades sin repetirlas
Set TBL = BDD.OpenRecordset(SQL)
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("edad")
TBL.MoveNext
Loop
COUNT: Este operador nos devuelve la cantidad de valores en una columna. Por ejemplo,
COUNT(nombre) devolver el nmero de registros con valores no nulos en el campo nombre.
Pero si usamos COUNT(*), nos devuelve el nmero de registros incluyendo aquellos registros
con valores nulos.
SQL = "SELECT COUNT(*) FROM tabla1" 'para saber la cantidad de registros (incluye los
nulos)
Set TBL = BDD.OpenRecordset(SQL)
List1.AddItem TBL("expr1000") 'expr1000 es el name del item de TBL q almacena el resultado
del operador de agrupamiento
SUM: Devuelve la suma total de los valores de una expresin de columna o campo NUMERICA
(si no es numerica les da error!) . Por ejemplo, SUM(edad) devolver la sumatoria de las
edades.
SQL = "SELECT SUM(edad) FROM tabla1" 'sumatoria de las edades
Set TBL = BDD.OpenRecordset(SQL)
List1.AddItem TBL("expr1000")
AVG: Devuelve el promedio de los valores de una expresin de columna. Por ejemplo,
AVG(edad) devolver el promedio de las edades. Esto seria dividir SUM(edad)/COUNT(edad).
SQL = "SELECT AVG(edad) FROM tabla1"
MAX: Devuelve el valor ms alto de los contenidos en una expresin de columna.

Si hacemos: SQL = "SELECT MAX(edad) FROM tabla1" Nos dir la edad mas alta.
MIN: Si hay un MAX, por q no puede haber un MIN? ya se habran dado cuenta lo q hace.
Entonces, si SQL = "SELECT MIN(edad) FROM tabla1" Nos dir la edad mas baja.
EJEMPLO: quiero saber cuntos registro tengo, cual es la menor edad y cual es el promedio de
todas las edades
Dim BDD As Database
Dim TBL As Recordset
Dim SQL As String
Set BDD = OpenDatabase("c:\mis documentos\base1.mdb")
SQL = "SELECT COUNT(*), MIN(edad), AVG(edad) FROM tabla1"
Set TBL = BDD.OpenRecordset(SQL)
List1.AddItem "total de reg: " & TBL("expr1000")
List1.AddItem "MINIMA EDAD: " & TBL("expr1001")
List1.AddItem "PROMEDIO EDADES: " & TBL("expr1002")
TBL.Close
BDD.Close

WHERE
Con WHERE indicamos condiciones para la seleccin de ciertos registros. Veamos un ejemplo:
Antes q nada nuestra sentencia SELECT quedara asi:
SELECT campo1,campo2,...,campoN FROM nombre_de_la_tabla WHERE condicion1 AND
condicion2 AND ... AND condicionN
Dim BDD As Database
Dim TBL As Recordset
Dim SQL As String
Set BDD = OpenDatabase("c:\mis documentos\base1.mdb")
SQL = "SELECT * FROM tabla1 WHERE edad < 30"
Set TBL = BDD.OpenRecordset(SQL)
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("edad")
TBL.MoveNext
Loop
TBL.Close
BDD.Close
Con esta instruccin decimos q: seleccione (SELECT) todos los campos (*) de (FROM) tabla1 q
cumplan la condicin (WHERE) edad < 30

GROUP BY
Esta clusula se utiliza para agrupar segun lo q especifiquemos. Por ejemplo, podemos listar
todos los datos de nuestra tabla1, pero agrupados por edad.
SQL = "SELECT edad, nombre, apellido FROM tabla1 GROUP BY edad,nombre, apellido"
Set TBL = BDD.OpenRecordset(SQL)
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")
TBL.MoveNext
Loop
Entonces el formato es: GROUP BY expresion1, expresin2, ..., expresinN.
IMPORTANTE: Todas las expresiones deben coincidir con lo q pusimos en SELECT. Por lo
tanto lo siguiente no funciona:
SQL = "SELECT * FROM tabla1 GROUP BY edad,nombre, apellido"
'no se puede agrupar mediante los campos seleccionados con *
SQL = "SELECT edad FROM tabla1 GROUP BY apellido"
SQL = "SELECT nombre, apellido, edad FROM tabla1 GROUP BY edad"

HAVING
Asi como la clusula WHERE especifica condiciones para la seleccin de registros, HAVING
especifica condiciones para el agrupamiento (GROUP BY). Por lo tanto HAVING funciona solo
si se especifica un GROUP BY.
SQL = "SELECT edad, nombre, apellido FROM tabla1 GROUP BY edad,nombre, apellido
HAVING edad<30"
Con este ejemplo agrupamos segn la edad, pero solo los q su campo edad es menos a 30.

UNION
Con este operador lo q hacemos es juntar dos resultados de dos sentencias SELECT
diferentes. El resultado de la union son todos los registros devueltos en ambas sentencias, y
los registros repetidos se omiten a no ser q utilicemos la palabra ALL.
La forma es: SELECT sentencia1 UNION ALL SELECT sentencia2
con sentencia2
veamos q sucede si hacemos lo siguiente

'sentencia1 debe coincidir

SQL = "SELECT * FROM tabla1 UNION SELECT * FROM tabla1"


Set TBL = BDD.OpenRecordset(SQL)
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")
TBL.MoveNext
Loop
En este caso unimos la tabla1 con la misma tabla1, por lo tanto todos los resultados son
repetidos y se omiten.
Veamos q pasa con ALL
SQL = "SELECT * FROM tabla1 UNION ALL SELECT * FROM tabla1"
Set TBL = BDD.OpenRecordset(SQL)
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")
TBL.MoveNext
Loop
Otra vez todos los datos se repiten pero en este caso le decimos q no omita ninguno, por lo
tanto cada valor de la tabla1 estar repetido dos veces.
Hacer esto no tiene sentido, es decir q la union debera ser con la seleccin de dos tablas
diferentes.

ORDER BY
Para ordenar los resultados utilizamos ORDER BY. Cuando omitimos esta clusula, los
resultados se ordenan por el primer campo que sea clave en el ndice que se haya utilizado.
Veamos las siguientes sentencias:
SQL = "SELECT * FROM tabla1 ORDER BY edad ASC" ' ordenado por edad en forma
ascendente
SQL = "SELECT * FROM tabla1 ORDER BY edad" ' ordenado por edad, por defecto lo ordena
en forma ascendente
SQL = "SELECT * FROM tabla1 ORDER BY edad DESC" ' ordenado por edad en forma
descendente
SQL = "SELECT * FROM tabla1 ORDER BY 1" 'ordenado por el primer campo de la tabla
SQL = "SELECT nombre, apellido, edad FROM tabla1 ORDER BY 3,2,1" 'ordenado por edad,
apellido y nombre
Entonces podemos indicar el nombre_de_campo, nmero_de_campo y si es ASCendente o
DESCendente.

CONSULTAS A MAS DE UNA TABLA


Supongamos q tenemos una base de datos con dos tablas llamadas tabla1 y tabla2. Tabla1
tiene como campos nombre, apellido y edad. Mientras q la tabla2 tiene nombre y email.
Bien, por ejemplo yo podria querer los emails de las personas q estan en ambas tablas, esto es
q el nombre de la tabla1 tiene q ser igual al nombre de la tabla2.
Veamos como lo indicamos...
SQL = "SELECT tabla1.nombre,email FROM tabla1,tabla2 WHERE
tabla1.nombre=tabla2.nombre"
Set TBL = BDD.OpenRecordset(SQL)
TBL.MoveFirst
Do Until TBL.EOF
List1.AddItem TBL("nombre") & " " & TBL("email")
TBL.MoveNext
Loop
Nuestra sentencia SQL quedo as:
1- Indicamos los campos a seleccionar (SELECT). Observar q el campo nombre aparece en las
dos tablas, por lo tanto debemos indicar de q tabla los voy a seleccionar (tabla1.nombre). Por el
contrario el campo email solo aparece en la tabla2, por lo tanto no hace falta indicarle de q
tabla lo queremos ya q es obvio de cual va a ser.
2- Despues indicamos cuales tablas van a ser consultadas (FROM). Le indicamos q tabla1,
tabla2. El orden es importante porq de cada registro de la primer tabla se efectua una
busqueda en la segunda.
3- por ultimo indicamos la condicin (WHERE). Decimos q el campo nombre de la tabla1 debe
ser igual al de la tabla2.
Ahora vamos a ver el mismo ejemplo pero usando ALIAS. Un alias es un nombre temporal q le
asignamos a una tabla. Por ejemplo a la tabla1 la podemos llamar t1 y a la tabla2 t2. De esta
manera es mas facil escribir t1 q tabla1.
SQL = "SELECT t1.nombre,email FROM tabla1 t1,tabla2 t2 WHERE t1.nombre=t2.nombre"
En el FROM escribimos nombre_tabla alias_tabla. En el resto de la sentencia usamos el alias
en vez de el nombre.
Ahora, supongamos q tenemos una tercer tabla q contiene nombre y telefono como campos.
Queremos consultar los campos nombre, email y telefonos.
SQL = "SELECT t1.nombre,email,telefono FROM tabla1 t1,tabla2 t2, tabla3 t3 WHERE
t1.nombre = t2.nombre AND t1.nombre = t3.nombre"
Lo importante de estas consultas es el orden en q se escriben las tablas luego del FROM, ya q
esto va a influir en la velocidad de la consulta.
Para terminar la seccin de consultas vamos a ver las SELECT ANIDADAS. Esto es una
SELECT dentro de otra. Es muy simple. Veamos un ejemplo.
SQL = "SELECT t1.nombre,email,telefono FROM tabla1 t1,tabla2 t2, tabla3 t3 WHERE
t1.nombre = t2.nombre AND t1.nombre = t3.nombre AND (SELECT COUNT(*) FROM tabla1)<
100"
Es la misma condicin anterior solo q se agrego una condicin mas: (SELECT COUNT(*)
FROM tabla1)< 100, esto es, q la tabla1 tenga menos de 100 registros. Entonces cuando
insertamos una nueva SELECT dentro de otra, debemos ponerla entre parentesis.

Visual Basic y acceso a bases de datos mediante ADO www.lawebdeprogramacion.com

VISUAL BASIC Y ACCESO A BASES DE DATOS MEDIANTE


ADO
Introduccin
El propsito de este tutorial es servir como resumen o gua de referencia rpida para aquellas
personas que empleen Visual Basic para acceder a bases de datos, y utilicen el modelo ADO.
Las explicaciones son breves, aunque hay abundantes ejemplos a lo largo de todo el texto, por
lo que para un usuario que tenga algo de experiencia en acceso a bases de datos mediante VB
no debera suponerle ningn problema la comprensin del texto.
Nota: Se recomienda encarecidamente programar con Option Explicit activado, ya que
de esta forma evitaremos errores por variables incorrectas, etc.

Apertura de la conexin
Lo primero que debemos hacer es aadir las referencias de acceso a datos. Para ello, nos
movemos a Proyecto Referencias y una vez all aadimos los Microsoft ActiveX Data
Objects 2.6 Library.
Una vez hecho esto, podemos proceder a escribir cdigo, creando las variables necesarias
para establecer la conexin:
Dim cnConex As ADODB.Connection
La conexin mediante la cual accederemos a la base de datos.
Dim cmdComando As ADODB.Command
El comando o consulta a ejecutar en la conexin.
Dim strCadenaConex As String
La cadena que indica el formato, ubicacin, etc. de la base de datos
Dim rsLista As ADODB.Recordset
El conjunto de registros donde se almacenarn los resultados de la consulta.
Dim parParametro1 As ADODB.Parameter

Los distintos parmetros externos que utilizaremos en la consulta.


Cuando ya tengamos todas las variables definidas, pasamos a preparar los parmetros para la
conexin:
Set cnConex = New ADODB.Connection
Instanciamos la conexin.

1 Visual Basic y acceso a bases de datos mediante ADO www.lawebdeprogramacion.com

strCadenaConex = "Provider=Microsoft.Jet.OLEDB.4.0; & _


USER ID=nombreusuario; & _
PASS=contrasea; & _
Data Source=c:\basdedatos.mdb"
Configuramos la cadena de conexin si vamos a acceder a una base de datos de Access.
strCadenaConex = "Provider=SQLOLEDB.1; & _
USER ID=nombreusuario; & _
PASS=contrasea; & _
Initial Catalog=nombrecatalogo; & _
Data Source=basdedatos"
O la configuramos de esta otra forma si vamos a acceder a una base de datos de SQL.
cnConex.ConnectionString = strCadenaConex
Indicamos a la conexin la cadena de conexin.
cnConex.Open
Y por ltimo abrimos la conexin.

Creacin de la consulta
Una vez preparada la conexin, procedemos a preparar el comando:
Set cmdComando = New ADODB.Command
Instanciamos el comando.
Comando.ActiveConnection = cnConex
Le indicamos a que conexin pertenece.
Comando.CommandText = "Consulta SQL
Establecemos la consulta que ejecutar el comando.
Set parParametro1 = cmdComando.CreateParameter("campo", tipodedatos,
adParamInput, , valor)
cmdComando.Parameters.Append parParametro1

Configuramos el parmetro, indicando el campo de SQL al que corresponde, el tipo de datos,


tipo de parmetro y el valor/variable.

Ejecucin de la consulta
Una vez preparado tambin el comando, procedemos a ejecutarlo y guardar sus resultados:
cmdComando.Execute
Si nuestra consulta no devuelve datos, ejecutamos el comando.

2 Visual Basic y acceso a bases de datos mediante ADO www.lawebdeprogramacion.com

Set rsLista = New ADODB.Recordset


Set rsLista = cmdComando.Execute
Si nuestra consulta devuelve datos, instanciamos el RecordSet y ejecutamos la sentencia
indicando que ste es el destinatario de los datos que devuelva.

Limpieza de variables
Una vez hallamos terminado de ejecutar la consulta y hallamos devuelto los datos, pasamos a
liberar la memoria ocupada por las distintas variables.
cnConex.Close
Cerramos la conexin (opcional, no es necesario hacerlo; si no lo indicamos VB lo har por
nosotros).
Set cnConex = Nothing
Set cmdComando = Nothing
Set strCadenaConex = Nothing
Eliminamos las variables.
Set rsLista = Nothing
Si ya hemos tratado los resultados devueltos, o los hemos trasladado a otra parte, eliminamos
tambin el RecordSet.

Anexo I: tipos de datos y tipos de parmetros


Tipos de datos ms comunes
Tipos de parmetros
adBinary
adBoolean
adChar
adCurrency
adDate
adDecimal
adDouble
adInteger
adSmallInt
adTinyInt
adVarChar
adVariant

adParamInput
adParamInputOutput
adParamOutput
adParamReturnValue
adParamUnknown

También podría gustarte