Aprender DAO VBA
En el ejemplo de código siguiente se usa el método OpenRecordset para crear un objeto Recordset de tipo tabla para una tabla de la base de datos activa.
Puede crear un objeto Recordset basado en un formulario de Access. Para ello, utilice la propiedad RecordsetClone del formulario. Esto crea un objeto Recordset de tipo Dynaset que hace referencia a la misma consulta o datos base que el formulario.
Puede crear un objeto Recordset basado en una consulta de selección almacenada. En el siguiente ejemplo de código Current Product List
, es una consulta de selección existente almacenada en la base de datos activa.
Puede Agregar un nuevo registro a un objeto Recordset de tipo tabla o de tipo Dynaset mediante el método AddNew .
Un objeto Recordset suele tener una posición actual, con frecuencia en un registro. Al hacer referencia a los campos de un objeto Recordset, obtiene los valores del registro en la posición actual, lo que se conoce como el registro actual. Pero la posición actual también puede estar inmediatamente antes del primer registro en un objeto Recordset o inmediatamente después del último registro.En algunas circunstancias, la posición actual no se define.
Puede usar los métodos find para localizar un registro en un objeto Recordset de tipo Dynaset o Snapshot.
Use el método Seek para localizar un registro en un objeto Recordset de tipo tabla. Cuando se usa el método Seek para localizar un registro, el motor de base de datos de Access usa el índice actual de la tabla, definido por la propiedad index .
Si lo prefiere, puede modificar registros existentes en un objeto Recordset de tipo tabla o tipo conjunto de registros dinámicos mediante los métodos Edit y Update.
Cuando lee o escribe datos en un campo, en realidad está leyendo o configurando la propiedad DAO Value de un objeto Field. La propiedad DAO Value es la propiedad predeterminada de un objeto Field. Por lo tanto, puede establecer la propiedad Value de DAO del campo LastName en el objeto Recordset rstEmployees de cualquiera de las siguientes formas.
Es posible que desee conocer el número de registros de un objeto Recordset . Por ejemplo, puede que necesite crear un formulario que muestre cuántos registros hay en cada una de las tablas de una base de datos. O puede que necesite cambiar la apariencia de un formulario o informe en función del número de registros que contiene.
Puede eliminar un registro existente en un objeto Recordset de tipo tabla o Dynaset mediante el método Delete. No puede eliminar registros de un objeto Recordset de tipo instantánea.
En el siguiente ejemplo de código se utiliza la propiedad RecordsetClone y el objeto Recordset para sincronizar un registro de un conjunto de registros con el registro actual del formulario.
En un objeto Recordset, si intenta ir más allá del registro inicial o final, se produce un error en tiempo de ejecución. Por ejemplo, si intenta utilizar el método MoveNext cuando ya está en el último registro del objeto Recordset, se producirá un error capturable. Por esta razón, resulta útil conocer los límites del objeto Recordset.
Después de haber localizado uno o varios registros concretos, puede necesitar extraer datos para utilizarlos en la aplicación en lugar de modificar la tabla de origen subyacente.
En algunas situaciones, necesita determinar cuánto se ha movido en un objeto Recordset la posición del registro actual y, quizás, indicar la posición del registro actual a un usuario. Por ejemplo, puede que quiera indicar la posición actual en un dial, un medidor u otro tipo de control similar. Hay disponibles dos propiedades que permiten indicar la posición actual: AbsolutePosition y PercentPosition.
Un marcador es una matriz de bytes generada por el sistema que identifica de forma exclusiva cada uno de los registros. La propiedad Bookmark de DAO de un objeto Recordset cambia cada vez que el usuario se mueve a un nuevo registro. Para identificar un registro, desplácese a él y, a continuación, asigne el valor de la propiedad Bookmark de DAO a una variable de tipo Variant. Para regresar al registro, establezca la propiedad Bookmark de DAO en el valor de dicha variable.
Una vez creado un objeto Recordset de tipo tabla o Dynaset, puede cambiar, eliminar o agregar nuevos registros. Sin embargo, no podrá cambiar, eliminar o agregar registros en un objeto Recordset de tipo Snapshot o de sólo avance.
A menos que abra un objeto Recordset de tipo tabla y establezca su propiedad Index, no podrá estar seguro de que vayan a aparecer todos los registros en un orden específico. Sin embargo, generalmente necesitará recuperarlos en un orden determinado. Por ejemplo, es posible que desee ver las facturas ordenadas por número de factura de forma ascendente, o recuperar registros de empleados en orden alfabético por apellidos. Si desea ver los registros en un orden determinado, ordénelos.
Una transacción es un conjunto de operaciones que se agrupan y administran como una sola unidad de trabajo. El trabajo en una transacción debe completarse como un conjunto; Si se produce un error en alguna parte de la transacción, se producirá un error en toda la transacción. Las transacciones ofrecen al desarrollador la capacidad de aplicar la integridad de los datos. Una vez que varias operaciones de base de datos se agrupan en una única unidad que deben tener éxito o fallar en su totalidad, la base de datos no puede alcanzar un estado incoherente. Las transacciones son comunes a la mayoría de los sistemas de administración de bases de datos.
En DAO (objetos de acceso a datos), los campos de datos adjuntos funcionan de la misma manera que los demás campos multivalor. El campo que contiene los datos adjuntos contiene un conjunto de registros secundario del conjunto de registros de la tabla. Hay dos nuevos métodos de DAO, LoadFromFile y SaveToFile, que trabajan exclusivamente con datos adjuntos.
Los campos multivalor están representados como objetos Recordset en DAO. El conjunto de registros para un campo es secundario del conjunto de registros para la tabla que contiene el campo multivalor. Para crear una instancia del conjunto de registros secundario, use la propiedad Value del campo multivalor como se indica a continuación.