Vous êtes sur la page 1sur 44

TRABAJAR CON ARCHIVOS

Controles Especializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de windows. Estos controles son el Cuadro de lista de unidades, el Cuadro de lista de directorios y el Cuadro de lista de archivos. Cada uno de estos controles permite acceder a los correspondientes elementos del sistema de archivos.

ARCHIVOS II
Al cuadro de lista de unidades (figura superior), tienes que darle un tamao adecuado para que se pueda mostrar cualquier unidad que tengas en tu ordenador. En tiempo de diseo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamao de la misma. Este control incluye las unidades de disco duro, disco flexible y Cd-Rom, etc... El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador.

ARCHIVOS III
... Es conveniente que este control muestre tres o cuatro carpetas o directorios. En tiempo de diseo muestra la carpeta en la que se inicia la aplicacin y en la que por defecto se guarda el proyecto. El cuadro de lista de archivos nos muestra los archivos de un determinado directorio o carpeta. A) Su propiedad ms interesante es Pattern que nos permite especificar qu tipo de archivos son mostrados en dicho control. Para utilizar esta propiedad se pueden utilizar los comodines * y ? al establecer la propiedad.

ARCHIVOS IV
Estos caracteres tienen el mismo significado que en MS-Dos o Windows para especificar los nombres de los archivos.

Si estableces la propiedad Pattern con la cadena *.txt, ests indicando que se muestren slo los archivos que tengan esta extensin. Se pueden mostrar ms de un tipo de archivos separndolos con ;.

CONECTAR LOS CONTROLES


En tiempo de diseo, al dibujar los distintos controles del sistema de archivos, estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente. En tiempo de ejecucin el usuario puede cambiar la unidad y el directorio o carpeta y esta situacin no se ver reflejada si no se escribe cdigo. Para que los controles estn sincronizados es necesario conectarlos.

CONECTAR LOS CONTROLES II


El evento predeterminado del control cuadro de lista de unidades es Change. Este evento sucede cuando el usuario despliega la lista de unidades y selecciona una unidad distinta a la actual, por lo que es el evento adecuado para actualizar la lista de directorios de la siguiente forma: Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub

CONECTAR LOS CONTROLES III


Para el control cuadro de lista de directorios deberemos hacer algo parecido, el cdigo ser el siguiente: Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub De esta forma tenemos conectados los tres controles de acceso al sistema de archivos. Manejando los errores

TIPOS DE ERRORES
Cuando se escribe cdigo en tiempo de diseo, Visual Basic puede detectar errores y avisar de ellos. Posteriormente se pueden detectar ms errores en tiempo de compilacin, estos errores son de carcter semntico. Los errores en tiempo de ejecucin son sucesos inesperados que Visual Basic no puede controlar por s mismo.

TIPOS DE ERRORES II
Ante este tipo de errores existe la posibilidad de incorporar un manejador o controlador de errores, que son un conjunto de lneas de cdigo que slo se ejecutan cuando se produce un error que es interceptado por Visual Basic. Se deben de escribir manejadores de errores siempre que se pueda preveer la ocurrencia de un error en tiempo de ejecucin. Alguna de estas situaciones son: - Problemas con las unidades de disco flexible. - Desbordamientos. - Falta de memoria. - Problemas con la red. - Perifricos. - Errores lgicos (nombre de archivo mal escrito...)

MANEJANDO LOS ERRORES


La instruccin que nos permite detectar errores en tiempo de ejecucin es On Error. Su sntaxis es: On Error Goto Etiqueta, donde la etiqueta representa el nombre del manejador de error, que tiene que estar situado en el mismo procedimiento que la instruccin On Error. Cuando se produce un error en el procedimiento donde se coloca On Error, Visual Basic dar el control al manejador de errores escrito en dicho procedimiento. El cdigo puede ser:
ManejadorError: If Err.Number = 68 Then resp = MsgBox("El dispositivo no est preperado", vbAbortRetryIgnore) Resume end if if resp = vbRetry Then Resume ElseIf resp = vbAbort Then Drive1.Drive = Dir1.Path Resume Next End If

MANEJANDO LOS ERRORES II


