viernes, 4 de abril de 2014

Consulta a una base de datos Access con ASP


ASP y Access son muy amigos. Se hicieron uno para el otro. ASP significa Active Server Pages, oseas, páginas activas del lado del servidor y fue creado por MicroSoft. ASP es un lenguaje de programación para la web, pero solo funciona con bases de datos hechas en Access o SQL.

No pretendo enseñar aquí a programar en ASP, sino solo mostrarles algunas alternativas para su biblioteca. En ocasiones resulta que en pequeñas bibliotecas, llevan un registro de sus fondos en Microsoft Excel, por lo cual, pueden ser llevados estos registros a una base de datos a Microsoft Access y de allí, podemos consultarla vía web con ASP. 

Lo que está en Excel se puede importar a Access y viceversa. Solo tiene que seleccionar la opción "importar" de Access y seguir el asistente. Les mostraré paso a paso como hacer esto, hasta la elaboración de las consultas web con ASP.

Para todo esto se debe conocer algo de:

- Access
- Excel
- ASP
- IIS
- HTML

Vaya, vaya, se acomplejaron las cosas ahora. Trataré de ser lo más simple posible y además, todo está disponible en la internet.

Access nos servirá para la captura de los datos en lugar de Excel. ASP nos posibilitará las consultas web. IIS es el servidor de Microsoft que funciona para ASP y el HTML es para trabajar el formulario de búsqueda. Lo que a continuación explico servirá para el montaje de sus registros en una base Access y a la cual si se quiere, se le puede hacer una captura de datos, hecha en Visual Basic y que luego podemos consultar en nuestra red local o en una sola computadora o en Internet. 

Lo primero es lo primero, y lo primero es hacer la base de datos en Access. Para entender este proceso de creación de bases en Access, vea estos dos videos:



El proceso de creación de una base de datos es de suma importancia, pues aquí definimos todos los campos que va a tener nuestro sistema. Una vez creada la base, debemos conectarla, con el uso de una herramienta de Windows llamada ODBC y crear un DSN  (Data Source Name), osea, un nombre de origen de datos. ODBC viene de "Conectividad abierta a base de datos". (Open Data Base Conectivity).

Pasos:

1 - Copiamos la base de datos creada en una carpeta, que copiaremos en el disco duro. Una vez allí, ya no puede moverla a otra parte, pues al crear el DSN, el sistema lee siempre esa ubicación.    
2 -  Vamos a Panel de Control y seleccionamos el icono ODBS 32 bits.
3 - La ventana que se nos presenta, contiene,normalmente, 6 pestañas. La que debemos de seleccionar es System DSN o DSN del Sistema. En esta ventana, aparecerán las bases de datos ya instaladas.
4 - Pulsamos Agregar o Add y se nos presenta una pantalla donde se mostrarán los controladores o drivers de las bases de datos existentes. La ventana se llama Create New Data Source y en ella seleccionamos el controlador que necesitamos, en este caso, Microsoft Access Driver (*.mdb).
5 - Le damos Aceptar.
6 - Ahora nos muestra una ventana donde nos piden 3 datos datos, pero sólo 2 son indispensables, El nombre de la base de datos (Data Source Name) donde ingresamos el nombre de nuestra base de datos sin extensión. Luego debemos Seleccionar la base de datos y esto no es sino ir a la carpeta donde la copiamos.  Una vez ubicada la seleccionamos, y damos OK a todas las ventanas y cerramos el Panel de Control.

a  A continuación las imágenes de captura de los pasos:


Resumen:

Hemos creado nuestra base de datos *.mdb y la hemos alojado en una carpeta. Así mismo, hemos establecido la conexión ODBC correspondiente con nuestra base de datos.
Estamos listos para continuar con nuestro curso.

Ahora necesitamos activar IIS (Internet Information Server). El IIS es un programa servidor que, al igual que ODBC, viene incorporado en Windows. Esa aplicación es la encargada de hacer que nuestra base de datos se ejecute en un navegador de internet.

Pasos para activar el IIS:

1 - Nos vamos al panel de control nueva vez.
2 - Seleccionamos "Agregar o quitar programa"


3 - Nos vamos a la izquierda y escogemos el Botón "Agregar o quitar componentes de Windows".


4 - En la nueva ventana, seleccionamos "Servicios de Internet Information Server (IIS)



5 - Le da al botón Siguiente y siga el asistente. Casi siempre el sistema le pide el CD de Windows. Entre el CD de Windows y espere hasta que se cargue la aplicación.

Una vez hecho esto, se creará en su disco duro una nueva carpeta, llamada Inetpub.


Abra esta carpeta y relaciònese con ella, pues este es su servidor local.


La carpeta "wwwroot" es la carpeta donde se copiarán todas las páginas HTML y la otra denominada "Scripts" es donde van todos los códigos de ejecución. 

Sugerencia: para mejor control y comodidad, cambie la dirección DSN que creó al principio para la base de datos. Copie la capeta dentro de la carpeta "wwwroot". En esta sub carpeta, debería copiar todas las carpetas con sistemas de bases de datos. Allí dentro estarán las páginas HTML y los códigos ASP.

En la imagen siguiente, verás diversas bases ASP que he hecho en el pasado:


Ya casi estamos haciendo consulta a la base de datos. No se desespere.

Listando la base de datos.

Los códigos a emplear son HTML y ASP. LE sugiero que vea este curso de HTML en Youtube:
https://www.youtube.com/watch?v=cqMfPS8jPys

Si realmente desea dominar esto, tómese el tiempo de ver los videos recomendados.

Código para listar el contenido de la base de datos. El nombre de este archivo será LISTADO.ASP. Puede ser otro cualquiera, no importa. Este archivo lo vas crear con el Bloc de Notas de windows y lo guardas como... LISTADO.ASP en la carpeta que creaste y que guardaste dentro de "Inetpub / wwwroot". Esta base de ejemplo solo tiene 3 campos : Nombre, Apellido y Email. Donde el código dice "Conexion.Open "Correo", en lugar de Correo, vas a colocar el nombre del DSN que colocaste cuando hiciste la conexión DSN. Segundo, donde dice "Tabla.Open "Tabla1",Conexion", la palabra Tabla1, es el nombre que le asigna Access a todas sus tablas. Le puedes poner un nombre relacionado con la base de datos, al momneto de crearla, pero aquí en el código, debes colocar dicho nombre.

Nota: estos códigos yo los trabajo con los programas Edit Plus y Front Page

LISTADO.ASP

<%@ Language="VBScript" %>
<html>
<head>
<title>Listado de la Base de Datos</title>
</head>
<body>
<big><big><p>Listado de Cuentas de Correo</big></big> <br><br></p>
<div align="center"><center>
<table border="3" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="33%"><big>Nombre</big></td>
<td width="33%"><big>Apellido</big></td>
<td width="33%"><big>Email</big></td>
</tr>
<%
    Dim Conexion,Tabla
    Set Conexion=Server.CreateObject("adodb.connection")
    Set Tabla=Server.CreateObject("adodb.recordset")
    Conexion.Open "Correo"
    Tabla.Open "Tabla1",Conexion
    While Not Tabla.EOF
%>
<tr>
    <td width="33%">
<%=Tabla.Fields("Nombre")%></td>
    <td width="33%">
<%=Tabla.Fields("Apellido")%></td>
    <td width="33%"><ahref="mailto:
<%=Tabla.Fields("Email")%>"><%=Tabla.Fields("Email")%></a></td>
</tr>
<%
    Tabla.MoveNext
    Wend
%>
</table>
</center></div>
</body>
</html>



Captura de los datos: Altas.



Bien vamos ahora a capturar datos. Recuerda que debes copiar y pegar estos códigos con el bloc de notas de Windows y utilizar la opción Guardar como... para poder ponerle la extensión ASP. A este nuevo archivo de código le pondrás "INGRESO.ASP". Le puedes poner otro nombre, no importa. Solo debes recordarlos a la hora de ejecutarlos.

