El objetivo de este ejemplo es ver como realizar una consulta sobre una base de datos y sacar los resultados. En este ejemplo utilizaremos ASP y nos apoyaremos en la estructura ADODB.RecordSet. Los pasos a seguir son los siguientes:
1. Debemos de conectarnos a la base de datos. Para ello utilizaremos un objeto ADODB.Connection al cual deberemos de especificar la localización de la base de datos. Bien mediante la dirección relativa de la misma o bien utilizando una cadena DSN. Una vez especificada la dirección de la Base de Datos deberemos de abrirla (open).
Set db = Server.CreateObject("ADODB.Connection")
Dim DB_CONNECTIONSTRING
DB_CONNECTIONSTRING = "Driver={Microsoft Access Driver (*.mdb)};
Dbq=" & Server.MapPath("prueba.mdb") & ";"
db.open DB_CONNECTIONSTRING
2. Para realizar la consulta tendremos que utilizar un objeto ADODB.RecordSet al cual indicaremos la sentencia SQL que realiza la consulta.
set rs = Server.CreateObject("ADODB.Recordset")
SQLStr = "SELECT * FROM Datos"
rs.open SQLStr,DB_CONNECTIONSTRING,adOpenStatic,adLockReadOnly,adCmdText
La consulta SQL podrá ser tan compleja como la queramos realizar (podemo usar clausulas ORDER BY, GROUP BY, IN, LIKE, BETWEEN,…)
3. Una vez tenemos el RecordSet (conjunto de registros a mostrar) deberemos de recorrerle. Para recorrer el RecordSet iremos moviendo el puntero que apunta a cada una de las filas, siempre y cuando existan filas en la tabla. Para poder llevar a cabo esta operación nos valdremos de una bucle while.
do while not rs_preguntas.EOF
..
Response.Write(rs("valor"))
rs.MoveNext
..
loop
Para acceder a un campo en concreto de la fila a la que estamos apuntando tendremos que indicar el nombre del RecordSet y entre parentesis y entrecomillado el nombre del campo (o la posición que ocupa en su defecto). En nuestro ejemplo vemos que el campo de la tabla se llama valor.
Tenemos que tener en cuenta que dentro del bucle debemos de ir moviendo el puntero que apunta a las fila (si no nos queremos quedar en un bucle infinito). La función que realiza esto sobre el RecordSet es MoveNext.
4. Finalmente deberemos de cerrar tanto el RecordSet como la conexión a la base de datos.
rs.close
db.close