Propiedad Form.Bookmark (Access)

Use la propiedad Bookmark con formularios para establecer un marcador que identifique de forma única un registro determinado en la tabla, consulta o instrucción SQL subyacentes del formulario. Variante de lectura y escritura.

Sintaxis

expresión. Marcador

expresión Variable que representa un objeto Form.

Comentarios

Nota:

La propiedad Bookmark del formulario se obtiene o establece de forma independiente desde la propiedad Bookmark de ADO o la propiedad Bookmark de DAO de la tabla o consulta base.

Cuando se abre un formulario dependiente en vista Formulario, se asigna a cada registro un marcador único. En Visual Basic, se puede guardar el marcador del registro actual asignando el valor de la propiedad Bookmark del formulario a una variable de cadena. Para volver a un registro guardado después de ir a un registro diferente, establezca la propiedad Bookmark del formulario en el valor de la variable de cadena guardada. Use la función StrComp para comparar una variable Variant o de cadena con un marcador, o al comparar un marcador con un marcador. El tercer argumento de la función StrComp debe establecerse en el valor cero.

Nota:

Los marcadores no se guardan con los registros que representan y solo son válidos mientras el formulario está abierto. Microsoft Access los vuelve a crear cada vez que se abre un formulario dependiente.

No hay ningún límite en el número de marcadores que puede guardar si cada uno se guarda con una variable de cadena única.

La propiedad Bookmark solo está disponible para el registro activo del formulario. Para guardar un marcador para un registro diferente al registro activo, vaya al registro que quiera y asigne el valor de la propiedad Bookmark a una variable de cadena que identifique este registro.

Use marcadores en cualquier forma que se base por completo en tablas de Access. Pero otros productos de base de datos pueden no admitir los marcadores. Por ejemplo, no se pueden utilizar marcadores en un formulario basado en una tabla vinculada que no tenga un índice principal.

Volver a consultar un formulario invalida los marcadores que se hayan establecido en los registros del formulario. Sin embargo, la elección de Actualizar en el menú Registros no afecta a los marcadores.

Dado que Access crea un marcador único para cada registro del conjunto de registros de un formulario cuando se abre un formulario, el marcador de un formulario no funcionará en otro conjunto de registros, incluso cuando los dos conjuntos de registros se basan en la misma tabla, consulta o instrucción SQL. Por ejemplo, supongamos que abre un formulario enlazado a la tabla Customers . Si abre la tabla Customers mediante Visual Basic y, a continuación, usa el método Seek de ADO o el método DAO Seek para buscar un registro específico en la tabla, no puede establecer la propiedad Bookmark del formulario en el registro de tabla actual. Para realizar este tipo de operación, puede usar el método Find de ADO o el método Find de DAO con la propiedad RecordsetClone del formulario.

Se produce un error si se establece la propiedad Bookmark en una variable de cadena y luego se intenta volver a ese registro después de borrarlo.

El valor de la propiedad Bookmark no es el mismo que el número de registro.

Ejemplo

Para probar el ejemplo siguiente con la base de datos de ejemplo Northwind, debe agregar un botón de comando denominado cmdFindContactName al formulario Proveedores y, a continuación, agregar el código siguiente al evento Click del botón. Cuando el usuario hace clic en el botón, se le pide que escriba una parte del nombre de contacto que se va a buscar. Si se encuentra el nombre, la propiedad Bookmark del formulario se establece en la propiedad Bookmark de DAO del objeto Recordset, lo que mueve el registro actual del formulario al nombre encontrado.

Private Sub cmdFindContactName_Click() 
 
 Dim rst As DAO.Recordset 
 Dim strCriteria As String 
 
 strCriteria = "[ContactName] Like '*" & InputBox("Enter the " _ 
 & "first few letters of the name to find") & "*'" 
 
 Set rst = Me.RecordsetClone 
 rst.FindFirst strCriteria 
 If rst.NoMatch Then 
 MsgBox "No entry found.", vbInformation 
 Else 
 Me.Bookmark = rst.Bookmark 
 End If 
 
 Set rst = Nothing 
 
End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.