Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje...

33
Curso Visual Basic Práctico Entrega Nº 1 5 de Octubre de 1998 Autor: Mario Rosas León Para: Web del Programador Introducción: Este curso pretende, mediante un ejemplo, enseñar a los usuarios poco avanzados de V.B. a realizar un programa completo, desde el diseño de los formularios hasta el diseño de la base de datos. Se utilizará VB5, aunque si vuestra versión de V.B. es distinta no habrá problema, bueno si, puede que algunas cosas estén en otro sitio o no existan en esa versión pero son cosas que pueden pasar. En cada una de las entregas se incluirá el código 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 visión del problema e improvise según 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 básico, añadir, mantenimiento e imprimir, pero una de las cosas más importantes en este tipo de programas es la estética 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 más "bonito y fácil". El programa: Como ya dije antes, el programa será un organizador multimedia. Constará de 6 formularios que serán: Menú Principal, Añadir Entradas, Mantenimiento de Datos, Buscar, Mostrar Búsqueda e Imprimir. Como ya he dicho es muy básico, la idea es que vosotros lo ampliéis. Entrega Nº 1: Creación del proyecto y el primer formulario, El Menú Principal. Primero crear el nuevo proyecto. Yo os recomiendo crear primero un directorio donde iréis guardando el proyecto, los formularios, módulos, base de datos, etc. Una vez tengáis el directorio (p.e. c:\archivos de programa\Orgamul\) empezamos con V.B.

Transcript of Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje...

Page 1: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

Curso Visual Basic Práctico Entrega Nº 1

5 de Octubre de 1998 Autor: Mario Rosas León

Para: Web del ProgramadorIntroducción:

           Este curso pretende, mediante un ejemplo, enseñar a los usuarios poco avanzados de V.B. a realizar un programa completo, desde el diseño de los formularios hasta el diseño de la base de datos. Se utilizará VB5, aunque si vuestra versión de V.B. es distinta no habrá problema, bueno si, puede que algunas cosas estén en otro sitio o no existan en esa versión pero son cosas que pueden pasar.

           En cada una de las entregas se incluirá el código 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 visión del problema e improvise según 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 básico, añadir, mantenimiento e imprimir, pero una de las cosas más importantes en este tipo de programas es la estética 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 más "bonito y fácil".

El programa:

           Como ya dije antes, el programa será un organizador multimedia. Constará de 6 formularios que serán: Menú Principal, Añadir Entradas, Mantenimiento de Datos, Buscar, Mostrar Búsqueda e Imprimir. Como ya he dicho es muy básico, la idea es que vosotros lo ampliéis.

Entrega Nº 1: Creación del proyecto y el primer formulario, El Menú Principal.

           Primero crear el nuevo proyecto. Yo os recomiendo crear primero un directorio donde iréis guardando el proyecto, los formularios, módulos, base de datos, etc. Una vez tengáis 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 Estándar. 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 descripción del mismo. (¿por qué hacer esto?, para que al crear el ejecutable se incluya también esta información, la cual será visible al pulsar en las propiedades del archivo).

           Todavía queda algo más 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 automáticamente

Page 2: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

y así, en el caso de que el programa bloquee la máquina o no responda V.B. tengamos guardada la copia del código fuente).

           Ya estamos preparados. La verdad es que estoy suponiendo algunas cosas (como que sabéis 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 mayúsculas donde están (¿por qué?, al hacer referencia en código a este formulario pondremos frmmenuprincipal, al pasar de línea automáticamente se pondrán en mayúsculas la M y la P, con lo cual sabremos que lo hemos escrito bien, si no se pone en mayúsculas puede ser que hayamos escrito mal el nombre. Esto también es aplicable a variables, globales y controles).

2.   Cambiamos el título de la aplicación, 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:

Botón Name Caption1 cmbAñadir Añadir Nuevos

2 cmbMantenimiento Mantenimiento

3 cmbBuscar Búsqueda

4 cmbImprimir Imprimir

5 cmbSalir Salir

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

5.   Ahora incluiremos el código del botón cmbSalir. Pulsamos doble encima del control y aparecerá el editor de código con el evento cmbSalir_click(). Ponemos lo siguiente:

                   Private Sub cmbSalir_Click()

Page 3: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

                           Unload Me

                   End Sub

       Este código 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 código 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 más fácil y vistoso. Tenemos una herramienta con la que podemos hacer esto fácilmente. Todo depende de cada programador. Cualquier pregunta podéis realizarla a través de la lista de la Web del Programador, en la misma Web o a mi dirección de correo.

 

Curso Visual Basic PrácticoEntrega Nº 2

10 de Octubre de 1998 Autor: Mario Rosas León

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 demás controles) y comenzaremos una especie de relación 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 evolución 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 (Botón normal) sus tres primeras letras serán 'cmb' seguido de algo relativo a la acción que va a realizar. P.E. El botón Salir, pondremos cmbSalir, con la 'S' en mayúscula como ya exliqué en la entrega anterior.

            Esto es extensible a otros controles. Por ejemplo, un Text Box que contendrá el título del disco/programa/etc pondremos txtTitulo y así sucesivamente.

Page 4: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

            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 continuación pondremos las tablas y campos que tendrá la base de datos.

Tabla Campos Tipo Descripción

multimedia numero entero Contendrá un número asignado automáticamente

titulo texto * 50 Título de la entradaautor texto * 40 Autor de la entrada

fecha fecha Fecha de entrada (mas que nada para que veais cómo 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

           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:

Page 5: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

1.    Pulsamos Archivo, Nueva, Microsoft Access, MDB Versión 7.0 (No he probado la otra así que utilizad esta que si se que funciona)

2.    Nos pide una localización en el disco duro, seleccionamos EL MISMO DIRECTORIO DE LA APLICACIÓN. Aunque no sea necesario, si es importante a la hora de realizar los discos de instalación que todos los datos estén en el mismo directorio.

3.    Nombre de la base de datos OM.mdb. Y ya estamos preparados para añadir la tabla primera. Vamos a la ventana de datos, pulsamos al botón derecho en mitad y seleccionamos Nueva Tabla.

4.    Ponemos el nombre de la tabla (Multimedia) y pulsamos en agregar campo. Vamos añadiendo los datos cómo 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 creación de la base de datos podeis improvisar, añadir 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 añadir algunas cosas mediante el programa.

 

Page 6: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

Curso Visual Basic PrácticoEntrega Nº 3

20 de Octubre de 1998 Autor: Mario Rosas León

Para: Web del ProgramadorAnterior:

           Pues eso, los formularios de entrada de datos. Como dije en la anterior entrega vamos a poder introducir los primeros datos. Además tendreis la primera entrega en código que os mando con lo que comento aqui. Así que, ahi va....

Opción: Añadir 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 Descripción

multimedia numero entero Contendrá un número asignado automáticamente

titulo texto * 50 Título de la entradaautor texto * 40 Autor de la entrada

fecha fecha Fecha de entrada (mas que nada para que veais cómo 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

          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 básico. 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:

frmAñadirEntradaPropiedad Valor Descripción

Name frmAñadirEntrada Nombre del formulario, para referirnos a él.BorderStyle 3 - Fixed Dialog Como dije en la Entrega 1

Page 7: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

Caption Añadir Entrada Título del formularioStartUpPosition 2 - Center Screen Posición del formulario cuando se carga.

           Así tenemos ya el formulario con sus propiedades, el ancho y alto del formulario lo estableceremos con el ratón pulsando en las esquinas del formulario. Este ancho y alto está en función de lo que pongamos ahora nosotros dentro del formulario.

           Empezaremos añadiendo una etiqueta o control Label, como querais. Lo situamos en pantalla, a gusto del 'consumidor' y le ponemos las siguientes propiedades:

lblFechaPropiedad Valor Descripción

Name lblFecha Nombre de la EtiquetaAlignment 2 - Center Texto centradoCaption Fecha 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. Sólo sequir los pasos anteriores.

           Si ya hemos añadido todas las Etiquetas, añadiremos las Cajas de Texto o text box, como querais. Añadimos el primero (el de la fecha) y ponemos las siguientes propiedades:

txtFechaPropiedad Valor Descripción

Name txtFecha Nombre de la Caja de TextoText 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 demás cajas que quedan que son: TITULO y AUTOR ya que en TIPO y CONTENIDO pondremos Cajas Combo.

           Añadimos 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 Añadir y otro para Volver. Los añadimos y, para finalizar tenemos esto:

Page 8: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

           Tranquilos que aqui abajo esta el link para que os lleveis el código fuente (para los que están diciendo, uff que dificil).

           Así que ya lo tenemos, pues vamos a poner un control data para poder añadir 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 fácil y si, es lento con bases de datos grandes pero para esto sirve y para aprender no veas lo fácil que es. Si alguien quiere utilizar el método más avanzado que lo haga.

           Bueno, después del discursito sigo. Añadimos el control Data y cambiamos las propiedades por:

dbMulPropiedad Valor Descripción

Name dbMul Nombre del control Data

Caption dbMul Ponemos el nombre que nosotros vemos en diseño

DataBaseName Ruta de la Base de Datos Pues eso

RecordSource Multimedia Tabla que vamos a utilizarVisible False Que en ejecución no se vea

           Ya tenemos la base de datos enlazada y podemos empezar a escribir código. 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 botón, 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 código y el primer evento del formulario que es el Load (que suerte no?). Pues empezaremos con él con el siguiente código:

Private Sub Form_Load()

' añadimos las categorías y tipos

Page 9: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

comTipo.AddItem "CD-Música"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 "Música Otros"comContenido.AddItem "Aventura"comContenido.AddItem "Arcade"comContenido.AddItem "Emuladores"comContenido.AddItem "Programación"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 fácil, simplemente: nombre.AddItem "lo que quieras añadir"

           Ahora, si ejecutamos el programa, al pulsar sobre el control Combo, apareceran todas las características que hemos puesto. Eso es todo lo que pondremos en el evento Load del formulario.

           Por último pondremos el código de los botones: cmbAñadir y cmbVolver, en el evento Click de cada uno de ellos.

Private Sub cmbVolver_Click()    Unload MeEnd Sub

           Y aqui está el de cmbAñadir, comentado en el mismo código.

Private Sub cmbAñadir_Click()

' recomendaciones iniciales' hay que controlar los datos que vamos a introducir' si introducimos una fecha incorrecta ---> ERROR' si introducimos una cadena más larga de lo que coge ---> ERROR

dbMul.Recordset.AddNew ' esto es para decirle' que vamos a añadirdbMul.Recordset("titulo") = Trim$(txtTitulo.Text)' añadimos el titulo (el trim es para quitar los espacios de más)dbMul.Recordset("autor") = Trim$(txtAutor.Text)

Page 10: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

' igual con el autordbMul.Recordset("fecha") = Format(txtFecha.Text, "dd/mm/yyyy")' la fecha utiliza el format que es simplemente para decirle en qué' formato la añadimos que es dia/mes/año (con 4 digitos)dbMul.Recordset("tipo") = Trim$(comTipo.Text)' el tipo lo cogemos del combodbMul.Recordset("contenido") = Trim$(comContenido.Text)' igual con el contenidodbMul.Recordset.Update ' lo añade definitivamente' ya está todo' mostramos un mensaje de que se ha añadidoMsgBox ("Ya está dentro")' vaciamos los campos para añadir otrotxtTitulo.Text = ""txtAutor.Text = ""txtFecha.Text = ""comTipo.Text = "Elije el tipo"comTipo.ListIndex = -1 ' indice de la lista, ya lo explicaremoscomContenido.Text = "Elije el contenido"comContenido.ListIndex = -1 ' indice de la lista, ya lo explicaremostxtFecha.SetFocus ' mandamos el cursor a la fecha' ya estáEnd Sub

           Aqui teneis el Zip con el código fuente de to este rollo que os he metido. Exáctamente AQUI.

           Ya os dejo, el próximo día 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 León

Curso Visual Basic PrácticoEntrega Nº 4

2 de Noviembre de 1998 Autor: Mario Rosas León

Para: Web del ProgramadorPrimero.

            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.

           Además 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:

Page 11: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

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).

Opción: 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:

frmMantenimientoPropiedad Valor Descripción

Name frmMantenimiento Nombre del formulario, para referirnos a él.BorderStyle 3 - Fixed Dialog Como dije en la Entrega 1

Caption Mantenimiento de Datos Título del formulario

StartUpPosition 2 - Center Screen Posición del formulario cuando se carga.

Page 12: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

           Ya hemos creado el formulario, establecemos el ancho y alto según 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 añadiremos 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.

            Añadimos 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.

           Añadimos el control Data y cambiamos las propiedades por:

dbMulPropiedad Valor Descripción

Name dbMul Nombre del control Data

Caption dbMul Ponemos el nombre que nosotros vemos en diseño

DataBaseName Ruta de la Base de Datos Pues eso

Page 13: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

RecordSource Multimedia Tabla que vamos a utilizarVisible False Que en ejecución no se vea

           Ya tenemos la base de datos enlazada y podemos añadir el DBGrid. Este control va a mostrar los datos del control Data por líneas (un registro en cada línea y un campo en cada columna).

           Lo ponemos y tendremos algo así:

           Ahora cambiaremos las propiedades del control DBGrid.

dbgMallaPropiedad Valor Descripción

Name dbgMallal Nombre del control DBGridDataSource dbMul 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 ratón y pulsamos el botón derecho. Escogemos la opción Recuperar Campos y, fijate, obtendremos los siguiente:

Page 14: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

           Si queremos podemos cambiar el ancho de las columnas con el comando Editar (pulsando el botón derecho del ratón 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 demás 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 aplicación y vereis el resultado (pero antes debeis introducir algunos datos).

           Ahora, debemos continuar con el código que pondremos, primero empezaremos por el evento Load del formulario. Pulsamos doble en el

Page 15: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

formulario (no en cualquier control sino en el fondo, en el formulario) y aparecerá la ventana de código y el primer evento del formulario que es el Load (que suerte no?). Pues empezaremos con él con el siguiente código:

Private Sub Form_Load()

' añadimos las categorías y tiposcomTipo.AddItem "CD-Música"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 "Música Otros"comContenido.AddItem "Aventura"comContenido.AddItem "Arcade"comContenido.AddItem "Emuladores"comContenido.AddItem "Programación"comContenido.AddItem "Ordenador Otros"

End Sub

           Es como en el formulario de entrada, simplemente para que al modificar tengamos también todas las opciones

           Por último pondremos el código de los botones: cmbEliminar, cmbModificar y cmbVolver, en el evento Click de cada uno de ellos.

Private Sub cmbVolver_Click()    Unload MeEnd Sub

           Y aqui está el de cmbModificar, que será.

Private Sub cmbModificar_Click()dbMul.RecordSet.Edit        dbMul.RecordSet.UpdateEnd Sub

           Ahora el de Eliminar:

Private Sub cmbEliminar_Click()dbMul.RecordSet.Delete        dbMul.RefreshEnd Sub

Page 16: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

           Y preguntareis algunos, ¿ya está?. Pues no, este modo es el más fácil 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 verás que chow).

           2. La base de datos se modifica sin tener que pulsar en el botón modificar.

           3. No se realizan las comprobaciones pertinentes de fechas, longitudes, etc que son necesarias como indiqué en el código de la opción Añadir en la entrega anterior.

           4. En fin, esto no es una aplicación comercial en absoluto. Fallará mas que una escopeta de caña.

           Intentad solucionarlo y en la próxima entrega indicaré cómo 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). Quizás 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. Quizás 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 más 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, quizás podreis ver por ahi algún manual en condiciones.

          Download del código fuente hasta ahora: AQUI

          Hasta pronto.... hay que ver lo alto que ha llegado el Pedro Duque, ¿tendrán 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 PrácticoEntrega Nº 5