Código HTML para capturar la información.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY>

  <form method="Post" action="ingreso.asp">
  <p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b><font face="Arial" color="#CC3300">&nbsp;CAPTURA DE DATOS:</font></b></p>
   <TABLE BORDER=2 WIDTH=274 BGCOLOR=#FFCC99 height="128">
    <TR>
<TD> NOMBRE:&nbsp;&nbsp;   <input type="text" name="Dato1" size="20" WIDTH=30><BR>
    APELLIDO: <input type="text" name="Dato2" size="20" WIDTH=30><BR>
    E-MAIL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <input type="text" name="Dato3" size="20" WIDTH=30><BR>
    <input type="submit" value="Ingresar" name="B1">
    <input type="reset" value="Restablecer" name="B2"></TD>
    </TR>
    </TABLE>
</form>

 </BODY>


</HTML>

Código ASP que recibe los datos capturados en el formulario HTML.


Ingeso.ASP

<%@ LANGUAGE="VBSCRIPT" %>
<html>
<head>
<title>Ingreso de Datos</title>
</head>
<body>
<%
Dim Conexion,Tabla
Set Conexion = Server.CreateObject("ADODB.Connection")
Set Tabla = Server.CreateObject("ADODB.Recordset")
Dim Temp
Conexion.Open "Correo"
Tabla.Open "Tabla1",Conexion
Temp="Select * From Tabla1 Where UCase(Nombre)='" & UCase(Request("Dato1")) & "' And UCase(Apellido)='" & UCase(Request("Dato2")) & "' And UCase(Email)='" & UCase(Request("Dato3")) & "'"
Tabla.Open Temp,Conexion,2,3,1

If Tabla.BOF And Tabla.EOF Then
    Tabla.AddNew
    Tabla("Nombre") = Request("Dato1")
    Tabla("Apellido") = Request("Dato2")
    Tabla("Email") = Request("Dato3")
    Tabla.Update
%>
<p>Ingreso de datos completado</p>
<%
Else
    Response.Write "El registro ya existe"
End If

Tabla.Close
Conexion.Close
%>
</body>
</html>

Buscar Información.


Busca.HTML

Pasemos ahora al formulario para buscar información, así como el código ASP que lo ejecuta. El nombre del formulario HTML se llamará Busca.HTML o cualquier otro que se le antoje. Este hace llamada a la página ASP "buscar.ASP". Solo copie y pegue.


 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY bgcolor=#009999>

 <form method="Post" action="buscar.asp">

   NOMBRE: <input type="text" name="Criterio" size="33"><br>

<br>
   <input type="radio" value="V1" checked name="Tipo">Búsqueda Exacta
   <input type="radio" name="Tipo" value="V2">Búsqueda Simple<br>
<br>
&nbsp;<input type="submit" value="Buscar" name="boton1">
   <input type="reset" value="Restablecer" name="boton">

</form>

 </BODY>

</HTML>

Ahora el código ASP de la página "buscar.ASP"


--------------------------------------------------------------


buscar.ASP


<%@ Languaje="VBScript" %>
<html>

<head>
<title>Buscar datos</title>
</head>

<body>
<p><font face="Arial">Resultados obtenidos con <strong><%=Request("Criterio") %></strong></font></p>

<%
    Dim Conexion,Tabla

    Set Conexion=Server.CreateObject("adodb.connection")
    Set Tabla=Server.CreateObject("adodb.recordset")

    Dim Temp,Rango
    Rango=Request("Tipo")

    Conexion.Open "Correo"

    If Rango="1" Then
        Temp="Select * From Tabla1 Where UCase([Nombre])='" & UCase(Request("Criterio")) & "'"
    Else
        Temp="Select * From Tabla1 Where InStr(UCase([Nombre]),'" & UCase(Request("Criterio")) & "')>0"
    End If

    Tabla.Open Temp, Conexion

    If Tabla.BOF And Tabla.EOF Then
%>


<p><font face="Arial">No se ha encontrado ningún registro que reúna las condiciones del criterio <strong><%=Request("Criterio")%></strong> en la Base de Datos</font></p>

<%
Else
%>

<div align="center"><center>
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
    <td width="33%"><strong><font face="Arial">Nombres</font></strong></td>
    <td width="33%"><strong><font face="Arial">Apellidos</font></strong></td>
    <td width="33%"><strong><font face="Arial">Email</font></strong></td>
</tr>


<%    While Not Tabla.EOF%>
<tr>
    <td width="33%"><%=Tabla.Fields("Nombre")%></td>
    <td width="33%"><%=Tabla.Fields("Apellido")%></td>
    <td width="33%"><a href="mailto:<%=Tabla.Fields("Email")%>><%=Tabla.Fields("Email")%></a></td>
</tr>
<%
            Tabla.MoveNext
        Wend
Tabla.Close
Conexion.Close
End If
%>

</table>
</center></div>
</body>
</html>



Bien. Ahora solo nos falta el código para eliminar registro o dar de baja. Primero buscamos:


buscar.HTML

Este me llama a su vez al la págima ASP "preliminar.ASP".


 ----------------------------------------

<html>


<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Pagina nueva 2</title>
</head>

<body>

<form method="Post" action="preliminar.asp">
    Buscar Nombre: <input type="text" name="Criterio" size="41">
    <br>
    <input type="radio" value="V1" checked name="Tipo">Búsqueda Exacta 
    <input type="radio" name="Tipo" value="V2" Búsqueda Simple <br>
<br>
    <input type="submit" value="Buscar" name="boton1">
    <input type="reset" value="Restablecer" name="boton">
</form>

</body>



</html>


---------------------------------------------


El código preliminar.ASP


---------------------------------------------

<%@ Languaje="VBScript" %>
<html>
<head>
<title>Buscar datos</title>
</head>
<body>
<p><font face="Arial">Resultados obtenidos con <strong><%=Request("Criterio") %></strong></font></p>

<%
    Dim Conexion,Tabla

    Set Conexion=Server.CreateObject("adodb.connection")
    Set Tabla=Server.CreateObject("adodb.recordset")

    Dim Temp,Rango
    Rango=Request("Tipo")

    Conexion.Open "Correo"

    If Rango="1" Then
        Temp="Select * From Tabla1 Where UCase([Nombre])='" & UCase(Request("Criterio")) & "'"
    Else
        Temp="Select * From Tabla1 Where InStr(UCase([Nombre]),'" & UCase(Request("Criterio")) & "')>0"
    End If

    Tabla.Open Temp, Conexion

    If Tabla.BOF And Tabla.EOF Then
%>

<p><font face="Arial">No se ha encontrado ningún registro que reúna las condiciones del criterio <strong><%=Request("Criterio")%></strong> en la Base de Datos</font></p>

<%
Else
%>
<div align="center"><center>
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
    <td width="25%"><strong><font face="Arial">Nombres</font></strong></td>
    <td width="25%"><strong><font face="Arial">Apellidos</font></strong></td>
    <td width="25%"><strong><font face="Arial">Email</font></strong></td>
</tr>
<form method="Post" action="eliminar.asp">

<% While Not Tabla.EOF%>
<tr>
    <td width="25%"><input type="radio" name="Registro" value="<%=Tabla.Fields("codigo")%>"></td>
    <td width="25%"><%=Tabla.Fields("Nombre")%></td>
    <td width="25%"><%=Tabla.Fields("Apellido")%></td>
    <td width="25%"><a href="mailto:<%=Tabla.Fields("Email")%>><%=Tabla.Fields("Email")%></a></td>
</tr>
<%
            Tabla.MoveNext
        Wend
Tabla.Close
Conexion.Close
End If
%>
<p align="center"><input type="submit" value="Proceder" name="B3"></p>
</form>
</table>
</center>
</div>
</body>
</html>

-------------------------------------------------------

Y, por último, el código para eliminar definitivamente:

eliminar.ASP

--------------------------------------------------------------------------

