Acceso
a bases de datos
|
Realizamos
programas para la gestión de empresas. Empresas medianas y
pequeñas. Programas de contabilidad, cartera de pedidos
clientes proveedores, facturación control de albaranes,
tesorería cartera de cobros y pagos y estadísticas.
Nuestro
agradecimiento a todos los que por unas causas o por otras
visitan nuestra web. Gestión de empresas PYMES. Curso de
programación de Visual Basic.
|
Te creías que ya
no iba a seguir con el curso básico ¿verdad? Pues te has vuelto a
equivocar... Sé que últimamente no soy muy "constante"
en esto de las entregas del Curso Básico, pero... alguna que otra
vez me dejo "ver". Y ya lo estás "viendo",
aquí estamos de nuevo, con una nueva entrega del Curso Básico, el
tema en esta ocasión será:
Las bases de datos (¡por
fin!)
Aunque empezaremos
de forma muy básica, aunque en entregas posteriores veremos cosas
más avanzadas, todo se andará, así que no pierdas la esperanza de
que algún siglo de estos (¿el que viene?) acabe con el dichoso
Curso Básico de Programación en Visual Basic...
La verdad es que tengo que darme prisa, ya que, si me descuido, la
nueva versión del VB (VB.NET) estará en la calle y muchas de las
cosas dichas hasta ahora no sean válidas... aunque los conceptos
"básicos" seguirán siendo válidos, no así los
conceptos "particulares" de cada una de las versiones del
Visual Basic... en su momento veremos esas diferencias, por ahora
hagamos como que no hay ninguna nueva versión que cambie
"radicalmente" la forma de "pensar" del Visual
Basic actual.
Los ejemplos que voy a utilizar, está hechos con la versión 6.0
del VB, aunque funcionarán, (o al menos deberían funcionar),
perfectamente con las versiones 4.0 y superiores... confiemos en
ello.
Y ya, sin más
dilación, empecemos con el acceso a bases de datos desde el Visual
Basic, para ello usaremos como base de ejemplo la incluida en todas
las versiones del VB: Biblio.mdb, si no la tienes,
necesitarás un poco de imaginación, espero que eso no sea un
problema. (Guille, aquí tendrías que haber
dicho algo como... "para una mente tan inteligente como la
tuya", de esa forma, le darías coba al personal y se
mosquearía menos contigo, por no tener la base de ejemplo, ¿cuando
vas a aprender?)
Después del comentario del "otro Guille", empecemos con:
El diseño del formulario
Hay quién se queja de que no
explico de forma "simplona" cómo crear los formularios y
añadir los controles que se usan, en esta ocasión,
"intentaré" hacerlo... a ver si lo consigo.
Crea un nuevo
proyecto normal, automáticamente se añadirá un formulario llamado
Form1.
Pulsa F4 para que se muestre la ventana de propiedades y en la
propiedad Caption, escribe: Entrega 34, acceso a datos,
verás que en la barra de "caption" del formulario se
muestra lo escrito.
Ahora vamos a añadir un Control Data que será el que nos permita
acceder a la base de datos que necesitemos usar, para ello, pulsa en
el icono:
que está en la barra de herramientas del IDE del Visual Basic, si
no está visible dicha barra de herramientas, puedes mostrarla de la
siguiente forma: (te recuerdo que estoy usando la versión inglesa
del Visual Basic, así que si las traducciones son erróneas...
échale un poco de imaginación...)
En el menú Ver (View), pulsa en la opción Barra de Herramientas
(Toolbox).
Para añadir cualquiera de los controles que están en la mencionada
barra de herramientas, simplemente tienes que hacer una doble
pulsación (doble-click) en el icono deseado y se añadirá al
formulario. En este caso, se añadirá un Data Control llamado Data1
y el aspecto en el formulario será este: 
Selecciónalo (aunque ya debe estar seleccionado) y arrástralo, (es
decir: deja pulsado el botón derecho mientras lo mueves), hasta la
parte superior del formulario, (para dejar espacio libre al resto de
controles que añadiremos a continuación)
Configurando el Data Control (o
Control Data)
Ahora vamos a
indicarle al Data1 dónde está la base de datos que queremos usar.
Selecciona el Data1 que hemos añadido al formulario, simplemente
haz un "click" en dicho control, (debería seguir
seleccionado, salvo que hayas pulsado con el ratón en el
formulario), pulsa F4 para mostrar la ventana de propiedades y en
dicha ventana pulsa en la propiedad DatabaseName, en la
columna de la izquierda te mostrará un botón con los tres puntos
suspensivos que indican que se mostrará un diálogo, (esto último
es una "convención", que nos indica que cuando se
seleccione esa opción, en este caso al hacer click en el botón, se
mostrará un cuadro de diálogo), para seleccionar un fichero de
bases de datos.
El fichero que vamos a usar, Biblio.mdb, normalmente está en
el mismo directorio en el que está instalado el Visual Basic, por
tanto, tendrás que "localizar" dicho directorio,
normalmente suele estar en Archivos de programa\Microsoft
Visual Studio\VB98 en el caso del VB6, en el caso del VB5
puede estar en Archivos de programa\DevStrudio\VB o
simplemente en DevStudio\VB, de la unidad de arranque,
por defecto en C. En el caso del VB4, no recuerdo ahora en que
directorio se instalaba...
Una vez seleccionada la base de datos, ya disponemos de una
conexión, mediante el control Data a dicha base de datos.
Pero, (como es habitual, siempre hay un pero), en casi todas las
bases de datos suelen existir varias "tablas" que
contienen datos. Para seleccionar una de las tablas, vuelve a
mostrar la ventana de propiedades del control Data y selecciona la
propiedad RecordSource, verás que en la cuadrícula de la
derecha hay una lista desplegable, en ella se muestran las tablas
disponibles, en nuestro ejemplo usaremos la de Autores, por
tanto selecciona dicho elemento de la lista, puede que en lugar de
llamarse Autores, (si la base de datos no está traducida), se llame
Authors.
Ahora si que tenemos configurado nuestro control Data para que
muestre los datos almacenados en una tabla de una base de datos.
Para continuar con
nuestro ejemplo, vamos a añadir otros controles con los cuales
poder mostrar la información contenida en dicha tabla de autores.
Vamos a añadir
tres etiquetas (Label) y tres cajas de texto (TextBox)
En la barra de herramientas haz doble-click en el icono de las
etiquetas:
,
(si posicionas el puntero del ratón sobre dicho "icono",
verás que te muestra un ToolTip con el texto Label), se añadirá
un nuevo control al formulario llamado Label1, posiciona dicha
etiqueta en la parte izquierda del formulario, debajo del control
Data1 y vuelve a repetir la operación dos veces más, (posiciona
cada una de las etiquetas debajo de la anterior), para obtener un
total de tres etiquetas: Label1, Label2 y Label3 respectivamente.
Para añadir las tres cajas de texto que necesitamos, repite la
operación, pero en este caso el control que debes elegir de la
barra de herramientas es:
(TextBox). Alinéalos a la derecha de cada una de las etiquetas
anteriores. Ahora tendremos también estos tres controles: Text1,
Text2 y Text3, el aspecto del formulario sería el siguiente:

Vamos a cambiar el
tamaño de las etiquetas y las cajas de texto.
Selecciona la primera etiqueta (Label1) y haz que el alto de la
misma sea 315, esto puedes hacerlo de dos formas:
1.) Usando el el ratón, arrastra hacia arriba desde la parte
inferior del control (al seleccionar se muestran unos cuadros que
indican que puedes cambiar el tamaño arrastrando en cualquiera de
ellos, según la posición de dicho "cuadro" servirá para
el ancho, alto o ambos)
2.) Escribiendo dicho tamaño en la ventana de propiedades, en este
caso en la propiedad Height.
Para que las tres
etiquetas tengan el mismo tamaño, podemos hacerlo también de dos
formas, para que se cambien de tamaño todas las etiquetas a un
mismo tiempo, en lugar de ir cambiado cada una de ellas por
separado:
1.) Selecciona las tres etiquetas y escribe el tamaño en la
propiedad Height de la ventana de propiedades.
2.) Selecciona las etiquetas Label3, Label2 y por último Label1,
(manteniendo pulsado la tecla Ctrl y haciendo un simple Click con el
ratón), abre el menú Formato (Format) y selecciona la opción
Hacer del mismo tamaño (Make same size), de dicho menú, selecciona
Altura (Height). En este procedimiento, es importante que el último
control seleccionado sea el que indique el tamaño con el que
queremos igualar el resto de los controles.
Seguramente todo
esto ya lo sabrás, pero... (de alguna forma
hay que hacer que esta entrega sea más larga, ¿verdad Guille?)
A continuación vamos a cambiar el
tamaño de las cajas de texto:
Selecciona Text1 y haz que el ancho sea: 2895.
Selecciona los otros dos controles e iguálalos en el ancho...
imagínate cómo...
El aspecto final será este otro:

