Llenar un formulario al seleccionar en un cuadro

Al grano, tengo un formulario en el cual rellenamos unos campos, este formulario guarda esos datos en una tabla con una clave principal, hasta aquí todo bien, lo que busco es poder modificar esos datos seleccionando la clave principal, aparezcan todos los datos de la tabla.

1 Respuesta

Respuesta
1
No estoy seguro de comprender exactamente lo que preguntas, ya que no detallas mucho lo que quieres implementar. Voy a intentar responderte aunque de antemano te digo que si no te sirve mi respuesta tal vez debieras de volver a formularla más largamente.
Deduzco que tienes un formulario basado en una tabla o consulta que accede a todos los registros. No se si ese formulario lo usas para únicamente dar de alta registros o si puedes visualizarlos todos y añadir uno nuevo. Pongámonos en este último caso y te pongo un ejemplo sencillo.
Formulario1 que presenta registros de Tabla1. La propiedad 'Permitir filtros' del formulario está establecida a 'Sí'. Esta Tabla1 tiene un campo 'ID' (clave principal) y un campo 'Descripcion'. En este ejemplo el Formulario1 tiene en su propiedad 'Origen del registro' la Tabla1 (o una consulta basada en ella), y tendría dos cuadros de texto con la propiedad 'Origen del control' en los dos campos de la tabla. Si te desplazas a un nuevo registro, puedes introducir los dos datos solicitados y guardar ese registro en la Tabla1. Si te encuentras en un registro ya existente e intentas cambiar el valor del campo 'ID' estarás cambiando ese valor en el registro activo que tengas en pantalla (suponiendo que introduzcas un valor que no exista en otro registro al ser clave principal). Es decir, no te desplazas a ese registro, lo que estas haciendo es intentar cambiar el valor de 'ID' del registro en el que estás. Para poder ir a un registro en concreto y poder editarlo hay varias maneras de hacerlo. Una de las más sencilas ya que requiere poco código VBA es la que te explico a continuación.
Añade al Formulario1 un cuadro de texto independiente (no basado en ninguno de los campos de la Tabla1 en mi ejemplo), y llamalo por ejemplo 'TxBuscar'. Establece su propiedad 'Punto de tabulación' a No para que no te moleste hasta que no decidas usarlo, y colócalo en el orden de tabulación de modo que no sea el último campo del formulario. Si te mueves por los registros verás que ese campo no presenta ningún valor al ser independiente. En diseño del formulario presiona el generador en la propiedad 'Después de actualizar' del cuadro de texto 'TxBuscar'. Escribe lo siguiente en la ventana de código:
Dim miFiltro
If IsNull(Me.TxBuscar) Then
     Me.FilterOn = False
Else
     miFiltro = "[ID] = " & Me.TxBuscar
     Me.Filter = miFiltro
     Me.FilterOn = True
End If
Esto en el caso de que el campo 'ID' sea un campo nnumérico. Si el campo'ID' es de texto modifica la linea que comienza por miFiltro= por la siguiente:
     miFiltro = "[ID] = '" & Me.TxBuscar & "'"
Es importante que escribas las comillas simples y dobles correctamente. Las que se encuentran antes del carácter & son comilla doble seguida de comilla sencilla. Las del final son comilla doble seguida de comilla sencilla seguida de comilla doble.
Si quieres, después de cada linea Me. FilterOn... puedes añadir una linea que envíe el enfoque a un campo determinado, en nuestro caso añadiríamos en las dos nuevas lineas lo siguiente:
     Me. Descripcion. SetFocus
Estas lineas de código sencillo hacen lo siguiente: Comprueban el valor que hayas escrito en el cuadro de texto 'TxBuscar'. Si no hay nada (por ejemplo tras una búsqueda presionas suprimir en este cuadro y lo dejas vacío) establece a falso la propiedad de filtrado de datos del formulario, enseñándote por tanto de nuevo todos los registros. Por el contrario si escribes un valor activan la propiedad de filtrado y le pasan como valor para filtrar lo que hayas escrito. Si el valor existe el formulario te presentará exclusivamente ese registro y podrás editarlo (si está activada la edición de registros normalmente en el formulario). Si escribes un valor que no existe el formulario no presentará ningún registro. Basta con que escribas un valor válido o vacíes TxBuscar y presiones intro para volver a visualizar un registro o todos ellos de nuevo.
Espero que te sirva. Si prefieres otro enfoque o añadir mayor funcionalidad/comodidad (botón que borre el valor del campo TxBuscar y presente directamente todos los registros...) házmelo saber.
Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas