Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resulta tambin muy til el filtrar los registros mediante condiciones que vienen expresadas despus de la clusula Where. Si quisisemos mostrar los clientes de una determinada ciudad usaramos una expresin como esta: Select * From clientes Where poblacion = 'Colima' Adems, podramos ordenar los resultados en funcin de uno o varios de sus campos. Para este ultimo ejemplo los podramos ordenar por nombre as: Select * From clientes Where poblacion = Colima Order By nombre Teniendo en cuenta que puede haber ms de un cliente con el mismo nombre, podramos dar un segundo criterio que podra ser el apellido: Select * From clientes Where poblacin = 'Madrid' Order By nombre, apellido Si invirtisemos el orden nombre,apellido por apellido, nombre , el resultado sera distinto. Tendramos los clientes ordenados por apellido y aquellos que tuviesen apellidos idnticos se subclasificaran por el nombre. Es posible tambin clasificar por orden inverso. Si por ejemplo quisisemos ver nuestros clientes por orden de pedidos realizados teniendo a los mayores en primer lugar escribiramos algo as: Select * From clientes Order By pedidos Desc Una opcin interesante es la de efectuar selecciones sin coincidencia. Si por ejemplo buscsemos el saber en qu ciudades se encuentran nuestros clientes sin necesidad de que para ello aparezca varias veces la misma ciudad usaramos una sentencia de esta clase: Select Distinct poblacion From clientes Order By poblacion As evitaramos ver repetido el nombre de la poblacin tantas veces como clientes tengamos en esa poblacin. INSERT (Agregar un nuevo registro) Los registros pueden ser introducidos a partir de sentencias que emplean la instruccin Insert.
La sintaxis utilizada es la siguiente: Insert Into nombre_tabla (nombre_campo1, (valor_campo1,valor_campo2...) nombre_campo2,...) Values
Un ejemplo sencillo es la introduccin de un nuevo cliente lo cual se hara con una instruccin de este tipo: Insert Into clientes (nombre, apellidos, direccion, poblacin, codigopostal, email, pedidos) Values ('Pablo', 'Galindo', 'Av. Universidad', 'Colima', '123456', 'correo@ucol.mx', 30) Como puede verse, los campos no numricos o booleanos van delimitados por apostrofes: '. DELETE (Borrar un registro) Para borrar un registro nos servimos de la instruccin Delete. En este caso debemos especificar cual o cuales son los registros que queremos borrar. Es por ello necesario establecer una seleccin que se llevara a cabo mediante la clusula Where. La sintaxis utilizada para efectuar estas supresiones es : Delete From nombre_tabla Where condiciones_de_seleccin Si queremos por ejemplo borrar todos los registros de los clientes que se llamen Pablo lo haramos del siguiente modo: Delete From clientes Where nombre='Pablo' Hay que tener cuidado con esta instruccin ya que si no especificamos una condicin con Where, lo que estamos haciendo es borrar toda la tabla: Delete From clientes UPDATE (Actualizar un registro) Update es la instruccin que nos sirve para modificar nuestros registros. Como para el caso de Delete, necesitamos especificar por medio de Where cules son los registros en los que queremos hacer efectivas nuestras modificaciones. Adems,
obviamente, tendremos que especificar cules son los nuevos valores de los campos que deseamos actualizar. La sintaxis es de este tipo: Update nombre_tabla Set nombre_campo1 = valor_campo1, nombre_campo2= valor_campo2,... Where condiciones_de_seleccin Un ejemplo aplicado: Update clientes Set nombre=Pablo Where nombre='Pepe' Mediante esta sentencia cambiamos el nombre Pablo por el de Pepe en todos los registros cuyo nombre sea Pablo. Aqu tambin hay que ser cuidadoso de no olvidarse de usar Where, de lo contrario, modificaramos todos los registros de nuestra tabla. INNER JOIN (Consultas SQL de Unin Internas) Las vinculaciones entre tablas se realizan mediante la clusula INNER que combina registros de dos tablas siempre que haya concordancia de valores en un campo comn. Su sintaxis es: SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1 comp tb2.campo2 El ejemplo siguiente muestra cmo podra combinar las tablas Categoras y Productos basndose en el campo IDCategoria: SELECT NombreCategoria, NombreProducto FROM Categorias INNER JOIN Productos ON Categorias.IDCategoria = Productos.IDCategoria En el ejemplo anterior, IDCategoria es el campo combinado, pero no est incluido en la salida de la consulta ya que no est incluido en la instruccin SELECT. Para incluir el campo combinado, incluir el nombre del campo en la instruccin SELECT, en este caso, Categorias.IDCategoria. Tambin se pueden enlazar varias clusulas ON en una instruccin JOIN, utilizando la sintaxis siguiente:
SELECT campos FROM tabla1 INNER JOIN tabla2 ON (tb1.campo1 comp tb2.campo1 AND ON tb1.campo2 comp tb2.campo2) OR ON (tb1.campo3 comp tb2.campo3) Tambin puede anidar instrucciones JOIN utilizando la siguiente sintaxis: SELECT campos FROM tb1 INNER JOIN (tb2 INNER JOIN [( ]tb3 [INNER JOIN [( ]tablax [INNER JOIN ...)] ON tb3.campo3 comp tbx.campox)] ON tb2.campo2 comp tb3.campo3) ON tb1.campo1 comp tb2.campo2 OTRAS SENTENCIAS Adems de los criterios hasta ahora explicados para realizar las consultas en tablas, SQL permite tambin aplicar un conjunto de funciones predefinidas. Estas funciones, aunque bsicas, pueden ayudarnos en algunos momentos a expresar nuestra seleccin de una manera ms simple sin tener que recurrir a operaciones adicionales por parte del script que estemos ejecutando. Algunas de estas funciones son representadas en la tabla siguiente: Funcin Sum(campo) Avg(Campo) Count(*) Descripcin Calcula la suma de los registros del campo especificado Calcula la media de los registros del campo especificado Nos proporciona el valor del numero de registros que han sido seleccionados Max(Campo) Nos indica cual es el valor mximo del campo Min(Campo) Nos indica cual es el valor mnimo del campo Dado que el campo de la funcin no existe en la base de datos, sino que lo estamos generando virtualmente, esto puede crear inconvenientes cuando estamos trabajando con nuestros scripts a la hora de tratar su valor y su nombre de campo. Es por ello que el valor de la funcin ha de ser recuperada a partir de un alias que nosotros especificaremos en la sentencia SQL a partir de la instruccin AS. La cosa podra quedar as: Select Sum(total) As suma_pedidos From pedidos A partir de esta sentencia calculamos la suma de los valores de todos los pedidos realizados y almacenamos ese valor en un campo virtual llamado suma_pedidos que podr ser utilizado como cualquier otro campo por nuestras paginas dinmicas.
Por supuesto, todo lo visto hasta ahora puede ser aplicado en este tipo de funciones de modo que, por ejemplo, podemos establecer condiciones con la clusula Where construyendo sentencias como esta: Select Sum(cantidad) as suma_articulos From pedidos Where id_articulo=6 Esto nos proporcionara la cantidad de ejemplares de un determinado libro que han sido vendidos. Otra propiedad interesante de estas funciones es que permiten realizar operaciones con varios campos dentro de un mismo parntesis: Select Avg(total/cantidad) From pedidos Esta sentencia da como resultado el precio medio al que se estn vendiendo los libros. Este resultado no tiene por qu coincidir con el del precio medio de los libros presentes en el inventario, ya que, puede ser que la gente tenga tendencia a comprar los libros caros o los baratos: Select Avg(precio) as precio_venta From articulos Una clusula interesante en el uso de funciones es Group By. Esta clusula nos permite agrupar registros a los cuales vamos a aplicar la funcin. Podemos por ejemplo calcular el dinero gastado por cada cliente: Select id_cliente, Sum(total) as suma_pedidos From pedidos Group By id_cliente O saber el numero de pedidos que han realizado: Select id_cliente, Count(*) as numero_pedidos From pedidos Group By id_cliente
BASES DE DATOS Un Base de Datos (BD), es un conjunto de informacin relacionada que se encuentra agrupada estructurada. Visual Basic nos permite trabajar directamente con distintas bases de datos (ACCESS, dBaseIII, dBaseIV , dBase 5, Excel3, Excel4, Excel5, Excel7, FoxPro2.x, Foxpro3.0, LotusWK1, LotusWK3, LotusWk4, Paradox3.x, Paradox4.x y Paradox5.x Esto lo logra mediante el Motor de Bases de Datos Jet (un conjunto de programas
que se cargan en el disco duro cuando instala Access o Visual Basic) , herramienta de Microsoft para administrar los datos en bases de datos Access. Esta forma de acceder a las bases de datos se le llama Acceso mediante objetos DAO. Lo de DAO viene de Data Access Objet. Y es la forma ms sencilla y rpida de acceder a una base de datos Access instalada en el propio disco duro o en un disco de red de rea local rpida. (Lo de facilidad de acceso a una base de datos Access viene implcito en la poltica de Microsoft de facilitar la compatibilidad entre sus aplicaciones) ODBC (Open Data Base Conectivity) es un mecanismo de conexin entre bases de datos abiertas. Lo de abiertas significa que tienen esa interface de acceso comn, interface a travs de la cual puede acceder a sus datos cualquier aplicacin. Esta interface utiliza el lenguaje SQL, y es necesario establecer una conexin ODBC en Windows. ADO. La gran ventaja de ADO es que en aquellas aplicaciones que leen una base situada en un servidor, ocupa menos la red de rea local, ya que trabaja una aplicacin Cliente Servidor.
El control Data se utiliza con el motor de base de datos Microsoft Jet para acceder a base de datos de diferentes formatos como por ejemplo: Microsoft Access, Dbase, Excel, FoxPro, Lotus y Paradox, aunque en los ejemplos solo se utilizar Microsoft Access como base de datos. El control Data permite trabajar con controles enlazados, por ejemplo con controles Label, TextBox, ComboBox, controles Image etc.. para presentar los datos. Esto quiere decir que al colocar un control Data y enlazarlo a una base de datos y luego enlazar dichos controles con el control Data, los cambios que se realicen en los controles enlazados se reflejarn en la base de datos. Para enlazar la base de datos con un control Data ubicado en el formulario, se utiliza la propiedad DataBaseName y Connect. En la propiedad Connect se especifica el tipo de base de datos, por ejemplo: Access. Luego, ya se puede seleccionar la base de datos. Para indicar con que tabla se encontrar unida al control se utiliza la propiedad RecordSource. Nota: Antes de especificar la tabla en la propiedad RecordSource hay que indicar la propiedad DataBaseName y Connect, de lo contrario se producir un error " Debe rellenar las propiedades DataBaseName y Connect para llevar a cabo la operacin" Ya tenemos enlazado el control Data a la base de datos. Falta ahora enlazar una
etiqueta y un TextBox al control Data para tener el enlace completo. Eso es an ms sencillo. Si desplegamos las propiedades del TextBox por ejemplo, veremos que tiene unas propiedades que cuando lo estudiamos, las habamos pasado un poco por alto: DataSource y DataField. En la figura puede ver que la propiedad DataSource puede desplegarse, mostrando en este caso el nombre del nico control Data que tenemos en el formulario: Data1 Si tuvisemos mas controles Data, apareceran los nombres de todos ellos. Se elige uno.
A continuacin debemos sealarle qu campo queremos que nos presente. Podemos desplegar la lista, donde podemos ver los campos de la tabla elegida para la propiedad RecordSource del control Data. Elegimos uno y ejecutamos la aplicacin.
MoveFirst, MovePrevious, MoveNext, MoveLast AddNew Update Delete CancelUpdate Data1.Recordset.FindFirst ("CAMPO = '" & Variable & "'")
PRACTICA 5.- El control DATA Realizar una agenda de alumnos con las funciones bsicas de un sistema (nuevo, modificar, eliminar, modificar, buscar). Adems incluir las funciones con cadenas y mensajes con salida formateada.