Buscador

Ejemplo de uso de un Data Source Object (DSO) (V)

El fichero contiene tres campos: Nombre, Apellidos e E_Mail y cuatro registros de datos. Para hacer
referencia a ese fichero, utilizaremos el Código fuente 28.
<HTML>
<HEAD>
<TITLE>Acceso a Datos de un fichero separado por comas</TITLE>
</HEAD>
<BODY>
<Object ID="OrigenDeDatos" width=0 height=0
Classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
<Param Name="DataURL" Value="Direcciones.txt">
<Param Name="UseHeader" Value="true">
</Object>
<TABLE BORDER=1 bgcolor=Lime DATASRC="#OrigenDeDatos">
<THEAD>
<TR><TH>Nombre<TH>Apellidos<TH>E_Mail</TR> </TR>
<TBODY>
<TR>
<TD><SPAN DATAFLD=Nombre></SPAN></TD>
<TD><SPAN DATAFLD=Apellidos></SPAN></TD>
<TD><SPAN DATAFLD=E_Mail></SPAN></TD></TR></TBODY></TABLE>
</BODY>
</HTML>
Código fuente 28

Ejemplo de uso de un Data Source Object (DSO) (IV)

Veamos cómo funciona a través de un ejemplo: un fichero de texto delimitado por comas. Hemos
preparado un fichero llamado Direcciones.txt que contiene una cabecera con campos, y datos
separados por comas, en columnas delimitadas por un retorno de carro.
Nombre:String,Apellidos:String,E_Mail:String
Leoncio,León,lleon@cartoons.com
Juancho,Lagarto,ljuancho@cartoons.com
Magilla,Gorila,gmagilla@cartoons.com
Silvestre,Gato,gsilvestre@cartoons.com
Código fuente 27

Ejemplo de uso de un Data Source Object (DSO) (III)

Esta sería una de las formas de acceder a un componente mediante código de script. El otro método de
acceso consiste en hacer una referencia al CLSID del objeto usando una etiqueta <OBJECT>, que
admite un atributo CLSID, y la posibilidad de asignación de parámetros adicionales mediante etiquetas
<PARAM> contenidas en ella; en realidad, tantas como parámetros queramos asignar.

Ejemplo de uso de un Data Source Object (DSO) (II)

Observamos que el nombre con que se registra el DSO en el sistema es –en realidad- Tabular Data
Control- (Control de datos de tipo tabular), y que tiene varias categorías registradas, que son los
subcomponentes operativos de los que hablábamos antes en el esquema de funcionamiento.
Si queremos conocer más acerca de los métodos, propiedades y eventos que soporta este objeto (lo que
denominamos su interfaz), cualquier herramienta que pueda hacer referencia a él desde un entorno de
desarrollo nos mostrará ese contenido, gracias a que en el momento de la generación del fichero físico
de ese componente, se añaden las interfaces estándar IUnknown e IDispatch que son paquetes de
funciones predeterminadas (construidas de acuerdo con el estándar DCOM) y pensadas para ofrecer al
programador que los maneja una especie de menú del componente (la lista de todo lo que el
componente es capaz de hacer).
Por ejemplo, podemos usar Visual Basic o una herramienta de Office para visualizar una interfaz
utilizando el Examinador de Objetos, una vez que hemos referenciado el Tabular Data Control.
Incluso desde Visual Interdev, es posible crear en la ventana de código una referencia al objeto
utilizando su ProgID y automáticamente (mediante vinculación tardía), la herramienta utilizará la interfaz IDispatch para mostrarnos el conjunto de propiedades cuando el proceso de desarrollo lo
requiera. En este caso, leeremos del registro la cadena que corresponde a su ProgID de objeto, que es:
TDCCtl.TDCCtl.1. Una vez que sabemos este dato, el siguiente código fuente editado sobre Visual
Interdev nos muestra la interfaz, como se ve en la figura adjunta:

Ejemplo de uso de un Data Source Object (DSO) (I)

Aunque una página web puede hacer referencia a este objeto de varias formas (mediante los distintos
lenguajes de script, cada uno con su sintaxis, y mediante etiquetas), vamos a usar un ejemplo en el que
haremos referencia al DSO mediante etiquetas. Cuando se enlaza un objeto así, es preciso conocer el
identificador de clase de sistema (el valor de su CLSID) que distingue a cada componente ActiveX, o
disponer de un editor HTML que permita incrustar estos objetos mediante interfaces visuales y que
realice por nosotros esa labor.
Para aclarar siquiera superficialmente el funcionamiento de esta tecnología a los lectores no muy
avezados vamos a incluir una breve explicación del mecanismo operativo: cuando una herramienta de
desarrollo crea un componente ActiveX (EXE o DLL), puede convertirlo en un servicio del sistema
operativo registrándolo. El proceso de registro consiste en asignar a ese componente un identificador único y anotar esos datos y otros complementarios en el registro de Windows para que cualquier
aplicación que lo requiera pueda utilizarlo. Los componentes, reciben –de hecho- más de un
identificador, pero los dos más importantes son su CLSID (un número de 128 bits, que no puede
repetirse nunca) y su ProgID, una cadena de caracteres mediante la que se puede hacer referencia al
componente desde entornos de desarrollo y producción, sin tener que recordar o buscar el número del
CLSID.
En al documentación se nos indica que el número de CLSID del componente de datos es el valor
hexadecimal {333C7BC4-460F-11D0-BC04-0080C7055A83}. Si entonces abrimos el editor del
Registro del Sistema y buscamos ese número, aparecerá una entrada como la que vemos en la Figura
23.

