Tablas Fox en la Web

Por Alberto Rodríguez
© Copyrights 1996 by FoxPress, All rights reserved
FoxPress, Septiembre 1996)

El Fuente del ejemplo en
www.fpress.com

Si dijera que el interés por Internet y las Intranet es verdaderamente desmesurado no estaría descubriendo nada nuevo. Si en un primer momento uno suele quedar deslumbrado y empieza a ver las múltiples posibilidades que se abren, el siguiente paso es pensar cómo se implementa todo eso.

Tal vez uno de los primeros pasos que están dando muchas empresas es crear Intranets y la primera obligación es el deber de usar el protocolo TCP/IP.

El siguiente paso -según los intereses- suele ser el montar un servidor HTTP. Si uno tiene su servidor en un NT Server puede incorporar de forma gratuita el MS Internet Information Server (en la versión 4.0 del NT Server ya viene incorporado y su instalación es optativa).

Teniendo nuestro servidor Web instalado para la red local (Intranet) y -si sabemos la dirección IP que nuestro servidor de acceso a Internet nos da cada vez que llamamos- también para Internet, en el siguiente paso es donde empiezan las dudas: ¿Cómo hago para que los datos de los catálogos de mis bases de datos estén accesibles en la Intranet y en la Internet? Las páginas HTML son muy bonitas pero son estáticas, ¿cómo hago para que mis datos se me muestren dinámicamente en las páginas HTML?

En este artículo nos proponemos explicar cómo hacer eso.

Para el ejemplo que vamos a hacer requeriremos:

Antes de seguir es importante reseñar que el driver que se debe usar es el de Visual FoxPro, no los de FoxPro 2.x. Este driver no venía con la versión VFP 3.0, la primera que salió al mercado.

De todos modos, si no se tiene ese driver, Microsoft lo ha dejado en www.microsoft.com/vfoxpro.

Conceptualmente, el acceso a las bases de datos se realiza por el Internet Information Server tal y como se muestra en el diagrama siguiente.

El Web browser, mediante una URL, solicita información a un servidor Internet usando el protocolo HTTP. El servidor Internet responde con el documento de esa URL y con formato HTML. A este documento popularmente se le llama "página Web".

Cuando lo que se quiere no es una página estática sino que se nos muestren datos sacados de una Base de Datos se pueden usar diversos medios. Los medios más conocidos son CGI, ISAPI, OLEISAPI u ODBC.

En nuestro caso, y por ser la forma más sencilla, usaremos ODBC con un componente del Internet Information Server llamado Internet Database Connector. Que en realidad es una ISAPI DLL llamada Httpodbc.dll, y que usa ODBC para extraer datos de las Bases de Datos.

La siguiente ilustración, muestra de una forma un poco más desglosada los componentes que participan en una conexión a una Base de Datos desde el Internet Information Server.

Httpodbc.dll, a su vez, usa dos tipos de archivos para controlar cómo se accede a la base de datos y cómo debe ser construida la página Web resultante. Estos archivos tienen las extensiones .idc y .htx.

El archivo .idc contiene básicamente:

La ventaja que tiene Visual FoxPro es que soporta ODBC y que dentro de los drivers para ODBC, el de Visual FoxPro es del tipo Single-Tier y por tanto no es necesario que esté cargado el Fox para responder a las consultas

La diferencia entre los drivers Single-Tier y Multiple-Tier es que los primeros traducen las ordenes ANSI SQL en largas cadenas de instrucciones de bajo nivel que operan directamente sobre los archivos que constituyen la tabla. Por su parte, los Multiple-Tier dialogan con el Servidor de datos que es el que se encarga de devolver los datos que el driver solicita. (por eso en el gráfico es diferente la situación de Visual FoxPro frente a la del SQL Server).

Los ficheros .IDC (Internet Database Conector)

Un ejemplo de archivo .IDC sería un archivo tipo texto con lo siguiente escrito:

Datasource: tastrade2
Username:
Template: midbf.htx
SQLStatement:+SELECT contact_name,; address FROM CUSTOMER

Los campos imprescindibles para un archivo .IDC son:

Campo Descripción

Datasource Nombre del origen de datos (datasource) que hemos creado previamente en el administrador de ODBC.

Template El nombre del archivo tipo HTML que devuelve los datos solicitados a la Base de Datos y que sirve de plantilla. Por convención estos archivos usan la extensión .htx.

SQLStatement La orden SQL para ejecutar. La orden SQL puede contener parámetros que deben ser cerrados dentro del símbolo de tanto por ciento (%). La orden SQL puede ocupar múltiples líneas en el archivo .IDC. Cada línea de una misma orden .SQL debe empezar con el símbolo (+).

Los campos accesorios para un archivo.IDC son:

Campo Descripción

DefaultParameters = param=value

Valor por defecto de los parámetros que será usado por el Internet Database Connector en caso de que el cliente no especifique ninguno.

Expires Número de segundos de espera antes de refrescar una página. Si se vuelve a hacer una petición de datos que es igual que la anterior se usan los datos del caché sin necesidad de usar una página nueva. Expires es útil cuando se quiere forzar un requery de la base de datos después de un cierto periodo de tiempo.

MaxFieldSize El máximo espacio de buffer permitido por httpodbc.dll para cada campo. Cualquier carácter detrás de esto será truncado. El valor por defecto es 8192 bytes.

MaxRecords Máximo número de registros que httpodbc.dll devolverá en cualquier consulta. No hay valor máximo por defecto. Por tanto se pueden devolver hasta 4 millones de registros.

Password La clave que corresponde al nombre del usuario.

RequiredParameters

El nombre de los parámetros, si existen, que Httpodbc.dll debe asegurar que se pasan desde el cliente; de otra forma, devolverá un error. Los nombres de los parámetros se separan con comas.

Username Un nombre de usuario válido para el origen de datos. NOTA: Si se usa Microsoft SQL Server con la opción integrada de seguridad, los campos del usuario y password del archivo .idc son ignorados.

Extensiones del HTML. Archivos (.htx)

Este tipo de archivo viene a ser una plantilla que incorpora una serie de órdenes que permite construir el documento HTML

<%begindetail%> y <%enddetail%> indican el principio y el final del lugar en el que se van a incorporar los datos de salida de la Base de Datos. Dentro de esta sección, los nombres de cada uno de los campos se delimitan con <% y %> que se usan para marcar la posición de los datos devueltos por la consulta. Por ejemplo:

<%begindetail%>
<%nombre%>: <%edad%>
<%enddetail%>

que listará las columnas nombre y edad. NOTA: Si no hay registros devueltos desde la consulta, la sección <%begindetail%> será saltada.

<%if%>..<%else%>..<%endif%>

También se pueden incluir condiciones lógicas con órdenes del tipo if-then-else para controlar como se construyen las páginas Web. Por ejemplo, un uso bastante común es insertar una condición que deberá ser mostrada si no existe ningún dato en la tabla. Algo como "Lo siento, no hay ningún dato sobre ese tema". Sobre este asunto hay muchas más posibilidades pero nos remitimos a la documentación.

Y ahora, empecemos nuestro ejemplo paso a paso

1.- En el Panel de Control, haz clic en el icono del ODBC

2.- En la ventana de diálogo del origen de datos (Data Source), pulsa el botón del System DSN. Esto es bastante importante porque el Internet Database Conector sólo trabaja con System DSN.

3.- En la ventana de diálogo del System DSN, pulsa en el botón Añadir para mostrar la ventana de Añadir Orígenes de Datos.

4.- En la ventana de añadir Orígenes de Datos, selecciona el driver de Microsoft Visual FoxPro y pulsa en OK.

5.- Entra la siguiente información en la ventana de configuración del ODBC:

- Data Source name: Tastrade2

- Deja marcada la opción de la Base de Datos (DBC) de Visual FoxPro

- Path: señala el path para el archivo Tastrade.dbc. (Por defecto, tastrade se encuentra en el directorio vfp\samples\mainsamp\data).

