Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

Qué son los cursores dinámicos

Este artículo se publicó anteriormente con el número E10156
Resumen
En este artículo, vamos a tratar aspectos avanzados de los cursores de RDO que no se explican en la documentación de Visual Basic 4.0 para Windows.

Le remitimos a la ayuda en pantalla de Visual Basic para obtener información general sobre los diferentes tipos de cursores RDO.
Más información
Los Cursores Dinámicos no tienen un tamaño fijo de filas. Al movernos de un conjunto de filas a otro (el número de filas de cada conjunto está definido por la propiedad RowsetSize), el driver puede devolvernos cualquier número de filas. Este nuevo conjunto de filas o "rowset" debería incluir nuevas filas añadidas a la tabla a la hora de cumplir la cláusula where, pero es difícil saber dónde se van a mostrar (probablemente al final).

RDO es el encargado de ir al servidor cada vez que necesita un nuevo rowset (otra vez, el número de filas de cada conjunto está definido por la propiedad RowsetSize), por lo que los cambios hechos por otros usuarios no se harán visibles hasta entonces. El ajuste de la propiedad RowsetSize sirve para balancear rendimiento y frescura de datos. Debido a que las consultas al servidor son bastante caras, no se recomienda en un entorno cliente/servidor en el que tenemos una red por medio, ir al servidor vez que nos movemos a una nueva fila - el Jet hace esto precisamente , por lo que no es tan rápido como RDO a través de la red.

Los Bookmarks no se encuentran disponibles en Cursores Dynámicos - la propiedad Bookmarkable será siempre falsa para este tipo de cursores. El driver de SQL Server no lo permite entre otras cosas porque no existe la idea de identificar una fila como inamovible. Bookmarks trabajan con los rowsets pero no a través de ellos.

SQL Server no puede ser implementado como una base de datos ISAM. La idea final es poder hacer los sistemas cliente/servidor. RDO nos permite refrescar los datos constantemente si establecemos la propiedad RowsetSize = 1, pero esto se traduce en constantes accesos al servidor a través de la red, lo cual se hace notar en una bajada de rendimiento de la red, más acusada cuantos más usuarios tengamos en nuestro sistema. No es esta precisamente la mejor manera de implementar un sistema cliente/servidor sea cual sea nuestro DBMS o herramienta de desarrollo. RDO utiliza ODBC sin más, y esto es lo que le hace más rápido.



PROGRAMA DE EJEMPLO

En este ejemplo vamos a mostrar cómo crear un cursor dinámico rdoResultset. Emplearemos una conexión ODBC DSN-less por lo que no necesitamos establecer una fuente de datos con la utilidad de Administración ODBC.
  1. Creamos un nuevo proyecto en Visual Basic. Form1 se crea por defecto.
  2. Añadimos un botón de comando al Form1.
  3. Pegamos el siguiente código en la sección de Declaraciones Generales del Form1.
             Private Sub Command1_Click()            Dim en As rdoEnvironment            Dim cn As rdoConnection            Dim rs As rdoResultset            Dim sql As String            'establecemos la conexión            Set en = rdoEngine.rdoEnvironments(0)            en.CursorDriver = rdUseIfNeeded            'modificar para conectarnos a nuestra base de datos            Dim cnStr As String            cnStr = "driver={SQL Server};server=myserver;" & _            "database=pubs;uid=myuid;pwd=mypwd"            Set cn = en.OpenConnection(dsName:="",_                Prompt:=rdDriverNoPrompt, ReadOnly:=False, _                Connect:=cnStr)            ' crear la secuencia SQL adecuada para una tabla de             ' nuestra base de datos            sql = "Select * From Titles"            'la siguiente línea abre un resultset Dinámico            Set rs = cn.OpenResultset(Name:=sql, _               Type:=rdOpenDynamic, LockType:=rdConcurRowver, _                Option:=rdAsyncEnable)            While rs.StillExecuting               DoEvents            Wend           'imprime las tres primeras columnas de la primera fila.            Me.Print rs(0), rs(1), rs(2)         End Sub
  4. Como vemos, es necesario que el usuario cambie en los métodos OpenConnection y OpenDatabase, a sus correspondientes DRIVER, SERVER, DATABASE, UID, y PWD. También es necesario modificar la sentencia SQL en el evento Command1_Click para que coincida con nuestra fuente SQL.
  5. Ejecute el programa o pulse F5.
PRECAUCIÓN: CUALQUIER UTILIZACIÓN POR SU PARTE DEL CÓDIGO INCLUIDO EN ESTE ARTÍCULO SE HARÁ A SU CUENTA Y RIESGO. Microsoft facilita estecódigo "tal cual" sin garantía de ningún tipo, ya sea explícita oimplícita, incluyendo expresamente en tal exención de responsabilidady, a efectos meramente enunciativos y no limitativos, las garantíaslegales mercantiles implícitas y/o la adecuación a un propósito ofinalidad en particular.
Propiedades

Id. de artículo: 550155 - Última revisión: 11/07/2003 13:50:00 - Revisión: 1.0

Microsoft Visual Basic 4.0 Standard Edition

  • cursor vbwin rdo dinámico KB550155
Comentarios
ript>