Modelo de funcionamiento de los objetos de enlace de datos.

A continuación se muestra un gráfico con el esquema de funcionamiento de un objeto DSO. El objeto
DSO crea un caché en la máquina del cliente para almacenar los datos y mantiene un puntero de
registro con el registro activo. Utiliza los mecanismos provistos por el estándar OLE-DB para el
acceso a los datos, y mediante un Agente de Enlace de datos (DataBinding Agent) y un Repetidor de
datos en Tablas (dos de las categorías implementadas por el componente DSO), se encargarán de
preparar dinámicamente la información.

Datos Enlazados

El problema del tratamiento de datos, también se abordó en la definición del estándar HTML 4.0. Y
una de las posibilidades que se sugirieron fue la de que los navegadores permitieran el enlace de datos
a algunas etiquetas mediante algún mecanismo que permitiera mantener en memoria el equivalente a
un Recordset.
Operando de esta forma, cuando se carga el documento, se produce inmediatamente la conexión y
lectura de los datos enlazados. Un caso típico es el de un listado formateado mediante una tabla. La
etiqueta <TABLE> puede ser enlazada a un origen de datos con este propósito y se genera
automáticamente una fila en la tabla, por cada fila del conjunto de registros leído.
Una vez leída toda la información, es incluso posible realizar operaciones con los datos, como
filtrarlos por una condición o establecer criterios de ordenación, sin que se requieran posteriores
consultas al servidor. Otro uso común es el de presentar los datos enlazados a etiquetas del tipo
<INPUT> y permitir la navegación por los registros, incluso admitiendo que el usuario realice
cambios en ellos, y los envíe posteriormente al servidor.

Naturalmente, existe un elemento encargado de esta tarea de comunicación con el servidor y es el
objeto Data Source Object. Se trata de un control ActiveX o un applet de Java que enlaza con el
origen de datos. A partir de la versión 4.0 de Internet Explorer, Microsoft incluyó dos objetos para los
enlaces de datos, dependiendo de si se trataba orígenes de datos en formato delimitado por comas, u
orígenes de datos tipo ODBC (SQL-Server, Oracle, etc.).

Descarga dinámica de tipos de letra (Font download)

Cuando una etiqueta contiene el atributo de estilo @font-face el tipo correspondiente se descarga, se
instala automáticamente, y se descarta una vez que la página es abandonada por el navegador. Observe
el lector éste comportamiento, a través del Código fuente 26, tomado de la ayuda referente a DHTML
en el MSDN de Microsoft.
<HTML><HEAD>
<STYLE>@font-face {font-family:comic;0
src:url(http://abc.domain.com/fonts/comicbold.eot);}
</STYLE>
</HEAD>
<BODY>
<p style="font-family:comic;font-size:18pt">this line uses the @font-face style
element to display this text using the Comic Sans MS font in 18-point size and
bold.
<p>
</BODY></HTML>
Código fuente 26
En el caso de que la letra indicada no exista, el navegador conecta con la página
http://abc.domain.com/fonts/comicbold.eot para descargarla y mostrar su contenido formateado.

Filtros y Transiciones

Se trata de efectos visuales multimedia que pueden implementarse mediante propiedades de las Hojas
de Estilo en Cascada. Existe una lista de filtros disponibles, pero de momento sólo valen para la
versión de Internet Explorer 5.5. Su funcionamiento se basa en asociar a una etiqueta uno de esos
filtros utilizando el atributo filter. En el estado actual de las cosas, se considera un elemento añadido a
la última versión del navegador, pero no tiene la categoría de estándar.

Posicionamiento Dinámico (II)

Por ejemplo, si queremos que un elemento ocupe una posición absoluta en unas coordenadas de
pantalla, declaramos el valor de estilo position como absolute, y usamos top y left para indicar las
coordenadas. Si además de situar el elemento en una posición concreta queremos que se sitúe por
detrás o por delante de los otros elementos con los que pueda compartir una ubicación, daremos un
valor a z-index, para establecer el nivel de profundidad en el teórico eje de las Z (el que mira hacia el
espectador) dependiendo de la capa que queremos que ocupe.
En el ejemplo hemos situado la imagen “Horacio.gif” por detrás del texto de la página, indicando los
valores que se muestran en el Código fuente 25 en el atributo style de la etiqueta <IMG>:
<body>
<font color="Yellow">
<p>El texto aparece superpuesto a la imagen</p>
<p>¿Cómo decidirme entre XML, DNA y Java?</p>
<P>¡Ya sé!</P>
<P>¡Iré al Master Experto de Grupo EIDOS!</p>
</font>
<img style="position: absolute; top: 0; left: 0; z-index: -1;"
src="../../Horacio.gif" width="291" height="192" border="0" alt="">
</body>
</html>
Código fuente 25
Además de la ubicación absoluta y de las coordenadas, el valor –1 de z-index indica al navegador que
el objeto debe situarse en el nivel más profundo.