6.- Pulsa el botón OK. Fíjate que en la ventana del System Data Sources se muesta el nombre del Data Source que se ha creado. Pulsa en el botón Cerrar.

7.- Se muestra la ventana de diálogo del origen de datos. Pulsar en el botón Cerrar para salir de esta ventana.

En este ejemplo se van a situar todos los archivos en el directorio PRUEBAS y el nombre del Servidor es Computadora. Puedes, sin embargo, situar tu archivo HTML en el directorio raiz del servidor (wwwroot), y los archivos HTX e IDC en el directorio de scripts del Servidor. Si escojes no crear un directorio llamado Pruebas, puedes saltarte los pasos 1 a 5.

1.- Inicia el MS Internet Service Manager

2.- Haz doble clic en el servicio WWW. Fíjate que nos mostrará la ventana con las propiedades del Servicio.

3.- En la ventana del Servicio de propiedades del WWW, pulsa en la pestaña Directorios.

4.- Selecciona el directorio C:\PRUEBAS y haz clic en el botón Editar Propiedades.

5.- En la ventana de propiedades, selecciona la casilla de verificación Execute, que permitirá a los usuarios ejecutar la consulta.

6.- En el directorios C:\PRUEBAS, o en el directorio de los scripts, crea un archivo de texto llamado midbf.htx. Este archivo es una plantilla en lenguaje HTML que recibirá la información que sea devuelta desde la consulta. Copia la siguiente información en el archivo:

<HTML>

<HEAD>

<TITLE>

HTTP Ejemplo ODBC

</TITLE>

</HEAD>

<BODY BGCOLOR="FFFFFF">

<TABLE>

<TR>

<TD></TD>

<TD>

<HR>

<FONT SIZE=2>

<CENTER>

<P>

<!--En este ejemplo, la información se muestra en una tabla-- >

<TABLE BORDER>

<TR>

<TH>

<B>

Nombre del Contacto:

</B>

</TH>

<TH><B>Dirección:</B></TH>

</TR>

<%begindetail%>

<TR><TD><%contact_name%></TD><TD><%address%></TD></TR>

<%enddetail%>

<P>

</TABLE>

</CENTER>

<HR>

</FONT>

</TD>

</TR>

</TABLE>

</BODY>

</HTML>

7. Crea un archivo de texto llamado midbf.idc en el directorio C:\PRUEBAS, o en directorio de scripts. Este archivo contiene información acerca del System DSN, el usuario, el archivo HTX usado como plantilla, y la orden SQL SELECT. Por ejemplo:

Datasource: tastrade2

Username:

Template: midbf.htx

SQLStatement:+SELECT contact_name,; address FROM CUSTOMER

La página HTML llamada mipagina.htm

1. Esta página es la que tiene que realizar la consulta y realizar la llmada al fichero .IDC. Por tanto, habrá que añadir la siguiente información:

<P>

<LI><A HREF="HTTP://computadora/ pruebas/mydbf.idc?">HTTP ODBC Ejemplo</A>

<P>

Esto creará un link al archivo IDC.

Para probar esta configuración, carga tu examinador de Web y escribe la siguiente URL, que cargará la página principal de tu Servidor Computadora, o escribe la URL de la página HTML que has modificado.

http://computadora/mipagina.htm

Fíjate que la página contiene un hyperlink para el ejemplo ODBC. Click "HTTP Ejemplo ODBC" y se mostrará la información de la tablas Customer de la Base de Datos del Tastrade.

Y no hay nada más. Aunque al principio el tema es de una gran dificultad aparente, luego es verdaderamiente sencillo.

Los más exigentes ya ven que este sistema se limita a las posibilidades de las órdenes SQL y al driver ODBC. Los medios con los que se realiza este ejemplo no nos permitirían mostrar dentro de un examinador Web toda una aplicación Fox. El camino para eso es OLE, OLEISAPI y los servidores OLE ¡síguele la pista!

Alberto Rodriguez es socio de Microfox y se puede entrarn en contacto con él en alb@fpress.com