9 de Noviembre de 1998 Autor: Mario Rosas León

Para: Web del ProgramadorPrimero.

Page 17: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

           Tarde, como siempre, aqui teneis la quinta y no última entrega de este curso práctico 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. Sólo espero que suba otra vez a por mi porque yo estoy todavía 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 cómo hacerlo, es que me he inspirado y no dejo de escribir. ¿Cómo lo hacemos en visual basic?. Pues, sencillamente, ponemos la sentencia SQL en la propiedad RecordSource del control Data. ¿Y cómo 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 sería:

           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 más 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

Page 18: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

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 módulo de mantenimiento.

       Segunda Parte: WHERE

                  Esta clausula no es obligatoria, puedes ponerla o no, pero sólo tiene sentido omitirla si lo que hacemos es sólo 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 podríamos poner: (select) WHERE autor='EA Sports' AND titulo='FIFA 98', nos daría como resultado todos los registros cuyo autor sea EA Sports y cuyo titulo sea FIFA 98, fácil 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 EJEMPLO con WHERETexto WHERE campo_texto = 'texto_busqueda'

Número WHERE campo_numero = numero

Fecha WHERE campo_fecha = fecha   ----------> problema, la fecha en formato mes/dia/año

                   Antes lo di por hecho pero en las consultas podemos poner cualquier tipo de lógica, he utilizado = pero podemos poner <, >, <>, >=, <=, LIKE (que ahora lo explico).

                   El LIKE, es cómo PARECIDO A. Por ejemplo: SELECT * FROM multimedia WHERE autor like 'EA*' , esto haría 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. Quizás el ejemplo más claro es el siguiente: Select * from clientes where apellidos like 'Rosas*', y saldrían todos mis familiares.

                   Pero ATENCIÓN, sólo con campos texto, no funciona con los demás.

                   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 código operativo 100X100.

private sub Command1_click()

   ' el control Data se llama dbCon

   mes=10

   select="SELECT * FROM multimedia "

Page 19: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

   where=" WHERE MONTH(fecha)="&str$(mes)         ' mes de octubre (puede salir el 1/10/1998 y el 1/10/1950)

                                                                                       '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 España que es dia/mes/año. Otra cosilla, poned siempre en las consultas el año completo (no seamos tan malos como para hacer un programa que no funcione con los cuatro dígitos, luego puede haber problemas).

           Tercero: ORDER

               Simplemente, por que campo o campos quieres que te ordene el resultado. Por ejemplo, ORDER BY autor, titulo. Ordenaría el resultado por autor y, dentro de cada autor, por título.

              Creo que ya está. Podeis probar, en el formulario de Mantenimiento poneis un botón y en su evento CLICK pegais el código que he puesto aqui arriba. Añadeis varios registros a la base de datos y despues pulsais en el botón. Lo más fácil sería 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 actualizaría 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 próxima 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 SELECCIÓN O CONSULTAS Bien, SQL permite realizar consultas mediante sentencias de selección "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 cláusulas: las dos primeras obligatorias (SELECT y FROM) y las otras opcionales (WHERE, GROUP BY, HAVING, UNION, ORDER BY). 

Page 20: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

