Sunteți pe pagina 1din 17

Curso de Visual Basic 6.

0 (Diseo de Formularios 6 (Bases de Datos 2 )

Bases de Datos con Visual Basic


Uso Del Control Data

En Visual Basic puede utilizar el control Data para crear aplicaciones de bases de datos para una gran variedad de formatos de base de datos. El control Data interacta con el motor de base de datos Microsoft Jet y permite crear aplicaciones preparadas para datos con la mnima cantidad de cdigo posible. En esta seccin se explica cmo utilizar el control Data y otros controles avanzados enlazados a datos para ver, modificar y actualizar informacin de una base de datos.
Introduccin al Acceso de Datos

Antes de empezar a trabajar con la funcionalidad de bases de datos de Visual Basic, es necesario que comprenda las funciones de acceso a datos, as como la terminologa referente a bases de datos. Opciones de Acceso a Datos en Visual Basic Uso del Motor de Base de Datos Jet Los Objetos de acceso a datos (DAO) y el control Data utilizan el motor de base de datos Microsoft Jet para tener acceso a las bases de datos. El motor de base de datos Jet puede obtener acceso a tres tipos de bases de datos: Bases de datos Jet. Bases de datos del Mtodo de acceso secuencial indizado (ISAM, Indexed Sequential Access Method). Bases de datos compatibles con Open Database Connectivity (ODBC, Conectividad abierta de bases de datos). Otros Mtodos de Acceso a Datos He aqu otros mtodos de acceso a datos que admite Visual Basic: Control de origen de datos remotos. Bibliotecas ODBC. Bibliotecas SQL para Visual Basic (VBSQL).
Trabajar con el Control Data

El control Data de Visual Basic le permite escribir aplicaciones de bases de datos muy eficaces con muy poco cdigo. En esta seccin aprender a generar aplicaciones de bases de datos con el control Data y el objeto Recordset asociado. Tener Acceso a Datos con el Control Data El control Data implementa el acceso a datos mediante el motor de base de datos Microsoft Jet. Esta tecnologa proporciona acceso a muchos formatos de base de datos y le permite crear aplicaciones que manejan datos sin necesidad de escribir cdigo.
Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Uso de Controles Enlazados a Datos Cuando enlaza un control enlazado a datos que ha colocado en un formulario, se muestran automticamente los datos de la base de datos en el control enlazado. Si un usuario cambia los datos de un control enlazado, dichos cambios se actualizarn automticamente en la base de datos en cuanto el usuario se desplace a otro registro. Muchos controles intrnsecos de Visual Basic estn enlazados a datos, como es el caso de los controles CheckBox, Image, Label, PictureBox, TextBox, ListBox, ComboBox y los contenedores OLE. La siguiente ilustracin es un ejemplo de un formulario que contiene un control Data y dos controles enlazados.

Enlazar Controles Despus de establecer los valores de las propiedades para el control Data, es necesario enlazar al control Data los controles enlazados a datos individuales y despus especificar qu campo de la tabla mostrar cada control. Uso de las Propiedades y mtodos del Control Data Para especificar qu datos desea recuperar, debe establecer las propiedades DatabaseName y RecordSource de un control Data. Adems, puede establecer las siguientes propiedades y mtodos: Propiedad Connect Propiedad Exclusive Propiedad ReadOnly Propiedad Recordset Propiedades BOFAction y EOFAction Mtodo Refresh

El Objeto Recordset En una aplicacin de base de datos, los usuarios trabajan con el control Data para desplazarse entre registros dentro de la base de datos. Los usuarios pueden hacer clic en los botones del control Data para avanzar o retroceder registro a registro o para ir directamente al primer o al ltimo registro.

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Qu es un Recordset? Todo el conjunto de registros al que hace referencia un control Data se denomina conjunto de registros o Recordset. El Recordset se almacena en la memoria, transfirindose al disco si es necesario. Determinar los lmites de un Recordset Si utiliza cdigo para cambiar la posicin del registro actual, debe comprobar las propiedades EOF y BOF del objeto Recordset para determinar el inicio y el final del mismo. Cuando se desplace al registro EOF o al BOF, se ejecutar la accin indicada por el valor de la propiedad BOFAction o EOFAction. En la siguiente ilustracin se muestra cmo las propiedades BOF y EOF determinan los lmites del objeto Recordset.

Para utilizar el objeto Recordset de un determinado control Data, especifique la propiedad Recordset del control Data, tal y como se muestra en el siguiente cdigo: Data1.Recordset.MoveNext 'Va al registro siguiente. If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If Uso de las Propiedades y Mtodos de Recordset Utilice los mtodos y las propiedades del objeto Recordset para recuperar informacin del conjunto de registros, desplazarse por los registros y agregar, actualizar o eliminar registros. Propiedades BOF y EOF Mtodo AddNew de Recordset Mtodo UpdateRecord del control Data Mtodo CancelUpdate del control Data El mtodo Delete

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

El siguiente cdigo muestra el uso de las propiedades y mtodos de un Recordset: Sub cmdCancel_Click () Data1.CancelUpdate End Sub Sub cmdUpdate_Click () Data1.Update End Sub Sub cmdAdd_Click () Data1.Recordset.AddNew End Sub Sub cmdDelete_Click () Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If End Sub
Uso de Eventos del Control Data

El control Data proporciona tres eventos que puede utilizar para mejorar la aplicacin de base de datos: Validate, Error y Reposition. Dichos eventos le permiten omitir parte del comportamiento predeterminado del control Data. Usar el Evento Validate Utilice el evento Validate para comprobar los datos antes de guardar un registro en la base de datos. Este evento se produce justo antes de que Visual Basic escriba en la base de datos los cambios procedentes de los controles enlazados y de que vuelva a colocar el puntero del registro actual en otro registro de la base de datos. Puede utilizar el evento Validate para pedir al usuario que confirme los cambios realizados. Sintaxis: El evento Validate tiene la siguiente sintaxis: Private Sub Data1_Validate (index As Integer, action As Integer, save As Integer) El argumento action El argumento action indica la operacin que provoc el evento Validate. El evento Validate se produce como resultado de realizar las operaciones siguientes: MoveFirst, MovePrevious, MoveNext, MoveLast AddNew Update Delete Find Establecer la propiedad Bookmark Cerrar la base de datos Descargar el formulario

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Para cancelar cualquiera de estas acciones, asigne al argumento action el valor vbDataActionCancel. El argumento save El argumento save indica si va a guardarse o no el registro. Si save es True, los datos enlazados han cambiado. Para cancelar la accin de guardar puede asignar a save el valor False. Usar el Evento Reposition Utilice el evento Reposition para modificar la apariencia de un formulario o realizar una accin necesaria cuando se desplace a un nuevo registro. Este evento tiene lugar cuando Visual Basic desplaza el puntero del registro actual a otro registro de la base de datos. Tambin se produce la primera vez que se abre la base de datos. Modificar la apariencia de un formulario Para cambiar la manera en que un formulario muestra informacin basndose en el registro seleccionado en ese momento hay que utilizar el evento Reposition. Por ejemplo, puede modificar el ttulo del control Data de forma que se muestre el registro nmero n. Para ver el nmero del registro actual, utilice la propiedad AbsolutePosition del objeto Recordset. El nmero de registro es relativo a cero, por lo que el primer registro es el 0. Tratar los cambios al desplazarse a un nuevo registro Cuando un usuario se desplaza a un nuevo registro mediante el control Data, puede que los datos del formulario tengan que presentarse de una forma distinta en el caso del nuevo registro. Por ejemplo, es posible que en un formulario que muestre registros de empleados haya distintas opciones dependiendo de si los empleados son fijos, temporales, si trabajan por horas o si son becarios. Cada registro mostrar la informacin sobre un empleado distinto, cuyas opciones pueden no ser las mismas para todos los registros. Para que se seleccione la opcin correcta para cada registro, escriba cdigo en el evento Reposition. El cdigo siguiente utiliza el evento Reposition para modificar la apariencia de un formulario: Private Sub Data1_Reposition() Data1.Caption=Data1.Recordset.AbsolutePosition If Data1.Recordset("IdEmpleado") > 5 Then optSenior.Value = True Else optJunior.Value = True End If Data1.Caption = "Registro " & _ Data1.Recordset.AbsolutePosition + 1 End Sub

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Esta ilustracin muestra el formulario basado en el cdigo anterior.

Usar el Evento Error El evento Error tiene lugar cuando un usuario interacta con el control Data y se produce un error de acceso a datos. Utilice el evento Error para agregar tratamiento de errores personalizado al control Data. Por ejemplo, si un usuario modifica un campo y despus hace clic en el control Data para desplazarse al siguiente registro, el control Data actualizar el registro actual. Si se produce un error de acceso a datos durante la actualizacin, se producir el evento Error. Los valores de los campos enlazados no cambian tras producirse un error. El usuario puede corregir los valores y hacer clic en el control Data para tratar de actualizar nuevamente el registro. Mostrar un mensaje de error personalizado Si no coloca cdigo para tratar errores en el evento Error y se produce un error cuando un usuario interacta con el control Data, Visual Basic muestra el mensaje de error y el programa contina ejecutndose. Si no desea que se muestre el mensaje de error estndar, puede asignar al argumento Response el valor 0.
Uso de Controles Enlazados a Datos ActiveX

Adems de los controles enlazados intrnsecos, Visual Basic ofrece varios controles ActiveX enlazados a datos. En esta seccin se describen algunos controles ActiveX enlazados a datos avanzados. Usar el Control DBGrid El control de cuadrcula enlazada a datos (control DBGrid) permite que los usuarios de su aplicacin de base de datos trabajen con varios registros a la vez. Mostrar mltiples registros DBGrid es un control ActiveX que muestra una serie de filas y columnas que representan registros y campos de un objeto Recordset. Cuando asigne a la propiedad DataSource del control DBGrid un control Data, el control DBGrid se llenar automticamente de datos y se establecern automticamente sus encabezados de columna a partir del conjunto de registros del control Data. Al contrario que la mayora de los controles enlazados a datos, el control DBGrid le permite ver y modificar varios registros simultneamente.
Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

En la siguiente ilustracin se muestra un formulario que utiliza un control DBGrid para presentar registros procedentes de la base de datos Neptuno.

El control DBGrid tiene varias propiedades que especifican cmo se comporta el control. Por ejemplo, si asigna a la propiedad AllowUpdate el valor True, un usuario puede modificar los datos del control. Tambin puede establecer propiedades para columnas individuales del control DBGrid. Puede cambiar el ttulo de la columna, cambiar el campo de datos al que se enlaza la columna, agregar valores predeterminados, etc. Obtener y establecer texto de la celda actual Utilice la coleccin Columns del control DBGrid para recuperar el texto de la celda seleccionada actualmente en tiempo de ejecucin. Por ejemplo: MsgBox DBGrid1.Columns(DBGrid1.Col).Text Para cambiar la informacin del control DBGrid, cambie el objeto Recordset asociado. Usar el evento BeforeUpdate El evento BeforeUpdate tiene lugar antes de que se muevan datos desde un control DBGrid al bfer de copia del control Data. Puede validar los datos y cancelar la actualizacin si es necesario.

Usar el Control MSFlexGrid El control MSFlexGrid proporciona caractersticas avanzadas para la presentacin de datos en una cuadrcula. Es similar al control DBGrid aunque, cuando se enlaza a un control Data, el control MSFlexGrid muestra datos de slo lectura. Puede utilizar el control MSFlexGrid para combinar filas o columnas de informacin y as agrupar la informacin relacionada. En la siguiente ilustracin se muestran registros agrupados por Id. de pedido en la tabla Detalles de pedidos.
Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Usar el Control DBCombo Puede utilizar el control de cuadro de lista enlazado a datos (DBList) o el cuadro combinado enlazado a datos (DBCombo) para presentar automticamente una lista de valores de un Recordset. Esto resulta til para proporcionar valores vlidos al usuario. Obtener informacin de una tabla de bsqueda Tambin puede utilizar estos controles en aplicaciones de "tabla de bsqueda". Por ejemplo, puede presentar una lista de nombres de categora vlidos (en vez de Id.) y utilizar el Id. correspondiente cuando el usuario agregue o modifique datos. La ilustracin siguiente muestra un formulario que utiliza el control DBCombo para presentar nombres de categoras de la tabla Productos.

Establecer propiedades del control DBCombo Para determinar el valor que se presenta en el control DBCombo, asigne a la propiedad RowSource un nombre de control Data y a la propiedad ListField un nombre de campo.

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

El cuadro combinado enlazado a datos contiene todos los valores de ese campo. Para determinar qu campo de la base de datos se actualiza cuando un usuario cambia un valor, establezca las propiedades DataSource y DataField. Para establecer la relacin entre la tabla que contiene los valores de bsqueda y la tabla que se est modificando realmente, establezca la propiedad BoundColumn.

USAR OBJETOS DE ACCESO A DATOS


Los Objetos de acceso a datos (DAO) son una serie de objetos que le permiten tener acceso y manipular datos mediante programacin en bases de datos locales o remotas. Puede utilizar DAO para administrar bases de datos, as como sus objetos y su estructura. En esta seccin aprender a utilizar DAO para recuperar y usar datos de una base de datos.
Introduccin

Para tener acceso y manipular datos mediante programa debe comprender la jerarqua de DAO. El orden de los objetos en DAO se conoce como su modelo de objetos. El modelo de objetos de DAO le permite escribir cdigo que puede aprovechar la funcionalidad de la base de datos. El Modelo de Objetos de DAO El modelo de objetos de DAO define la jerarqua de los objetos DAO. Para incorporar a una aplicacin la funcionalidad de DAO, debe ser capaz de exponer un objeto dentro de esta jerarqua. A continuacin se muestra ilustracin que refleja el modelo de objetos de DAO.

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Deber utilizar esta jerarqua cuando cree o tenga acceso a determinados objetos.

Por ejemplo, la instruccin siguiente abre una base de datos: Set dbMydb = DBEngine.Workspaces(0).OpenDatabase("Mibd.mdb") En la tabla siguiente se enumeran algunos de los Objetos de acceso a datos y se describe su uso. Objeto Descripcin Workspace Database Recordset QueryDef TableDef Contiene las bases de datos abiertas. Una base de datos abierta. Los registros de una tabla o los registros que resultan de ejecutar una consulta. Una definicin almacenada de una consulta. Una definicin almacenada de una tabla.

Los Objetos DBEngine y Workspace Objeto DBEngine DBEngine es el objeto de nivel superior dentro del modelo de objetos DAO. Contiene y controla todos los dems objetos de la jerarqua de DAO. Objeto Workspace El objeto Workspace define una sesin para el usuario y determina cmo interacta su aplicacin con los datos. Si abre una base de datos sin especificar un objeto Workspace, se utilizar DBEngine.Workspaces(0) como valor predeterminado.
Trabajar con Recordsets

Un objeto Recordset contiene un conjunto de registros de una base de datos. Puede utilizar el objeto Recordset para recuperar mediante programa informacin de la base de datos. En esta seccin se explica cmo crear y utilizar Recordsets. Abrir una Base de Datos El primer paso para crear una aplicacin de base de datos consiste en abrir la base de datos. Deber declarar una variable como un objeto Database y despus utilizar el mtodo OpenDatabase para abrir la base de datos. Declaracin de la base de datos La variable de objeto Database se refiere a su base de datos. Utilice la instruccin Set para asignarla a una base de datos.

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

El siguiente ejemplo de cdigo abre una base de datos en el espacio de trabajo predeterminado: Dim dbMydb As Database Set dbMydb = OpenDatabase ("C:\DevStudio\VB\Nwind.mdb") Mtodo OpenDatabase El mtodo OpenDatabase acepta los argumentos siguientes: Argumento Propsito Cadena que especifica el nombre de una base de datos existente. Para un espacio de trabajo de Microsoft Jet, True o False. Si abre una base de datos con el argumento opciones True, ningn otro usuario podr abrir la base de datos. El valor predeterminado es False. Slo_lectura True o False. Si es True, no se permite realizar ninguna modificacin. El valor predeterminado es False. Conexin Cadena que especifica diversa informacin de conexin, incluyendo contraseas. Puede mejorar el rendimiento si abre una base de datos para uso exclusivo si no hay varios usuarios. Mtodo Close Cuando haya terminado de trabajar con una base de datos, cirrela con el mtodo Close, como en el ejemplo siguiente: dbMydb.Close Crear un Recordset Una vez que haya abierto una base de datos, puede manipular los datos almacenados en la misma si crea un Recordset. Declare una variable como un objeto Recordset y utilice el mtodo OpenRecorset para crear el Recordset. Declaracin de Recordset La variable de objeto Recordset hace referencia a su Recordset. Utilice la instruccin Set para asignarla a un Recordset. El siguiente ejemplo de cdigo abre una base de datos y crea un Recordset: Dim dbMydb As Database Dim recEmployees As Recordset Set dbMydb = OpenDatabase _ ("C:\Archivos de programa\DevStudio\VB\Nwind.mdb") Set recEmployees = dbMydb.OpenRecordset ("Empleados") Base_datos Opciones

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Mtodo OpenRecordset En la tabla siguiente se enumeran y describen los argumentos del mtodo OpenRecordset. Argumento Descripcin Origen Tipo Opciones Especifica el origen del Recordset. El origen es una cadena que indica un nombre de tabla, un nombre de consulta o una instruccin SQL. El tipo de objeto del Recordset que se va a crear, como dbOpenTable, dbOpenDynaset o dbOpenSnapshot. Determina cmo se abre el Recordset. Por ejemplo, puede abrir un Recordset y permitir el desplazamiento slo hacia delante por el mismo con la opcin dbForwardOnly. Determina el bloqueo del Recordset. Por ejemplo, si especifica dbPessimistic para el argumento ediciones, el Recordset se bloquear durante la modificacin.

Ediciones

El desplazamiento por los Recordsets se basa en el concepto de un registro actual. Suponga que el registro actual es un determinado registro que est resaltado por un cursor invisible a medida que se desplaza por el Recordset. Mtodos de desplazamiento Utilice los mtodos Move para desplazarse por los registros de un Recordset: Propiedades del desplazamiento El objeto Recordset ofrece propiedades que puede utilizar mientras se desplaza por un Recordset. RecordCount La propiedad RecordCount de un Recordset de tipo table siempre refleja fielmente el nmero de registros de la tabla y se ve afectada inmediatamente cuando algn usuario agrega o elimina un registro. Nota: Puede utilizar la funcin Count de SQL para determinar el nmero de registros de un Recordset. Por ejemplo, Select Count (*) From Empleados devuelve el nmero de registros de la tabla Empleados. AbsolutePosition La propiedad AbsolutePosition devuelve o establece el nmero relativo del registro actual de un Recordset. AbsolutePosition es relativo a 0 (es decir, el primer registro de un Recordset es el registro 0). Si asigna a AbsolutePosition el valor 3, el cuarto registro ser el registro actual. Bookmark La propiedad AbsolutePosition de un registro puede cambiar a medida que se agregan y eliminan registros de un Recordset. Para volver a un registro especfico, utilice la propiedad Bookmark.
Modificar Datos

Una vez que haya creado un Recordset, puede utilizar los mtodos del objeto Recordset para actualizar, agregar y eliminar registros. En esta seccin se explica cmo actualizar, agregar y eliminar datos desde una base de datos de Microsoft Jet
Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Actualizar Registros Para actualizar un registro primero debe invocar al mtodo Edit, llenar los campos del registro con los datos apropiados y, despus, invocar al mtodo Update. Si ejecuta el mtodo Update sin utilizar primero el mtodo Edit, se producir un error de tiempo de ejecucin. Propiedad EditMode del Recordset Puede comprobar la propiedad EditMode para determinar si se han ejecutado los mtodos Edit o AddNew. Esto puede resultar til en un comando Guardar que ejecute un mtodo Update inmediatamente, si ya se ha ejecutado un mtodo Add; o cuando ejecute el mtodo Edit seguido del mtodo Update si el usuario est modificando el registro actual. En la tabla siguiente se describen las constantes que indican el estado de modificacin del registro actual. Constante Descripcin DbEditNone DbEditInProgress DbEditAdd Si no est realizndose ninguna operacin de edicin. Si se ha llamado al mtodo Edit y el registro actual est en el bfer de copia. Si se ha llamado al mtodo AddNew y el registro actual del bfer de copia es un registro nuevo que no se ha guardado en la base de datos.

Agregar Registros Utilice el mtodo AddNew para agregar un nuevo registro al Recordset. El registro no se guardar realmente en la base de datos hasta que ejecute el mtodo Update. Cancelar un mtodo Add Utilice el mtodo CancelUpdate para cancelar el mtodo AddNew o Edit de forma que no se realicen los cambios a una base de datos. Eliminar Registros Utilice el mtodo Delete para quitar el registro actual de un Recordset. No se mostrar ninguna advertencia o peticin. Puede agregar un mensaje de advertencia en la rutina de la eliminacin si es necesario. La eliminacin de un registro no provoca automticamente que el registro siguiente pase a ser el registro actual. Para que el registro siguiente se convierta en el registro actual debe utilizar el mtodo MoveNext. Usar DAO con el Control Data En una misma aplicacin puede combinar DAO y el control Data. Esto es til si desea utilizar controles enlazados en una aplicacin y seguir teniendo la misma flexibilidad de uso que ofrece DAO. La propiedad Recordset del control Data devuelve un objeto Recordset.
Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Buscar Registros

En esta seccin se describe cmo utilizar uno de los mtodos Find o el mtodo Seek para buscar datos en un Recordset. Buscar en un Dynaset o un Snapshot Puede utilizar los mtodos FindFirst, FindLast, FindNext y FindPrevious para encontrar un registro en un dynaset o en un snapshot. El criterio de bsqueda que especifique debe ser equivalente a una instruccin Where de SQL, sin la palabra clave Where. Buscar en una Tabla Utilice el mtodo Seek para buscar un registro en un Recordset de tipo table. El Recordset debe tener definido un ndice antes de poder utilizar el mtodo Seek. En la tabla siguiente se describen las posibles comparaciones que puede utilizar con el mtodo Seek. Cadena de comparacin Descripcin "=" Igual que los valores de clave especificados. ">" Mayor que los valores de clave especificados. ">=" Mayor o igual que los valores de clave especificados. "<=" Menor o igual que los valores de clave especificados. "<" Menor que los valores de clave especificados. Utilice varias claves para los ndices que tienen varios campos.
Uso de Consultas

En esta seccin se explica el uso de consultas almacenadas e instrucciones SQL para ver o modificar datos en una base de datos. Usar una Consulta de Seleccin Para utilizar una consulta de seleccin almacenada, basta con proporcionar el nombre de la consulta en el mtodo OpenRecordset del objeto Database. El siguiente ejemplo de cdigo crea un Recordset basado en una consulta de seleccin almacenada: Set recProducts = dbMydb.OpenRecordset("Productos pedidos") Tambin puede utilizar el mtodo OpenRecordset del objeto QueryDef para recuperar los resultados de la consulta. El siguiente ejemplo de cdigo crea un Recordset con un objeto QueryDef basado en una consulta de seleccin almacenada: Dim qryProducts As QueryDef Set qryProducts = dbMydb.QueryDefs("Productos pedidos") Set recProducts = qryProducts.OpenRecordset

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Establecer un parmetro Si la consulta almacenada requiere parmetros, utilice la coleccin Parameters del objeto QueryDef para establecer parmetros. El cdigo siguiente establece un parmetro a una consulta almacenada: Set qryProducts.Parameters("Fecha de inicio") = _ CDate(txtBeginDate.text) Crear una consulta nueva Utilice el mtodo CreateQueryDef del objeto Database para crear una nueva consulta en tiempo de ejecucin y almacenar la consulta en una base de datos. El siguiente cdigo de ejemplo crea y almacena una consulta nueva: Set qryNewQuery = dbMydb.CreateQueryDef _ ("Mi consulta", "Select * From Empleados") Usar una Consulta de Acciones Una consulta de acciones es una instruccin SQL que actualiza, elimina o inserta registros en una base de datos. Una consulta de acciones no devuelve ninguna fila. Utilice el mtodo Execute del objeto Database para ejecutar una consulta de acciones. El siguiente ejemplo ejecuta una consulta de acciones y muestra el nmero de registros afectados: dbMydb.Execute "Actualizar productos", dbFailOnError Msgbox "Esta consulta cambi " & _ dbMydb.RecordsAffected & _ " registros." Utilice la opcin dbFailOnError para hacer que el mtodo Execute devuelva un error de tiempo de ejecucin si alguno de los registros afectados est bloqueado o no se puede actualizar o eliminar. La propiedad RecordsAffected devuelve el nmero de registros que se modificaron, insertaron o eliminaron. Tambin puede utilizar un objeto QueryDef para ejecutar una consulta de acciones. Si la consulta requiere parmetros, utilice la coleccin Parameters del objeto QueryDef para establecer los parmetros, como se muestra en este ejemplo: Dim qryUpdate As QueryDef Set qryUpdate = db.QueryDefs("Actualizar precios") qryUpdate.Parameters ("Escribir aumento") = .10 qryUpdate.Execute dbFailOnError Msgbox qryUpdate.RecordsAffected Introduccin a SQL Puede utilizar SQL para recuperar nicamente un subconjunto de filas o para recuperar informacin de dos tablas a la vez. SQL le permite especificar exactamente qu registros desea recuperar y en qu orden.

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Si hay un error en la instruccin SQL (por ejemplo, si especifica un nombre de campo no vlido), aparecer un mensaje de error de tiempo de ejecucin similar a Demasiados pocos parmetros. Se esperaban 2. Si recibe este error, compruebe la cadena SQL y asegrese de que los nombres del campo y de la tabla que ha indicado son vlidos. Sintaxis de SELECT de SQL Utilice la instruccin SELECT de SQL para recuperar registros. La sintaxis de SELECT es la siguiente: SELECT lista_campos FROM nombres_tabla WHERE condiciones_bsqueda ORDER BY lista_campos El ejemplo de cdigo siguiente recupera nicamente los campos Apellidos e IdEmpleado en los que IdEmpleado es mayor que 5. Los registros se recuperan en orden descendente segn el Id. de empleado: SELECT [Apellidos], [IdEmpleado] FROM Empleados WHERE [IdEmpleado] > 5 ORDER BY [IdEmpleado] DESC WHERE Utilice la clusula WHERE para limitar la seleccin. El signo de nmero (#) indica valores literales de fecha. Los valores literales de fecha especificados en una instruccin SQL deben tener el formato de fecha de EE.UU. (por ejemplo, el 9 de mayo de 1996 se escribe como 5/9/96). ORDER BY Utilice la clusula ORDER BY para crear un Recordset en un orden determinado. La opcin ASC indica orden ascendente y DESC indica orden descendente. El siguiente ejemplo de cdigo selecciona todos los campos de la tabla Empleados, ordenados por apellido: SELECT * FROM Empleados ORDER BY [Apellidos] DESC Usar SELECT con mltiples tablas Puede utilizar una operacin de combinacin con el fin de combinar registros procedentes de mltiples tablas. Por ejemplo, si quiere mostrar nombres de categora y nombres de producto de distintas tablas, puede combinar registros de la tabla Categoras y de la tabla Productos. La clusula INNER JOIN especifica que desea obtener los registros de la tabla Categoras cuyo Id. de categora coincida con el mismo IdCategora en la tabla Productos. El siguiente ejemplo de cdigo combina informacin de la tabla Categoras y la tabla Productos: strSQL = "SELECT Categoras.[NombreCategora], " & _ "Productos.[NombreProducto] " & _ "FROM Categoras " & _ "INNER JOIN Productos ON " & _ "Productos.[IdCategora] = Categoras.[IdCategora]" A continuacin veamos una ilustracin que muestra el resultado de la operacin de combinacin.
Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

Curso de Visual Basic 6.0 (Diseo de Formularios 6 (Bases de Datos 2 )

Usar SQL En general, es ms eficaz utilizar una consulta almacenada que crear una instruccin SQL en tiempo de ejecucin. Instruccin SELECT de SQL Puede crear dinmicamente una cadena SQL en tiempo de ejecucin y utilizar el mtodo OpenRecordset para crear un Recordset basado en la instruccin SQL. Por ejemplo: Dim strSQL As String strSQL = "Select * From Empleados" Set recEmployees = dbMydb.OpenRecordset (strSQL) Instruccin UPDATE de SQL La instruccin Update de SQL modifica registros existentes. La opcin dbFailOnError hace que la actualizacin se deshaga si se produce un error durante la actualizacin. Adems, se invoca al controlador de errores. El cdigo siguiente ilustra el uso de una instruccin Update de SQL: strSQL = "UPDATE [Detalles de pedidos] SET [Descuento] = 1 " & _ "WHERE [Descuento] = 0" dbMydb.Execute strSQL, dbFailOnError Instruccin INSERT de SQL Puede utilizar la instruccin Insert de SQL para insertar un nuevo registro. Veamos cdigo de ejemplo que inserta un registro en la tabla Empleados. strSQL = "INSERT INTO EMPLEADOS " & _ "([Nombre], [Apellidos]) " & _ "VALUES ('Juan', 'Gracia')" dbMydb.Execute strSQL, dbFailOnError

Elaborado por: Ing. Marvin Cardoza (xmarvin@bigfoot.com)

S-ar putea să vă placă și