Access - Posicionarse en un registro determinado

 
Vista:
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Posicionarse en un registro determinado

Publicado por Maria (6 intervenciones) el 24/08/2018 20:08:22
Hola!
Necesito saber como posicionarme en un registro determinado en un formulario.
El registro en cuestión debo señalizarlo a través de su campo clave (autonumérico).
Tengo un cuadro combinado. Al seleccionar una opción me actualiza algunos datos y otros no.
Comprobé que el campo clave Puesto.IdPuesto se actualiza correctamente cuando recorro los registros secuencialmente (comando Next), pero no cuando selecciono algo en el cuadro combinado.
Por lo que pude ver, creo que necesito hacer un procedimiento que usa Recordset, RecordsetClone y Bookmark.
¿Alguien podrá explicarme cómo funcionan estos comandos o cómo se llamen?.
Además el ejemplo del cual lo saqué, buscaba posicionarse en un campo str, pero en mi caso seria un numero Long, porque es clave autonumérica.
Esta respuesta me ayudaría mucho a entender cómo es el funcionamiento interno de las tablas de la Base de datos (cosa que no encuentro en libros ni publicaciones). Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Posicionarse en un registro determinado

Publicado por Anonimo (3316 intervenciones) el 25/08/2018 01:57:09
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'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 14
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Posicionarse en un registro determinado

Publicado por Maria (6 intervenciones) el 27/08/2018 17:23:55
Gracias por la respuesta.
Consulté en la ayuda de Microsoft (F1), entre otras cosas.
Explican el uso en sentencias pero no la esencia (que me aclaraste muy bien).
Lo mismo con el Bookmark. Sé que es una "marca" (como las banderitas que hay en este foro).
Tal vez el error está en que yo puse el evento justamente al perder el foco del campo del formulario que despliega el cuadro combinado.
Es un buen dato el que me diste.
Y la explicación de Recordset y Recordsetclone la voy a guardar. Es una joyita.
Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar