Recuperar un conjunto de registros

Las buenas aplicaciones de datos Web emplean el objeto Connection para establecer un vínculo, y el objeto Recordset para manipular los datos devueltos. Al combinar las funciones especializadas de ambos objetos puede desarrollar aplicaciones de bases de datos que realicen casi cualquier tarea de tratamiento de datos. Por ejemplo, la siguiente secuencia de comandos del servidor utiliza el objeto

Recordset para ejecutar un comando SELECT de SQL. El comando SELECT recupera un conjunto específico de información basándose en las restricciones de la consulta. La consulta también contiene una cláusula WHERE de SQL, que se utiliza para establecer el criterio de selección de la consulta. En este ejemplo, la cláusula WHERE limita la consulta a todos los registros que contengan el apellido Soto en la tabla Customers de la base de datos.

< % 'Establece una conexión con un origen de datos. strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb" Set cn = Server.CreateObject( "ADODB.Connection" ) cnn.Open strConnectionString 'Crea una instancia de un objeto Recordset. Set rsCustomers = Server.CreateObject( "ADODB.Recordset" ) 'Abre un objeto Recordset con el método Open 'y utiliza la conexión establecida por el objeto Connection. strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Soto' " rstCustomers.Open strSQL, cnn 'Recorre el conjunto de los registros y presenta los resultados 'e incrementa la posición del registro con el método MoveNext. Set objFirstName = rstCustomers( "Nombre" ) Set objLastName = rstCustomers( "Apellido" ) Do Until rstCustomers.EOF Response.Write objFirstName & " " & objLastName & "
»
rstCustomers.MoveNext
Loop
%>

Observe que en el ejemplo anterior, el objeto Connection estableció la conexión con la base de datos y que el objeto Recordset utilizó la misma conexión para recuperar resultados de la base de datos. Este método es útil cuando tenga que configurar con precisión la forma en que se establece el vínculo con la base de datos.

Por ejemplo, si necesitara especificar el tiempo de espera antes de anular un intento de conexión, tendría que utilizar el objeto Connection para establecer dicha propiedad. Sin embargo, si sólo desea establecer una conexión con las propiedades de conexión predeterminadas de ADO, podría utilizar el método Open del objeto Recordset para establecer el vínculo:

< % strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Datos\Empleados.mdb" strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Soto' " Set rsCustomers = Server.CreateObject( "ADODB.Recordset" ) 'Abre una conexión con el método Open 'y utiliza la conexión establecida por el objeto Connection. rstCustomers.Open strSQL, strConnectionString 'Recorre el conjunto de registros, presenta los resultados 'e incrementa la posición del registro con el método MoveNext. Set objFirstName = rstCustomers( "Nombre" ) Set objLastName = rstCustomers( "Apellido" ) Do Until rstCustomers.EOF Response.Write objFirstName & " " & objLastName & "
»
rstCustomers.MoveNext
Loop
%>

Cuando establece una conexión con el método Open del objeto Recordset, está utilizando implícitamente el objeto Connection para proteger el vínculo. Para obtener más información, consulte la documentación acerca de Microsoft ActiveX Data Objects (ADO), disponible en el sitio Web de Microsoft Universal Data Access en la dirección http://www.microsoft.com/data/.

Nota Para mejorar de forma significativa el rendimiento de las aplicaciones ASP de base de datos, piense en la posibilidad de cambiar el estado del conjunto de registros a Application. Para obtener más información, consulte Guardar datos en la memoria caché.

A menudo resulta útil contar el número de registros que se devuelven en un conjunto de registros. El método Open del objeto Recordset permite especificar un parámetro opcional, cursor, que determina cómo recupera y recorre el conjunto de registros el proveedor subyacente. Al agregar el parámetro de cursor adOpenKeyset a la instrucción que se utiliza para ejecutar la consulta, permite que la aplicación cliente recorra todo el conjunto de registros. Como resultado, la aplicación puede utilizar la propiedad

RecordCount para calcular con precisión el número de registros del conjunto. Vea el siguiente ejemplo:

< % Set rsCustomers = Server.CreateObject( "ADODB.Recordset" ) rs.Open "SELECT * FROM NewOrders", "Provider=Microsoft.Jet.OLEDB.3.51;Data Source='C:\PedidosClientes\Pedidos.mdb'", adOpenKeyset, adLockOptimistic, adCmdText 'Utiliza la propiedad RecordCount del objeto Recordset para realizar la cuenta. If rs.RecordCount >= 5 then
Response.Write «Recibimos estos » & rs.RecordCount & » nuevos pedidos
»
Do Until rs.EOF
Response.Write rs( «NombreCliente» ) & » » & rs( «ApellidoCliente» ) & «
»
Response.Write rs( «NumeroCuenta» ) & «< BR >»
Response.Write rs( «Cantidad» ) & «< BR >»
Response.Write rs( «FechaEntrega» ) & «< BR >< BR >»
rs.MoveNext
Loop
Else
Response.Write «Hay menos de » & rs.RecordCount & » nuevos pedidos.»
End If
rs.Close
%>

Fuente: Manual de ASP de Valeria Socolovsky