Índice de la sección dedicada a .NET (en el Guille) ASP.NET

Acceder a una base de datos de Access usando ADO, desde un formulario Web (.aspx)

Publicado el 02/Ene/2004
Actualizado el 02/Ene/2004

 

Codigo en VBScript de ASP


 

Introducción

En este ejemplo se accede a una base de datos de Access usando ADO.
Como verás el código será parecido al que se usaría en una página ASP normal.

Lo único que tenemos que hacer es:

  • Indicar que se va a usar compatibilidad con COM. Esto se consigue indicando aspcompat = true en la directiva ASP.NET indicada al principio de la página.
  • La forma de acceder a los objetos ADO (que son COM/ActiveX) ya que habrá que usar código "compatible" con punto NET, al menos en la forma de llamar a los métodos y funciones, es decir usando los paréntesis para encerrar los parámetros. Ya que por lo demás, el código es "exactamente" el mismo que se usaría con ASP y VBScript.
Panorama

En el ejemplo siguiente, se da por supuesto que existe un directorio llamado "datos" que está en el mismo directorio que la página ASPX, si cambias la localización de ese directorio, tendrás que cambiar el código de la conexión, más concretamente en el parámetro a Server.MapPath(...).

En el zip con el ejemplo, incluyo una pequeña base de datos que es la usada en el formulario Web.
Por tanto, si lo descomprimes, procura que la base de datos se quede dentro del directorio "datos".
De forma predeterminada se creará ese directorio.
¿Dónde descomprimir el fichero?
Dentro del directorio "localhost", por defecto es: C:\Inetpub\wwwroot
Para acceder a la página de prueba, tendrás que usar http://localhost/ejemploAccessADO.aspx
Por supuesto esto sólo será posible si tienes el Windows 2000/XP Profesional o un Windows Server que tenga instalado el IIS.

En este ejemplo sólo muestro el código de Visual Basic, ya que al fin y al cabo es VBScript.

 

Nota: Este ejemplo realmente no utiliza ningún control ASP.NET, sólo código "puro y duro".

 

El link al código de ejemplo: ejemploAccess.zip (13.4KB)
El cual incluye también el ejemplo de acceso a ADO.NET (tanto para VB como para C#)

 


El código para VBSCRIPT.

<% @Page aspcompat=true Language = VB %>
<html>

<head>
<title>Acceso a datos con compatibilidad ASP (COM)</title>
</head>

<BODY bgcolor="#FFFFFF" text="#000000">
<p><font face="Verdana" size="4">Prueba de acceso a base de datos Access con ADO
 desde ASP.NET</font>
<hr noshade size="3">
<font face="Verdana" size="2">
<br>

<%
' Variables usadas para crear los objetos, etc.
Dim Rst, Cnn
Dim sConn, sTip
Dim sTitulo, sLink, sApartado, sDescripcion
Dim s, i

' Crear los objetos
Cnn = Server.CreateObject("ADODB.Connection")

' Crear la conexión a la base de datos
sConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
	Server.MapPath("datos\elguille.mdb") & ";"
Cnn.Open(sConn)
' Crear la cadena SQL
s = "SELECT * FROM Titulos ORDER BY Apartado ASC"
Rst = Cnn.Execute(s)

On Error Resume Next
Err.Clear
' Buscar desde el principio
Rst.MoveFirst
i = 0
Do While Not (Rst.BOF Or Rst.EOF)
    i = i + 1
    With Rst
        ' Asignar a las variables el contenido del registro
        sTitulo = .Fields("Titulo").Value & ""
        sLink = .Fields("Link").Value & ""
        sApartado = .Fields("Apartado").Value & ""
        sDescripcion = .Fields("Descripcion").Value & ""
        ' Mostrar los datos hallados
        Response.Write(i & "- <a href='" & sLink & "'>" & _
		sTitulo & "</a> <b>(" & _
		sApartado & ")</b><br>" & sDescripcion & "<br>")
    End With
    '
    ' Mostrar el siguiente registro
    Rst.MoveNext
Loop
Response.Write("<br>")
Err.Clear
If i = 0 Then
    Response.Write("<br><b>No se ha encontrado ningún registro que contenga")
    Response.Write(" lo que has especificado.</b><br>")
    Response.Write("Pulsa en este link para <b>")
    Response.Write("<a href='mostrarDatosTodo.aspx'>"
    Response.Write("Mostrar todos los registros</a></b>.<br>")
End If
'
Rst.Close
Cnn.Close

Rst = Nothing
Cnn = Nothing
'
%>

<hr noshade size="3">
</font>

</body>
</html>

 


la Luna del Guille o... el Guille que está en la Luna... tanto monta...