SELECT y FROMFUNCIONES DE AGRUPAMIENTOWHEREGROUP BYHAVINGUNIONORDER BYCONSULTAS 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 tablaDo 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 registroLoop De esta manera, al ejecutar, nos debe aparecer en la lista todos los nombres de la tabla. Si queremos mostrar "nombre" "apellido": TBL.MoveFirstDo Until TBL.EOF   List1.AddItem TBL("nombre") & " " & TBL("apellido")   TBL.MoveNextLoop Si queremos listar "nombre" "apellido" tiene "edad": TBL.MoveFirstDo Until TBL.EOF   List1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")   TBL.MoveNextLoop Qué sucede si solo quería tomar de la tabla1 los campos nombre y edad (no el apellido). En este caso la sentencia SQL quedaría: SQL = "SELECT nombre,edad FROM tabla1" Por lo tanto el formato de la sentencia SELECT hasta ahora es: 

Page 21: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

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 tablaBDD.Close  'cierra base de datos   FUNCIONES DE AGRUPAMIENTO Las funciones de agrupamiento son: DISTINCT: Dijimos q si usabamos el * nos seleccionaba todos los campos. También 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 repetirlasSet TBL = BDD.OpenRecordset(SQL)TBL.MoveFirstDo Until TBL.EOF   List1.AddItem TBL("edad")   TBL.MoveNextLoop COUNT: Este operador nos devuelve la cantidad de valores en una columna. Por ejemplo, COUNT(nombre) devolverá el número de registros con valores no nulos en el campo nombre. Pero si usamos COUNT(*), nos devuelve el número 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 expresión 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 edadesSet TBL = BDD.OpenRecordset(SQL)

List1.AddItem TBL("expr1000") AVG: Devuelve el promedio de los valores de una expresión 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 más alto de los contenidos en una expresión 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.

Page 22: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

 EJEMPLO: quiero saber cuántos registro tengo, cual es la menor edad y cual es el promedio de todas las edades Dim BDD As DatabaseDim TBL As RecordsetDim 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.CloseBDD.Close     WHERE Con WHERE indicamos condiciones para la selección de ciertos registros. Veamos un ejemplo: Antes q nada nuestra sentencia SELECT quedaría asi: SELECT campo1,campo2,...,campoN FROM nombre_de_la_tabla WHERE condicion1 AND condicion2 AND ... AND condicionN Dim BDD As DatabaseDim TBL As RecordsetDim SQL As String

Set BDD = OpenDatabase("c:\mis documentos\base1.mdb")SQL = "SELECT * FROM tabla1 WHERE edad < 30"Set TBL = BDD.OpenRecordset(SQL)

TBL.MoveFirstDo Until TBL.EOFList1.AddItem TBL("edad")TBL.MoveNextLoopTBL.CloseBDD.Close Con esta instrucción decimos q: seleccione (SELECT) todos los campos (*) de (FROM) tabla1 q cumplan la condición (WHERE) edad < 30    GROUP BY 

Page 23: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

Esta cláusula 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.MoveFirstDo Until TBL.EOFList1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")TBL.MoveNextLoop Entonces el formato es: GROUP BY expresion1, expresión2, ..., expresiónN. 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 cláusula WHERE especifica condiciones para la selección 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 según 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     'sentencia1 debe coincidir con sentencia2 veamos q sucede si hacemos lo siguiente SQL = "SELECT * FROM tabla1 UNION SELECT * FROM tabla1"Set TBL = BDD.OpenRecordset(SQL)

Page 24: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

TBL.MoveFirstDo Until TBL.EOFList1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")TBL.MoveNextLoop 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.MoveFirstDo Until TBL.EOFList1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")TBL.MoveNextLoop 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 debería ser con la selección de dos tablas diferentes.     ORDER BY Para ordenar los resultados utilizamos ORDER BY. Cuando omitimos esta cláusula, 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, número_de_campo y si es ASCendente o DESCendente.     

Page 25: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

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.MoveFirstDo Until TBL.EOFList1.AddItem TBL("nombre") & " " & TBL("email")TBL.MoveNextLoop

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 condición (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 sección 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 condición anterior solo q se agrego una condición 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.

Page 26: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

Visual Basic y acceso a bases de datos mediante ADO www.lawebdeprogramacion.com VISUAL BASIC Y ACCESO A BASES DE DATOS MEDIANTE

ADO Introducción El propósito de este tutorial es servir como resumen o guía de referencia rápida 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 debería suponerle ningún problema la comprensión 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 conexión Lo primero que debemos hacer es añadir las referencias de acceso a datos. Para ello, nos movemos a Proyecto → Referencias y una vez allí añadimos los Microsoft ActiveX Data Objects 2.6 Library. Una vez hecho esto, podemos proceder a escribir código, creando las variables necesarias para establecer la conexión: Dim cnConex As ADODB.Connection La conexión mediante la cual accederemos a la base de datos. Dim cmdComando As ADODB.Command El comando o consulta a ejecutar en la conexión. Dim strCadenaConex As String La cadena que indica el formato, ubicación, etc. de la base de datos Dim rsLista As ADODB.Recordset El conjunto de registros donde se almacenarán los resultados de la consulta. Dim parParametro1 As ADODB.Parameter … Los distintos parámetros externos que utilizaremos en la consulta. Cuando ya tengamos todas las variables definidas, pasamos a preparar los parámetros para la conexión: Set cnConex = New ADODB.Connection Instanciamos la conexión. 1 Visual Basic y acceso a bases de datos mediante ADO www.lawebdeprogramacion.com

Page 27: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

strCadenaConex = "Provider=Microsoft.Jet.OLEDB.4.0;” & _ “USER ID=nombreusuario;” & _ “PASS=contraseña;” & _ “Data Source=c:\basdedatos.mdb" Configuramos la cadena de conexión si vamos a acceder a una base de datos de Access. strCadenaConex = "Provider=SQLOLEDB.1;” & _ “USER ID=nombreusuario;” & _ “PASS=contraseña;” & _ “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 conexión la cadena de conexión. cnConex.Open Y por último abrimos la conexión. Creación de la consulta Una vez preparada la conexión, procedemos a preparar el comando: Set cmdComando = New ADODB.Command Instanciamos el comando. Comando.ActiveConnection = cnConex Le indicamos a que conexión 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 parámetro, indicando el campo de SQL al que corresponde, el tipo de datos, tipo de parámetro y el valor/variable. Ejecución de la consulta Una vez preparado también 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

Page 28: Curso Visual Basic Práctico - INFORMATICA J.A.G · Web viewPues esto es sql, un lenguaje estructurado de consultas. Con este lenguaje podemos conseguir una consulta del tipo de 'todas

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 conexión (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 también el RecordSet. Anexo I: tipos de datos y tipos de parámetros

Tipos de datos más comunes Tipos de parámetros adBinary adBoolean adChar

adCurrency adDate

adDecimal adDouble adInteger adSmallInt adTinyInt adVarChar adVariant

adParamInput adParamInputOutput

adParamOutput adParamReturnValue adParamUnknown