Una vez diseñado
el "aspecto" del formulario, (eres libre de adecuarlo a
tus gustos particulares), vamos a indicarle al Visual Basic que nos
muestre información de la tabla de autores en cada una de las cajas
de texto:
Selecciona las tres cajas de texto, pulsa en la ventana de
propiedades y selecciona la propiedad DataSource, con esta
propiedad indicamos que Data control queremos usar con cada caja de
texto, (o con cualquier otro control que tenga la mencionada
propiedad).
En la lista desplegable, selecciona el único elemento que hay:
Data1 (o el nombre que le hayamos dado al control data).
Ahora vamos a "enganchar" cada una de los textboxes con un
registro de la mencionada tabla de autores:
Selecciona el control Text1 y en la ventana de propiedades
selecciona DataField, de la lista desplegable selecciona Au_ID.
En los otros controles, selecciona Author para el Text2
y Year Born para el Text3.
Ahora asignemo al caption de las etiquetas los datos que nos
mostrará, asigna el Caption de cada una de las tres etiquetas, (ya
sabes, pulsa en la etiqueta, muestra la ventana de propiedades y
modifica la propiedad Caption), con estos valores: ID: para
el Label1, Autor: para el Label2 y Año nacimiento:
para el Label3.
¡Y ya está!
Pulsa F5 para
ejecutar el proyecto y verás que se muestra el primer registro,
(seguramente en el año de nacimiento Year Born, no te muestre nada
hasta que llegues al registro 73.)
Para mostrar el resto de registros, pulsa en los botones de
"desplazamiento" del control data, dichos controles sirven
para ir al: Primero, anterior, siguiente y último respectivamente.
Si escribes o modificas lo que se muestra, también se
modificará en la base de datos.
Fíjate que no
hemos usado ni una línea de código, entre otras cosas porque todo
lo hemos realizado en tiempo de diseño.
Pero ahora vamos a
ver cómo hacer que todo esto funcione igual, pero en lugar de
hacerlo en tiempo de diseño, lo haremos en tiempo de ejecución, es
decir: al ejecutar el proyecto, aunque la asignación de la
propiedad DataSource de las cajas de texto hay que hacerlo en tiempo
de diseño, ya que no se puede hacer en tiempo de ejecución.
Para ello usaremos otro formulario, con los mismos controles que el
actual, pero sin "conectarlos" a ninguna tabla de una base
de datos ni nada de eso.
Antes guarda el proyecto actual, yo lo he llamado Basico34.vbp, el
formulario lo he guardado como fBasico34.frm
Crea un nuevo
proyecto, añade un formulario, en éste añade un Data control,
tres etiquetas y tres cajas de texto, selecciona las tres cajas de
texto y en la ventana de propiedades selecciona DataSource y
asigna el Data1, además de asignar el tamaño, tanto de las cajas
de texto como de las etiquetas.
Ya deberías saber
que cuando se ejecuta una aplicación de Visual Basic y por defecto
se muestra un formulario, al mostrarse dicho formulario, se ejecuta,
(entre otros), el evento Form_Load, será en este evento donde le
indiquemos al Visual Basic que base de datos usaremos, que tabla y
que campos.
Veamos el código, para poder introducir este código, haz doble
click en el formulario, por defecto se mostrará el evento Form_Load.
'
Private Sub Form_Load()
' Indicarle el path de la base de datos
' ¡ACUERDATE DE PONER EL PATH CORRECTO!
Data1.DatabaseName = "C:\Program Files\Microsoft