Posicionarse en un registro determinado
Las tablas de una base de datos 'no funcionan', son simples espacios para contener 'algo' (como todas las tablas de todas las bases de datos).
Que después esos espacios se subdividan en otros mas pequeños (los registros) y estos a su vez en otros mas pequeños (los campos de cada registro), va en función de como el diseñador a cargo de ese espacio estructure a los subconjuntos para conseguir (supuestamente) algo útil.
Lo que podría ser una llave maestra, es conocer como funcionan 'los recordset', pues con ellos manejaremos de forma (se espera que eficiente) a ese conglomerado de información (la tabla o las tablas) para lograr algo útil.
Un cuadro combinado es un conjunto de datos estructurado (casi una tabla si 'los datos fueran suyos') al que se le ha creado una serie de automatismos tal como la expansión al recibir el foco y convertirse 'en el objeto activo', si pierde el foco vuelve a su estado estético anterior (se contrae), lo que pueda o no hacer un cuadro combinado (a partir de aquí: 'combo' a secas) es lo mismo que pueda o no hacer cualquier otro objeto de Access: lo que se le indique en sus eventos.
¿Qué es un evento? ….. puede considerarse que un evento es un estado intermedio entre el principio y fin de un trabajo …. pongamos un ejemplo:
Trabajo: salir de casa y tomar un autobús (comienza delante de la puerta de salida, finaliza al sentarse en el autobús)
Salimos de casa, hay que abrir la puerta, asimos el picaporte …. evento: al asir el picaporte
Si no se activa continua, si se activa:
.- Nos permite girar la cabeza para verificar que las luces están apagadas y si no lo están, abortar el evento para apagarlas.
tras girar el picaporte y abrir la puerta (podemos ver la calle) ….. evento: al abrir la puerta
Si no se activa continua, si se activa:
.- Podemos verificar si llueve para abrir el paraguas ……..
Cerramos la puerta y avanzamos a la parada del autobús ….. evento: al llegar a la parada
…….
En fin así en cada 'evento' que activemos, podremos verificar algo, ejecutar algo ….. es el programador el que programa, Access (si puede) obedece
Aplicado al lio del combo ¿Qué eventos están activados y que acciones tienen asignadas? solo funcionaran las que estén activadas y puede darse con mucha facilidad el de generar acciones en VBA, pero no activar esos eventos en el formulario (consecuencia, esos eventos NO están activados = no funcionaran mientras esto no cambie).
Recordset = conjunto de datos de procedencia diversa (tablas, consultas …..) copiara su estructura de su origen de datos (nombres y campos de la tabla si es su origen)
RecorsetClone: como su nombre indica es un recorset que clona de forma automática al origen de datos de un formulario (u informe), añade una marca de control (que se crea de forma dinámica al iniciar el formulario y asignarle datos) y esa marca la comparte con su asociado (el origen de datos) la marca es.... el BOOKMARK que permite sincronizar el origen de datos real y a su clónico (simplemente igualándolos) o incluso ser guardado para usos posteriores (ojo con la vida útil de ese formulario, recordemos que 'se crea al cargar el formulario' con todas las consecuencias que ello implica).
Desconozco ese ejemplo inicial y lo que implica el 'str' (presumo que es un campo alfanumérico o texto), pero al recordset y su bookmark eso le es absolutamente diferente indiferente, a quien le puede interesar es a la condición de búsqueda que utilizase el autor del ejemplo para obtener el registro y una vez en el registro su BOOKMARK para ……
No se debería confundir el BOOKMARK con un índice al uso ni esperar un numero o un autonumerico, había versiones de Access que exigían (para manipularlo) que la variable fuese de tipo variant y en otras no era asi, es 'una marca' que se crea en tiempo de ejecución y con una exclusiva finalidad (la sincronía).
Si tratamos al RecorsetClone como un recorset, al igual que lo movemos con el Next, el Goto ….. también podemos utilizar el FIND y localizar el registro deseado (sin que en el formulario se aprecie NADA) y tras ello utilizar la marca que comparten para que en el formulario el registro activo sea el que tenga el mismo BOOKMARK (efecto logrado: desplazamiento absoluto en un solo paso sin parpadeos ni otros efectos secundarios)
Por cierto, si editamos un dato en el RecorsetClone y lo guardamos, automáticamente se reproduce el cambio en la tabla (y por supuesto en el origen de datos del formulario), aunque si es el activo se tendrá que refrescar (Recalc o Repaint según sea lo adecuado)
Desconozco que literatura se ha consultado pero la mejor, la mas completa y mas verídica esta debajo de la tecla 'F1'