Comentarios en HelloData
La aplicación HelloData recorre las operaciones básicas de una aplicación ADO típica: obtener, examinar, editar y actualizar datos. Al iniciar la aplicación, haga clic en el primer botón Obtener datos. Esto ejecutará la subrutina GetData.
GetData
GetData coloca una cadena de conexión válida en una variable de nivel de módulo, m_sConnStr. Para obtener más información sobre las cadenas de conexión, vea Creación de la cadena de conexión.
Asigne un controlador de errores mediante una instrucción de Visual Basic OnError . Para obtener más información sobre el control de errores en ADO, consulte Control de errores. Se crea un nuevo objeto Connection y la propiedad CursorLocation se establece en adUseClient porque el ejemplo HelloData crea un Recordset desconectado. Esto significa que en cuanto se han capturado los datos del origen de datos, se interrumpe la conexión física con el origen de datos, pero todavía puede trabajar con los datos almacenados en caché localmente en el objeto recordset de .
Una vez abierta la conexión, asigne una cadena SQL a una variable (sSQL). A continuación, cree una instancia de un nuevo objeto Conjunto de Registros , m_oRecordset1
. En la siguiente línea de código, abra el Recordset sobre la conexión existente , pasando sSQL
como origen del Recordset . Ayudas a ADO a determinar que la cadena SQL que has pasado como origen para el Recordset es una definición textual de un comando al pasar adCmdText como argumento final en el método Open del Recordset. Esta línea también establece el LockType y CursorType asociados con el Recordset.
La siguiente línea de código establece la propiedad MarshalOptions igual a adMarshalModifiedOnly. MarshalOptions indica qué registros deben serializarse en el nivel intermedio (o servidor web). Para obtener más información sobre el marshaling, consulte la documentación de COM. Cuando se usa adMarshalModifiedOnly con un cursor del lado del cliente (CursorLocation = adUseClient), solo se escriben los registros modificados en el cliente de vuelta al nivel intermedio. Establecer marshalOptions en adMarshalModifiedOnly puede mejorar el rendimiento porque se transfieren menos filas.
A continuación, desconecte el Recordset estableciendo su propiedad ActiveConnection igual a Nothing. Para obtener más información, vea la sección "Desconectar y volver a conectar el conjunto de registros" en Actualización y conservación de datos.
Cierre la conexión a la fuente de datos y destruya el objeto de conexión existente . Esto libera los recursos que consumió.
El último paso es establecer el conjunto de registros como el origen de datos para el control Microsoft DataGrid en el formulario, de modo que pueda mostrar fácilmente los datos del conjunto de registros en el formulario.
Haga clic en el segundo botón Examinar Datos. Esto ejecuta la subrutina ExamineData.
ExamineData
ExamineData usa varios métodos y propiedades del objeto Recordset para mostrar información sobre los datos en el Recordset. Informa del número de registros mediante la propiedad RecordCount. Recorre el Recordset e imprime el valor de la propiedad AbsolutePosition en el cuadro de texto de visualización del formulario. Además, en el bucle , el valor de la propiedad Bookmark bookmark para el tercer registro se coloca en una variable variant, vBookmark, para su uso posterior.
La rutina vuelve directamente al tercer registro mediante la variable bookmark que almacenó anteriormente. La rutina llama a la subrutina WalkFields, que itera a través de la colección Fields del Recordset y muestra detalles sobre cada Field de la colección.
Por último, ExamineData usa la propiedad Filter del conjunto de registros para mostrar solo los registros con un CategoryId igual a 2. El resultado de aplicar este filtro es visible inmediatamente en la cuadrícula de presentación del formulario.
Para obtener más información sobre la funcionalidad mostrada en la subrutina ExamineData, consulte Examinar datos.
A continuación, haga clic en el tercer botón Editar datos. Esto ejecutará la subrutina editData .
EditarDatos
Cuando el código entra en la subrutina EditData, el Recordset se sigue filtrando en CategoryId igual a 2, de modo que solo sean visibles los elementos que cumplan los criterios de filtro. Primero recorre el conjunto de registros y aumenta el precio de cada elemento visible en el conjunto de registros en un 10 %. El valor del campo Price se cambia estableciendo la propiedad Value para ese campo igual a una cantidad nueva y válida.
Recuerde que el Recordset está desconectado del origen de datos. Los cambios realizados en EditData solo se realizan en la copia almacenada en caché local de los datos. Para obtener más información, consulte Edición de datos.
Los cambios no se realizarán en el origen de datos hasta que haga clic en el cuarto botón, Actualizar datos. Se ejecutará la subrutina UpdateData.
ActualizarDatos
UpdateData quita primero el filtro que se ha aplicado al conjunto de registros de . El código elimina y restablece m_oRecordset1
como el origen de datos para Microsoft Bound DataGrid en el formulario, de modo que el Recordset sin filtrar aparezca en la cuadrícula.
A continuación, el código comprueba si puede retroceder en el recordset de mediante el método Supports con el argumento adMovePrevious .
La rutina se mueve al primer registro mediante el método MoveFirst y muestra los valores originales y actuales del campo mediante las propiedades OriginalValue y Value del objeto Field. Estas propiedades, junto con la propiedad Valor Subyacente (no se usa aquí), se describen en Actualización y Persistencia de Datos.
A continuación, se crea un nuevo objeto Connection y se usa para restablecer una conexión al origen de datos. Vuelva a conectar el Recordset al origen de datos estableciendo el nuevo Connection como la ActiveConnection para el Recordset. Para enviar las actualizaciones al servidor, el código llama a UpdateBatch en el Recordset .
Si la actualización por lotes se realiza correctamente, una variable de marca de nivel de módulo, m_flgPriceUpdated
, se establece en True. Esto le recordará más adelante que limpie todos los cambios realizados en la base de datos.
Por último, el código vuelve al primer registro del recordset y muestra los valores originales y actuales. Los valores son los mismos después de la llamada a UpdateBatch.
Para obtener información detallada sobre cómo actualizar los datos, incluido qué hacer cuando cambian los datos del servidor mientras el del conjunto de registros de está desconectado, consulte Actualización y conservación de datos.
Descarga_de_Formulario
La subrutina Form_Unload es importante por varias razones. En primer lugar, dado que se trata de una aplicación de ejemplo, Form_Unload limpia los cambios realizados en la base de datos antes de que se cierre la aplicación. En segundo lugar, el código muestra cómo se puede ejecutar un comando directamente desde un objeto Connection abierto mediante el método Execute. Por último, muestra un ejemplo de ejecución de una consulta que no devuelve filas (una consulta UPDATE) en el origen de datos.