<%@ LANGUAGE="VBSCRIPT" %>
<html>
<head>
<title>Eliminar.asp</title>
</head>
<body>
<%
    Dim Conexion,Tabla
    Set Conexion=Server.CreateObject("adodb.connection")
    Set Tabla=Server.CreateObject("adodb.recordset")
    Conexion.Open "CORREO"
    Tabla.Open "Select * From Tabla1 Where [Nombre]='" & Request("Registro") & "'",Conexion,2,3,1
    If Tabla.BOF And Tabla.EOF Then
%>
<p><font face="Arial">El registro <strong>NO</strong> ha sido encontrado
<%
    Else
        Tabla.Delete
%>
</p>
<p><font face="Arial">El registro ha sido <strong>eliminado</strong> satisfactoriamente
<%   
    End If
    Tabla.Close
    Conexion.Close
%>
</font></p>
<p><a href="../menu.htm"><strong><font face="Arial">Menú</font></strong></a></p>
</body>
</html>

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Espero que les halla interesado y construyan sus propias bases de datos. Así como yo he hecho muchas.

Códigos tomado de:

http://www.pablin.com.ar/computer/cursos/asp1/index.htm









Consulta Web de los Sistemas bajo Winisis

Nuestras antiguas bases de datos construidas en Micro Isis o Win Isis, tienen cabida en en mundo de la Web, mediante formularios de consultas unidos al servidor liberado por BIREME, el Wisis32 o wwwisis32. Con este programa servidor y con el auxilio de programas como Apache - el cual es también gratis - HTML, PHP, JavaScript y otros, es posible conectar las bases Isis y presentar resultados de búsquedas vía Web.

Para los que no deseen crear los complejos scripts del lenguaje WWWISIS, entonces está la mejor opción y es el uso del programa GenIsisWeb, el cual es gratis también. El uso de software libre es una maravilla, en ese sentido. Podemos ver en funcionamiento el programa Catalis, OpenMarcoPolo, CaMPI, CLAVEL, Weblis, entre otros y lo bueno aún más es que podemos entrar en contacto con los desarrolladores.

El GenIsisWeb es una aplicación muy interesante que genera los códigos por nosotros. Se crean los formularios de búsquedas, de acuerdo a especificaciones fáciles de comprender y que luego pueden ser ajustados a nuestros requerimientos, utilizando HTML.

Todo esto nos da lugar para la inventiva, la creatividad, una entradita extra, el oficio, etc. Pero si no desean vivir la experiencia - como la de instalar la interfaz IAH de BIREME - solo busquen en la pagina oficial de BIREME el último boom de la familia Isis: el ABCD. Este es completamente Web y trae disponibles bases en los tres formatos más conocidos: Marc21, Lilacs y Cepal.

Cabe también mencionar en este apartado, el elenco de la familia Isis que tanto menciono:

- Micro CDS/Isis
- Win Isis
- Isis Marc
- JavaScript
- ABCD
- Y todos los de arriba mencionados se derivan del mismo lenguaje y utilizando el motor wwwisis para las aplicaciones web.

Personalmente he tenido que lidear con todos ellos en la marcha. Comencé en los años 90 con el MicroIsis. Me he relacionado con su lenguaje leyendo la documentación disponible de manera gratuita en la internet y etc. Todo es asunto de interés y dedicación.

En resumen, lo que deseo dejar claro es que la cadena de programas ISIS siguen siendo hoy en día una solución para todas aquellas bibliotecas de bajos recursos, gracias a la bella disposición de BIREME, la UNESCO y todo un elenco maravillo de programadores, que han dedicado años tras años largas horas de esfuerzo, trabajo, dedicación y un largo etcétera.

Si su biblioteca no tiene un programa de automatización, en la familia ISIS encontrará una solución. Todo esta libremente disponible en la Web. También pueden contar con mi asesoría.

El WhatsApp : ventajas y desventajas

 Luis M. Peña 25 de octubre, 2017 Sobre el autor. Licenciado en Lenguas Modernas mención Inglés y Licenciado en Educación mención Bi...