Introducción al uso de OLE en Access 7.0

Id. de artículo: 550431 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E10432
Expandir todo | Contraer todo

Resumen

Este artículo incluye información general sobre el uso de OLE en Access 7.0.

Más información

La tecnología Ole es una funcionalidad a tener en cuenta si se están desarrollando soluciones con Microsoft Access.

Una primera aproximación nos podría llevar a la siguiente pregunta:
¿Por qué OLE es importante para desarrollar aplicaciones con Microsoft Access?
OLE lo podemos definir como un conjunto de servicios software que integrarán información de diferentes aplicaciones basadas en Windows.

Los servicios OLE para aplicaciones Desktop incluyen:
  1. Incrustar y Vincular objetos.
  2. Edición Visual o en el sitio.
  3. Operaciones de soltar y arrastrar.
  4. Automatización de aplicaciones cruzadas.
  5. Controles OLE.
OLE ayuda a los desarrolladores y usuarios de igual manera, rompiendo las barreras que hay entre las aplicaciones y haciendo disponible la funcionalidad, la cual previamente requería un esfuerzo de tiempo en codificación y mantenimiento de programas.

La siguiente lista nos muestra las características de OLE que son soportadas en Microsoft Access:
  1. Almacenamiento de objetos OLE.
  2. Operaciones de arrastrar y soltar.
  3. Controles OLE.
  4. Cliente OLE.
  5. Servidor OLE.


ALMACENANDO OBJETOS OLE

Para proporcionar a los usuarios la funcionalidad de almacenar cualquier tipo de datos, un desarrollador puede añadir un campo cuyo tipo de datos es de tipo Objeto OLE. Un objeto puede ser incrustado en una tabla.

Los objetos enlazados son aquellos que residen fuera de Microsoft Access y pueden ser actualizados de manera independientemente a la base de datos. Este tipo de objetos son gestionados no por la base de datos sino por la aplicación a la cual están vinculados.

Los objetos embebidos, por el contrario, pueden residir completamente en la base de datos y son gestionados por la propia base de datos. En general, los objetos enlazados están mejor diseñados para aquellos tipos de datos que cambian muy a menudo. Además, por otro lado, los objetos incrustados son para aquellas situaciones en las cuales hay que tener muy en cuenta la portabilidad.

Un usuario de Microsoft Visual Basic para Aplicaciones puede incrustar documentos creados en otras aplicaciones en un campo OLE. Después de que han sido incrustados, haciendo doble-clic en él, siempre y cuando objeto permite que éstos sean editados usando la aplicación de la cual son originarios.

Por defecto, los objetos son editados "en el sitio ", es decir, en otras palabras, Microsoft Access permanece visible y lo que cambia son los menús y las barras de herramientas, mostrándose aquellas que pertenecen al entorno en el que el objeto se creó.

Por el contrario, los objetos vinculados son editados en una ventana por separado y, dependiendo de las necesidades que se tengan, se puede mostrar un icono o una copia de la imagen.

Microsoft Access proporciona una variedad de modos basado en las propiedades, de forma que el desarrollador pueda controlar el comportamiento de los objetos OLE en un formulario

Una cuestión importante sobre los objetos OLE y los formularios de Microsoft Access para Windows 95 es a cerca de las imágenes. Muchos desarrolladores usaban anteriormente objetos OLE como imágenes en los formularios. Ahora existe un nuevo tipo de dato en Microsoft Access para Windows 95, denominado Imagen. Una Imagen es útil para mostrar gráficos o imágenes los cuales no se van a modificar. Los objetos OLE son modificables por definición.



OPERACIONES DE ARRASTRAR Y SOLTAR

"Arrastrar y soltar" se presenta como una muy intuitiva funcionalidad para usuarios de entornos gráficos.

"Cortar y Pegar", podría ser familiar para aquellos otros usuarios, pero todo el mundo sabe que para mover algo, se selecciona y se arrastra donde se quiera llevar.

La capacidad de Edición con "arrastrar y soltar", es una gran posibilidad en las aplicaciones de Office. Existen varios modos de edición dentro de lo que hemos denominado "arrastrar y soltar": desde la simple copia y pegado de información sin ningún tipo de formato, hasta pegar información compleja con formato, el acceso directo y muchas más características.

La características de edición de arrastrar y soltar no se implementa normalmente en las soluciones desarrolladas por los usuarios; pero los desarrolladores deben ser conscientes de las posibilidades que OLE proporciona a través de Microsoft Access. Aquí tenemos unos pequeños ejemplos:
  1. Arrastrar una selección: Por ejemplo, arrastrar un subconjunto de campos de Access a Word. Por defecto, Word copia los datos de Access a Word usando un formato de tabla en lugar de copiar los datos sin ningún tipo de formato.
  2. Arrastrar una lista de una hoja de Excel a una ventana de base de datos de Microsoft Access, automáticamente cuando Access detecta que le llegan esos datos comienza a realizar una importación de los datos a una tabla de Microsoft Access.
  3. Arrastrar un objeto de Microsoft Access al escritorio de Windows 95, esta operación automáticamente nos crea un acceso directo, de manera que cuando se realiza doble-clic sobre dicho acceso directo se abrirá Access abriendo el objeto que habíamos mencionado antes, un informe, una tabla etc. Los desarrolladores pueden implementar esta capacidad para dar a los usuarios la opción de poder tener puntos de entradas para sus aplicaciones sin tener que estar trabajando con el interfaz de Microsoft Access.


CONTROLES OLE

Una de las características OLE más importantes de Microsoft Access para Windows 95 son los denominados controles OLE o controles personalizados.

Los controles OLE de 32 bits son componentes reutilizables, los cuales son suministrados por Microsoft y terceras compañías. Dichos controles pueden hacer tu aplicación mucho más interesante y atractiva. La principal característica de esta funcionalidad es que el coste de mantenimiento para estos objetos es nulo.

Además, existen otros beneficios adicionales:
  1. Los controles OLE están testeados y depurados cuando estos están disponibles para su uso.
  2. Los desarrolladores pueden obtener una amplia variedad de controles procedentes de diferentes vendedores.
  3. Están realizados de acuerdo a la tecnología de 32 bits, por lo que su rendimiento es mayor.
  4. Los controles OLE son programados como las propiedades de las hojas de datos, con eventos, y métodos, poseen el mismo concepto de control que otros controles en Microsoft Access.
  5. Pueden ser compartidos entre diferentes entornos de desarrollo como por ejemplo Visual Basic, Microsoft Access, etc.
Existen una amplia variedad de controles OLE. Microsoft Access proporciona el control Calendar el cual permite a los usuarios ver y seleccionar fechas de manera gráfica. A su vez Microsoft Access Developert Toolkit, proporciona 12 controles OLE adicionales, entre ellos esta Data Outline Control, Barra de Herramientas, Barra de estado y algunos más. Todos estos controles se pueden distribuir como parte de la aplicación desarrollada por el usuario.

Existe un gran numero de controles OLE procedentes de terceras compañías los cuales permiten interactuar con dispositivos externos (controles multimedia).

Actualmente se puede encontrar una lista de vendedores de controles OLE específicos para Microsoft Access en la siguiente dirección de Internet:
http://www.microsoft.com/accessdev/


Intente este ejemplo :
Para probar un control OLE, sigamos los pasos siguientes. Se creará un nuevo formulario basado en una tabla, la cual contiene un campo de tipo fecha. Estando en modo diseño en el formulario, se debe arrastrar el campo de tipo fecha de la lista de campos al formulario, para crear un cuadro de texto en el mencionado formulario. A continuación, se va a añadir el control Calendar a nuestra caja de herramientas. Para ello, se hará clic sobre el botón derecho del ratón y posteriormente se seleccionará el menú personalizar. Seleccionaremos en Categorías Controles Personalizados y posteriormente arrastraremos el control Calendar a nuestra barra de herramientas.

A continuación, se pulsará, pero no se arrastrará, el control Calendar en la barra de herramienta; posteriormente, se pulsará y arrastrará al formulario, el campo de tipo fecha de la lista de campos.
El control Calendar se creará en el formulario, pero ligado al campo de tipo fecha de manera que podemos actualizar el campo en la tabla de dos maneras o a través del cuadro de texto o a través del control Calendar. Se puede ir un poco más allá, y se puede ver a través del examinador de objetos las propiedades y métodos que proporciona el control Calendar, para ello se tiene que ejecutar el menú Examinador de Objetos, desde el modulo de un formulario.



CLIENTE DE AUTOMATIZACIÓN OLE

La posibilidad de Microsoft Access de controlar de manera remota otra aplicación de Windows a través de Automatización OLE no es nueva. Para Microsoft Access 95, Microsoft Access funcionaba como cliente de Automatización OLE en la versión previa de Access.

Dos nuevas características en Microsoft Access 95, son el examinador de Objetos, descrito anteriormente y el uso de Visual Basic para aplicaciones como lenguaje para controlar remotamente.

En el siguiente ejemplo de código, veremos cómo se abre una plantilla de Microsoft Word y se recogen datos de una tabla de Microsoft Access y los sitúa en un documento.

   Dim oWord as Object

   Public Sub Product_Sheet(frm As Form)

      Dim product As String, quote As String, Country As String, _
      Family As String

      'Instanciamos el objeto de, oWord, como un objeto de WordBasic 

      Set oWord = CreateObject("Word.Basic")

      'Ahora oWord existe, podemos manipularlo usando VBA 

      With oWord

         .appmaximize
         .filenew "c:\program files\access 95 developer demo\ps.dot"
         .viewpage

      End With

      'With/End With es una nueva construcción para Microsoft Access 
      '95!

      'Ponemos algunos data de un formulario abierto 

      Product = frm![Bean Name]
      Quote   = frm!Description
      Country = frm!Country
      Family  = frm!Family

      'Sitúa los datos en el documento Word y lo visualiza

      With oWord

         .EditGoto "Product_Title"
         .Insert product
         .EditGoto "Product"
         .Insert product
         .EditGoto "Product2"
         .Insert product
         .EditGoto "Quote"
         .Insert quote
         .EditGoto "Country"
         .Insert Country
         .EditGoto "Family"
         .Insert Family
         .FilePrintPreview

      End With

   End Sub

Esta técnica se puede usar para controlar cualquier aplicación que pueda funcionar como Servidora OLE de Automatización. En el ejemplo de arriba, los datos procedentes de Microsoft Access son formateados en Microsoft Word. Esta técnica también se puede usar para acceder al análisis y las capacidades de Gráficos de Microsoft Excel, la gestión de proyectos de Microsoft Project, presentaciones en Microsoft Power Point y en cualquier otra aplicación.

Se puede encontrar información adicional acercar de Automatización OLE, incluyendo importantes técnicas para optimizar estas situaciones. Pueden hallarse en artículos como "A Primer on Early Binding" y "Your Unofficial Guide to Using OLE Automation con Microsoft Office y Microsoft BackOffice". Ambos artículos pueden ser hallados en el servidor Web de Microsoft en:
http://www.microsoft.com/accessdev/


SERVIDORES DE AUTOMATIZACIÓN OLE

En Microsoft Access 95, existe una nueva característica que permitirá trabajar como Servidor de Automatización OLE. En otras palabras, Access puede funcionar como objeto de un programa que está trabajando como cliente de Automatización OLE. Debido a ésta característica Microsoft Access muestra su funcionalidad a los clientes de automatización OLE. Una típica situación podría ser tener a Visual Basic o Microsoft Excel usando automatización OLE para poder trabajar con los informes en Microsoft Access.

El ejemplo que viene a continuación muestra esta característica desde Microsoft Excel.

La primera subrutina obtiene una lista de los informes almacenados en una base de datos de Microsoft Access, y sitúa dicha lista en un array. La segunda subrutina sirve para imprimir el informe seleccionado por el usuario.

   Dim objAccess As Object

   Sub GetAccessReportList()

   'Nota: Para usar el enlace temprano, como hacemos aquí, tenemos 
   '      que tener una referencia en nuestro proyecto, seleccionando 
   '      Herramientas / Referencias 

   'Asumimos que Microsoft Access está abierto 

      Set objAccess = GetObject(, "Access.Application.7")

      Dim rpt As Document
      Dim rptCollection As Documents
      Dim rgReports() As String
      Dim iReports As Integer

      Set rptCollection = _
         objAccess.dbengine(0)(0).containers("Reports").Documents

      'Establecemos el tamaño del array basándonos en el numero de 
      'informes en la colección.

      ReDim rgReports(rptCollection.Count)

      iReports = 0

      For Each rpt In rptCollection

        iReports = iReports + 1
        'Put the report name in the array
        rgReports(iReports) = rpt.Name

      Next

      'Primero limpiamos la lista, para no repetir la misma lista.

      Sheets("EIS Report Selector").ListBoxes.RemoveAllItems

      'Añadimos los elementos a la list box procedentes del array
      For iReports = 1 To rptCollection.Count

         Sheets("EIS Report Selector").ListBoxes(1).AddItem _
            rgReports(iReports)

      Next

   End Sub

   Sub PrintReport()
   'Esta subrutina imprime el informe

      objAccess.DoCmd.OpenReport 
      objAccess.DBEngine(0)(0).Containers("Reports")._
         Documents(Sheets(1).ListBoxes(1).ListIndex - 1).Name, 0

      AppActivate "Microsoft Access"

   End Sub

Al usar el examinador de objetos para Microsoft Access desde un Cliente de Automatización OLE, como Microsoft Excel, se podrá encontrar que Microsoft Access proporciona 3 librerías para trabajar con ellas: Microsoft Access, Visual Basic para Aplicaciones y DAO. Esto implica que se puede programar con objetos contra el motor de base de datos de Microsoft Access. Debido a esto podemos tener en nuestra aplicación código OLE que nos permita trabajar con los objetos más apropiados, proporcionados por los servidores de automatización OLE. Esto nos evitará tener que cargar aplicaciones enteras cuya funcionalidad la podemos tener con el código anteriormente mencionado.



CONCLUSIÓN

Microsoft Access se apoya mucho de su potencia como plataforma para desarrollar soluciones para el uso avanzado de tecnología OLE, incluyendo almacenamiento OLE, operaciones de arrastra y soltar, controles OLE y Automatización OLE. El uso de OLE de manera eficiente permite a los desarrolladores obtener completas y elegantes soluciones con un coste relativamente bajo en desarrollo y mantenimiento.

PRECAUCIÓN: CUALQUIER UTILIZACIÓN POR SU PARTE DEL CÓDIGO O MACRO INCLUIDO EN ESTE ARTÍCULO SE HARÁ A SU CUENTA Y RIESGO. Microsoft facilita este código o macro "tal cual" sin garantía de ningún tipo, ya sea explícita o implícita, incluyendo expresamente en tal exención de responsabilidad y, a efectos meramente enunciativos y no limitativos, las garantías legales mercantiles implícitas y/o la adecuación a un propósito o finalidad en particular.

Propiedades

Id. de artículo: 550431 - Última revisión: miércoles, 05 de noviembre de 1997 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Access 95 Standard Edition
Palabras clave: 
access información ole KB550431
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com