La primera lnea es la etiqueta que representa el nombre del manejador. Al producirse un error en tiempo de ejecucin se crea un objeto Err que intercepta dicho error. Este objeto posee la propiedad Number que es el nmero de error interceptado. El cdigo pregunta si dicho error es el 68 y en ese caso presenta un cuadro de dilogo en el que se indica que el dispositivo no est preparado, dando tres opciones: reintenter, cancelar o ignorar. Una vez interceptado el error y ejecutado el cdigo asociado al manejador, es necesario indicar qu sucede una vez se salga del manejador. En este caso depender de lo que elija el usuario. Si quiere reintentar la operacin se ejecutar la instruccin Resume, que vuelve a ejecutar la misma instruccin que provoc el error. Si se anula la operacin se ejecutar Resume Next, que devuelve el control a la siguiente instruccin que provoc el error.

TRABAJAR CON ARCHIVOS II


Archivos de Texto
Vamos a escribir cdigo para cuando el usuario haga click en un archivo de la lista de archivos (captulo 15), su contenido se muestre en un cuadro de texto. El cdigo puede ser el siguiente:
Private Sub File1_Click() Dim nuevalinea As String, LTexto As String, Texto As String, Archivo As String nuevalinea = Chr$(13) + Chr$(10) Archivo = File1.Path & "\" & File1.filename Open Archivo for Input As #1 Do Until EOF(1) Line Input #1, LTexto Texto = Texto & LTexto & nuevalinea Loop Text1.Text = Texto Close #1 End Sub

TRABAJAR CON ARCHIVOS III


Cuando el usuario selecciona un determinado archivo de la lista, su nombre se especifica en la propiedad filename del cuadro de lista de archivos. Tienes que indicar la ruta de acceso completa, por lo cual se concatena el directorio, que se encuentra en la propiedad Path y el carter \ como separador de directorios. Una vez tenemos en la variable Archivo el nombre y ruta completa del archivo que deseamos mostrar, es necesario abrir dicho archivo. Para ello utilizamos la instruccin Open. La instruccin Open necesita el nombre del archivo que tiene que abrir y el modo en que se va a abrir. En la lnea Open Archivo for Input As #1, el archivo a abrir est situado en la variable Archivo, en modo de lectura, especificado mediante la instruccin Input y su nmero asociado que es el #1. Una vez tenemos abierto el archivo en modo lectura, utilizamos la variable LTexto para ir almacenando cada una de la lneas del archivo de texto. Para ello utilizamos la instruccin Line Input donde se indica el nmero del archivo y la variable en al que se guarda la lnea de texto. Esta instruccin se situa en un bucle Do Until...Loop repitindose hasta que se llega al final del archivo de texto especificado por la condicin EOF(1). En la lnea Text1.Text = Texto, es donde se asocia el contenido del archivo con el cuadro de texto del formulario a travs de su propiedad Text. Finalmente se cierra el archivo mediante la instruccin Close #1.

LA INTRUCCIN FILECOPY
La instruccin FileCopy nos permite realizar una copia de un determinado archivo. La sntaxis de esta instruccin es: FileCopy fuente, destino La fuente es el archivo que queremos copiar y el destino es el archivo que ser resultado de la copia. El archivo fuente tiene que estar cerrado antes de utilizar esta instruccin ya que en caso contrario se producir un error en tiempo de ejecucin. Con la instruccin FileCopy puedes copiar cualquier archivo independientemente de su tipo.

EL ADMINISTRADOR DE DATOS
Introduccin Visual Basic puede acceder a distintos tipos de bases de datos.
a) MotorJet: El acceso ms sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basic y que es compartido por Access, es decir, si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic el acceso a la misma ser inmediato. B) ISAM: Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISAM (Mtodo Secuencial Indexado), entre las que se incluyen Btrive, dBASE, Foxpro y Paradox.

OTROS TIPOS DE ACCESO


c) ODCB para el tipo especfico de base de datos. Si tienes dicho controlador el acceso tambin ser inmediato.

Disear la base datos


El MotorJet de Visual Basic es un completo sistema gestor de bases de datos con el que se puede crear y manipular una base de datos. La creacin de una base de datos es un proceso en el cual podemos diferenciar dos partes: I.- El anlisis y el diseo: A ) Se realiza el anlisis de la base de datos cuando se piensa en qu se necesita almacenar para tenerlo disponible en cualquier momento. B ) El diseo es el proceso dependiente del tipo de base de datos que vayamos a utilizar, que casi con toda seguridad ser relacional. NOTA.- Al crear una base de datos relacional tienes que trabajar con tablas, registros, campos, ndices, etc.

CONOCER EL ADMINISTRADOR
Visual Basic incorpora el Administrador de datos con el que puedes crear y establecer las propiedades de las tablas que conformen la base de datos.

Sin embargo, si tienes Microsofr Access es recomendable utilizarlo en lugar del Administrador de Datos, ya que genera el mismo tipo de base de datos pero con una facilidad y flexibilidad mucho mayor.

ACCEDER AL ADMINISTRADOR DE DATOS


Para acceder al Administrador de Datos lo haremos mediante la opcin de mismo nombre en el men Complementos (Add-Ins). El administrador de datos nos permite modificar una base de datos ya creada o crear una nueva. Una base de datos creada con el MotorJet est compuesta por un nico archivo con extensin *.MDB. Una base de datos MDB se compone de un conjunto de tablas y de QueryDef.:
a) Las tablas son la estructura fundamental de las bases de datos, formadas por distintos campos y sus valores en los registros introducidos. b) Las QueryDef son instrucciones SQL, que han sido guardadas con un nombre al tener inters en utilizarlas en futuras ocasiones.

SQL es un lenguaje que nos permite entre otras cosas extraer resultados de una base de datos.

CREAR UNA BASE DE DATOS


1o.- Lo primero que tienes que hacer para crear una base de datos a) Indicar dnde se guardar el archivo y darle un nombre vlido. b) Una vez que hayas creado el archivo de la base de datos, es el momento de ir construyendo las tablas que formarn las misma.
1) Tienes que introducir el nombre de la nueva tabla. 2) Introducir Los Campos que quieres que aparezcan en la aplicacin. 3) Puedes utilizar ms de una tabla para los nombres de los campos.
Debers seleccionar el o los campos que quieras incluir y pasarlos a campos seleccionados.

ACCESO A BASES DE DATOS EL CONTROL DATA


Con el control Data, podemos acceder a una base de datos, mostrar su informacin, introducir nuevos registros, etc, y todo sin programar ni una sla lnea de cdigo. Los pasos a seguir para utilizar una base de datos en Visual Basic son:
a.- Dibujar el control data y establecer la conexin a la base de datos apropiada. b.- Utilizar otros controles para manejar la informacin. NOTA: Estos controles son conocidos como controles enlazados, al depender del control data como origen de los datos que muestran.

EL CONTROL DATA POSEE VARIOS PROPIEDADES


Las propiedades del control data que tienes que establecer para realizar la conexin con la base de datos son: Connect: Indica el tipo de base de datos a la que vamos a acceder. Por omisin es Access. DatabaseName: Indica el archivo de base de datos a la que se quiere acceder indicando la ubicacin exacta del archivo. RecordSource: Permite indicar el conjunto de datos especfico de la base de datos indicada en la anterior propiedad. Normalmente ser el nombre de una tabla de la base de datos o una instruccin SQL. NOTA: Se pueden asignar estos datos tambin en la etapa de diseo (Con cdigo)

CONTROLES ENLAZADOS
Una vez establecida la conexin a la base de datos e indicando el conjunto de datos (tabla) a los que vamos a tener acceso mediante el control data, es necesario utilizar otros controles para mostrar o introducir dicha informacin. Estos controles son conocidos como controles enlazados, ya que el origen de la informacin que muestran est ligado a un determinado control data. Normalmente se utilizan cuadro de texto, cuadros de lista e incluso controles imagen para mostrar el contenido de la base de datos a la que quieres acceder. Todos estos controles pueden actuar como controles enlazados.

CONTROLES ENLAZADOS
Existen dos propiedades que tienes que modificar para enlazar los controles con el control data: DataSource: Indicaremos el control data que actuar como origen de los datos. DataField: Campo especfico al que se enlaza el control.

Por ejemplo:
txtNombre.DataSource = datEmpleados
Control) (Data

txtNombre.DataField = "Nombre
(Campo del Data)

EXPLICACIN DEL EJEMPLO


Aqu se indica que se ligue 1.- El control txtNombre al campo Nombre de la tabla Empleados. 2.- Se usa El control data (datEmpleados). 3.- Este control deber tener correctamente establecidas las tres propiedades anteriormente citadas. RecordSets Al utilizar un control data y establecer la conexin con la base de datos, ests indicando el conjunto de datos sobre los que quieres tener acceso. En Visual Basic a dicho conjunto de datos se les denomina RecordSet, siendo una propiedad del control data.

TIPOS DEL RECORDSET


Existen tres tipos de Recordset: Table, Dynaset y Snapsoht. Dicho tipo se establece mediante la propiedad RecordsetType del control data, que predeterminadamente tiene el valor Dynaset.

1.- Dynaset: es un conjunto dinmico de registros que representan una


determinada tabla o el resultado de una consulta, segn se haya establecido la propiedad RecordSource del control data. Puedes agregar nuevos registros, modificar los campos existentes e incluso eliminar registros y todos estos cambios se reflejan en la base de datos afectada.

2.- Table: representa una determinada tabla de base de datos. Al crear


un Recordset de este tipo estars representando dicha tabla, cargndose en memoria un solo registro que se corresponde con el registro actual. Toda modificacin que se realice se ver reflejada en la tabla.

3.- Snapshot: crea una copia esttica del conjunto de datos al que se
accede mediante el control data. En este caso no puedes actualizar la base de datos, slo puedes visualizar los datos obtenidos.

MODIFICAR LA BASE DE DATOS


Si creas un Recordset de tipo Table o Dynaset, podrs modificar la base de datos subyacente sin tener que programar ni una sla lnea de cdigo. Al ejecutar la aplicacin, puedes desplazarte a travs de los registros utilizando el control data, cualquier modificacin que realices se ver reflejada en la base de datos al acceder al nuevo registro. Mediante la propiedad DataChanged de un control enlazado, si el valor mostrado por dicho control ha sufrido modificaciones respecto al valor original. En caso afirmativo dicha propiedad entrar en valor True.

AADIR REGISTROS
Se pueden agregar nuevos registros a la base de datos sin tener que programar para ello. 1.- En este caso tienes que situarte en el ltimo registro y moverte al siguiente. 2.- Si estableces correctamente la propiedad EOFAction al realizar dicha accin se crear un nuevo registro al que se le puede introducir nueva informacin. Nota: La propiedad EOFAction puede tener tres valores y nos indica lo que debe ocurrir cuando se llega al final de un Recordset del control data:

VALORES QUE RECIBE LA PROPIEDAD EOFACTION


MoveLast, est contenido en EOFAction, mantiene el ltimo registro como registro actual sin desplazarse al siguiente registro, que no existe, aunque pulsemos el botn del control data para desplazarnos al prximo registro.
Si el valor EOFAction deja el registro actual invalidado (ya que dicho registro todava no existe), y desactivas el botn que nos permite desplazarnos al siguiente tienes que controlar esta situacin mediante cdigo ya que cualquier intento de acceder a la informacin del registro actual producir un error al no ser un registro vlido.

AddNew, entonces cuando te desplaces ms all del ltimo registro, Visual Basic crear un registro nuevo en la base de datos (sin programar), donde puedes introducir la nueva informacin en los controles que VB limpiar. BOFAction, al igual que se puede indicar que debe ocurrir cuando se llegue al final de un recordset, tambin podrs hacerlo cuando se llega al principio mediante la propiedadd BOFAction

PROGRAMAR CON LA BASE DE DATOS


El control data nos permite movernos por un recordset de una forma rpida y sencilla a travs de sus botones. Sin embargo en muchas ocasiones tendrs que escribir cdigo en el que es necesario moverse a un determinado registro rpidamente. Para ello es necesario entender que aunque un recordset es una propiedad de control data, tambin tiene carcter de objeto, por lo que sern aplicables otras propiedades y mtodos.

MOVERSE POR UN RECORDSET


La forma de hacerlo ser con la sntaxis estndar:
NombreControlData.Recordset.NombrePropiedad NombreControlData.Recordset.NombreMtodo

Donde tanto el NombrePropiedad como el NombreMtodo son del recordset uno del control data.

MTODOS DEL RECORDSET


Los mtodos que puedes utilizar para desplazarte por un recordset son:
MoveFirst: Nos desplazamos al primer registro del recordset. MovePrevious: Nos desplazamos al registro anterior del recordset. MoveNext: Nos desplazamos al siguiente registro del recordset. MoveLast: Nos desplazamos al ltimo registro del recordser. Move fila [,inicio]: Permite desplazarnos un nmero especfico de registro hacia delante o hacia atrs respecto al marcador de inicio.

MARCADORES BOF Y EOF


El marcador BOF nos indica que estamos al principio del recordset y el marcador EOF nos indica que estamos al final. Si sitas el registro actual en dichos marcadores, no se producir un error pero no podrs acceder a la informacin del registro actual ya que no es un registro vlido. Si se sobrepasa dichos marcadores se producir un error en tiempo de ejecucin. Hay que utilizar las propiedades BOF y EOF para prevenir este tipo de errores. La accin indicada por el valor de las propiedades BOFAction y EOFAction del control data se ejecutan cuando el registro actual se sita en los marcadores BOF y EOF respectivamente. Recuerda que BOFAction y EOFAction son propiedades del control data mientras que BOF y EOF son del recordset.

BUSCAR REGISTROS
Para buscar registros puedes utilizar los mtodos 1) Find cuando trabajes con recordset de tipo Dynaset o Snapshot. 2) utilizar el mtodo Seek para un recordset de un tipo Table. El mtodo Find presenta cuatro variantes:
a) FindFirst: Busca el primer registro que cumple determinado criterio. b) FindLast: Busca el ltimo registro que cumpla un determinado criterio. c) FindNext: Realiza la bsqueda hacia delante. d) FindPrevious: Realiza la bsqueda hacia atrs.

EJEMPLO DE BUSCAR REGISTROS


Vamos a ver el siguiente ejemplo:
With.datEmpleados .Recordset.FindFirst "Nombre = ' " & txt.Nombre.Text & "'" If Recordset.NoMatch Then MsgBox "Lo siento no es un nombre de empleado vlido" Exit Sub End If End With

Mediante el uso de la estructura With nos evitamos tener que repetir cdigo. As no ser necesario escribir la estructura datEmpleados hasta que lleguemos a End With. En la lnea .Recordset.FindFirst "Nombre = ' " & txt.Nombre.Text & "'" es donde se produce la bsqueda de un determinado registro del recordset. Al utilizar el mtodo FindFirst se est indicando que se efecte la bsqueda del primer registro cuyo valor en el campo Nombre coincide con el valor que se ha introducido en el txtNombre.

ANALIZANDO LAS COMILLAS DE LA BUSQUEDA


Con el uso del operador & concatenamos para crear el criterio de bsqueda, si por ejemplo se hubiera introducido el valor Coral en el cuadro de texto, esta lnea quedara de la siguiente forma: datEmpleados.Recordset.FindFirst "Nombre='Coral'" Luego utilizamos el mtodo Nomatch del recordset para comprobar, una vez realizada la bsqueda, si se ha encontrado un registro o no. Si no se ha encontrado el registro, el mtodo nomatch devolver True por lo que se mostrar un mensaje mediante el MsgBox y se saldr del procedimiento utilizando el mtodo Exit Sub.

AADIR REGISTROS
El valor AddNew en la propiedad EOFAction del control data nos permita agregar registros, pero esta forma slo es adecuada cuando estamos accediendo a una nica tabla en el recordset. El objeto recordset contiene el mtodo AddNew que permite la creacin de un registro nuevo en blanco donde puedes asignar los valores a sus campos. Una vez introducida dicha informacin, tendrs que hacer uso del mtodo Update del recordset, con el objetivo de que el nuevo registro se actualice en la tabla.

EJEMPLO DEL MTODO UPDATE DEL RECORDSET


Si no utilizas Update el nuevo registro no se agregar finalmente. El cdigo ser: datEmpleados.Recordset.Update Tienes que tener en cuenta que el hecho de agregar un nuevo registro no implica que ste se convierta en el registro actual del recordset. Si quieres que el nuevo registro sea el registro actual puedes utilizar la propiedad del recordset

PROPIEDAD LASTMODIFIED DEL RECORDSET


LastModified. (El Codigo para poner el nuevo registro como actual, el cdigo ser:
datEmpleados.Recordset.Bookmark =datEmpleados.Recordset.LastModified

La propiedad Bookmark se usa para saltar rpidamente al nuevo registro indicado por el marcador LasrModified. Boolmark te permite guardar el puntero del registro actual y colocarse rpidamente en un registro especfico. El cdigo ser: Dim registoActual registroActual = datEmpleados.Recordset.Bookmark Aqu se guarda el registro actual datEmpleados.Recordset.MoveFirst Desplazamos al registro actual datEmpleados.Recordset.Bookmark = registroActual Vuelve al marcador guardado

ELIMINAR REGISTROS
Mediante el mtodo Delete, puedes borrar un registro entero de un recordset. En este caso te tienes que situar en el registro y hacer uso de ste mtodo. Tienes que tener cuidado a la hora de eliminar un registro, ya que el registro actual sigue siendo el registro eliminado, por lo que cualquier intento de acceder a la informacin del registro actual provocar un error de ejecucin. Para evitar ste problema es conveniente desplazarnos a un registro vlido una vez hayas utilizado el mtodo. No es necesario el uso de Update para hacer efectiva la eliminacin.

EJEMPLO DE ELIMINACIN
Un cdigo de ejemplo sera:
If datEmpleados.Recordset.EOF = False datEmpleados.Recordset.Delete If datEmpleados.Recordset.EOF = True Then cmdEliminar.Enabled = False datEmpleados.Recordset.MoveLast End If End If

En la primera lnea se comprueba si el recordset est vaco, es decir, si la propiedad EOF tiene su valor a True. En el caso de que el recordset no est vaco, se realiza la eliminacin del registro actual, ms tarde se vuelve a comprobar si el recordset est vaco ya que se poda haber borrado el nico registro que contena. Finalmente nos movemos al ltimo registro con MoveLast, ya que el registro actual no es vlido al haber sido eliminado. En el caso de no existir ningn registro vlido MoveLast nos situar en el marcador EOF.

OPCIONES AVANZADAS BASE DE DATOS CUADRCULA ENLAZADA A DATOS


En algunas ocasiones desears mostrar ms de un registro a la vez, con sus correspondientes campos. Para ello Visual Basic incorpora un nuevo control llamado Cuadrcula, que se presenta en dos versiones: enlazada y no enlazada Las dos permiten mostrar informacin de forma tabular, es decir, con un conjunto de filas y columnas. La versin enlazada (DBGrid), es ms apropiada cuando deseamos mostrar informacin proveniente de una determinada base de datos. Al utilizar dicho control puedes mostrar en cada una de sus columnas un campo y en cada una de las filas un registro del recordset del que haya sido enlazado.

AGREGANDO UNA CUADRCULA DE DATOS


El control Cuadrcula enlazada a datos no aparece en la caja de herramientas estndar ya que es un control personalizado con el siguiente aspecto: Debers agregarlo manualmente a la caja de herramientas, su nombre es Data Bound Grid. El control cuadrcula enlazada a datos aparece inicialmente con dos filas y dos columnas. Se puede modificar en tiempo de diseo esperar que en tiempo de ejecucin, cuando se enlace con un determinado recordset se ajuste al mismo.

PROPIEDADES DE LA CUADRCULA
El primer conjunto de propiedades interesantes de este control es el que establece su comportamiento en tiempo de ejecucin. Las propiedades AllowAddNes, AllowDelete y AllowUpdate nos indican si en tiempo de ejecucin se va a permitir aadir, eliminar o actualizar respectivamente el registro de la cuadrcula. La propiedad que establece el enlace con el correspondiente control data es, al igual que en el resto de controles enlazados DataSource. Sin embargo, no presenta la propiedad DataField ya que cuando utilices una cuadrcula es para mostrar un conjunto de registros, que seguramente tendrn ms de un campo.

CONSULTAS EN SQL
Cuando quieras mostrar informacin que provenga de ms de una tabla, no tienes ms remedio que utilizar el lenguaje SQL para establecer la correspondiente consulta en la propiedad RecordSource de un control data. SQL es un lenguaje que pretende ser estndar en el acceso a bases de datos relacionales, de forma que independientemente del origen de la informacin, puedas acceder a ella a travs de instrucciones SQL.

Vous aimerez peut-être aussi