** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Formulario que muestra una ficha
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFormulario que muestra una ficha

 Responder Responder
Autor
Mensaje
fjgaspar Ver desplegable
Nuevo
Nuevo


Unido: 24/Septiembre/2015
Localización: Sevilla
Estado: Sin conexión
Puntos: 8
Enlace directo a este mensaje Tema: Formulario que muestra una ficha
    Enviado: 24/Septiembre/2015 a las 09:08
Hola,

Estoy desarrollando una base de datos con access y vba y no sé cómo hacer una cosa.

Tengo un formulario en el que se puede buscar a una persona por nombre, por apellido, y/o por nombre de usuario. Al pulsar el botón Buscar, hago una búsqueda mediante VBA abriendo un recordset mediante una sentencia SQL del tipo Select * from Tabla where campo Like ..., de forma que, por ejemplo, si no sé excactamente a quién estoy buscando, me busca a todos los que tengan alguna de las letras que he puesto. 

De esta forma, la búsqueda me devuelve un recordset. 

Una vez hecha la búsqueda en la tabla, si hay registros que cumplan lo buscado, hago una llamada a otro formulario con la siguiente sentencia:

DoCmd.OpenForm "NOMBRE_FORMULARIO", acViewNormal, , filtro

Siendo filtro lo mismo que la cadena SQL que utilicé para buscar en la tabla. De esta forma, el formulario que voy a abrir se abre en el primer registro que cumple las condiciones del filtro.

Pero si hay varios registros que cumplen el filtro, quiero poner un botón de comando de forma que pueda moverme adelante y atrás por los registros. Sé que puedo hacerlo con los botones que hay abajo, pero necesito poder hacerlo con botones programados, pues cuando cargo ese formulario, algunos campos se calculan a partir de los datos del registro, y navegando con los botones de abajo no hace esos cálculos.

Por ejemplo, la búsqueda ha encontrado dos registros. Uno de los campos de la tabla es la fecha de nacimiento, y al abrirse el formulario, en VBA hago que uno de los campos que mostrará el formulario sea la edad que tiene el usuario, calculándola a partir de su fecha de nacimiento. Este cálculo lo hago en el evento load del formulario. Pero como hay otro registro, si avanzo con el botón de abajo, el siguiente usuario no muestra su edad real, porque no ha hecho el cálculo. Lo que necesito es poner botónes de forma que al pulsarlo avance (o retroceda) por los registros que cumplan el filtro y que realice los cálculos en base al registro que se muestra.

¿Cómo hago para conseguirlo?

Gracias
 
Arriba
E. Feijoo Ver desplegable
Moderador
Moderador


Unido: 16/Abril/2004
Localización: España
Estado: Sin conexión
Puntos: 19948
Enlace directo a este mensaje Enviado: 24/Septiembre/2015 a las 10:18
Tan sencillo como utilizar 'otro' evento.

En lugar del 'Load' que solo se utiliza una vez, utiliza el 'Current' que se ejecutara cuando se cambia de registro (incluso vale para el primero, porque cuando 'nace' el formulario no hay nada y tendrá que cargar el primero).
Arriba
fjgaspar Ver desplegable
Nuevo
Nuevo


Unido: 24/Septiembre/2015
Localización: Sevilla
Estado: Sin conexión
Puntos: 8
Enlace directo a este mensaje Enviado: 24/Septiembre/2015 a las 10:39
Funcionó, gracias!!
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable