Displayar todas las opciones de un cuadro de lista en un subformulario de access

Tengo un problema con un subformulario de access, que contiene un control FICHA donde  cada ficha se debe completar un subformulario de tipo Hoja de datos. En campo llamado CHECK LIST, es un cuadro combinado y se debe seleccionar cada una de las opciones que aparecen y proceder a clasificarlas como: [OK], [REGULAR], [MALO], [FALTANTE], adjunte una pantalla donde se aprecia que para la FICHA = Motor, se precisa seleccionar 06 opciones, Hay alguna forma para que al selecionar la ficha MOTOR, estas 6 opciones aparezcan escritas en el campo Checklist sin necesidad de seleccionar una por una?

Ya que de esta manera solo se tendria que llenar los campos  [OK], [REGULAR], [MALO], [FALTANTE]

Agradezco la ayuda a mi pedido, tengan muy buenas noches.

1 Respuesta

Respuesta
2

Lo puedes hacer de mil formas, habría que saber como son las tablas origen del formulario, subformulario y cuadro de lista.

Si tengo el formulario Formulario1, donde no sería necesario que se viera el Idloquesea, pero es el campo que relaciona el formulario con el subformulario y un subformulario, en este caso se llama Aux basado en la tabla Aux, que tiene los campos Idloquesea, numérico y los campos NombreCliente, quesí y queNo, por poner alguna casilla de verificación. Como te decía, no se de donde salen los conceptos a añadir por eso voy a utilizar NombreCliente de la tabla Clientes

Cuando pongo el cursor en el cuadro en blanco de NombreCliente

Lo único que le digo, en el evento Al hacer clic del cuadro de texto NombreCliente

Private Sub NombreCliente_Click()
If Me.NewRecord Then
DoCmd.RunSQL "insert into aux(nombrecliente) select nombrecliente from clientes where pais=""España"""
DoCmd.RunSQL "update aux set idloquesea=forms!formulario1!idloquesea where idloquesea is null"
Me.Requery
End If
End Sub

Marco lo que tenga que marcar y me voy a otro registro del formulario y cuando, habiendo rellenado algun control del formulario pongo el cursor en el sitio de antes

De forma que la tabla Aux me queda

Por cierto, déjame decir una cosa, jamás de los jamases le he visto utilidad ninguna a los formularios en vista hoja de datos, y llevo años en esto.

Hola y gracias por tu pronta respuesta, prove lo que dices y funciona perfecto pero para un registro, te explico mejor mi problema para que puedas orientar tu ayuda, la cual desde ya agradezco.

Tengo una tabla que contiene las opciones que se deben mostrar en un cuadro combinado, esta tabla tiene 3 campos [id], [Sistema], [Opción].

Luego tengo un formulario con su subformulario, ambos están relacionados por un campo llamado [AT1], el asunto radica en que en el subformulario tengo un control ficha que tiene como viste en la foto, una ficha con el nombre de cada sistema (Motor, Hidráulico...) que guarda relación con la tabla de opciones que se mostrara en el cuadro combinado.

Entonces, y acá surge mi pregunta, para el MOTOR, existen 06 alternativas que seleccionar, pero no quiero ir una por una, lo que necesito es que al pulsar la ficha MOTOR, en el sub formulario aparezcan llenas 06 filas, cada una con una alternativa, esto haría que no este yendo a un registro nuevo y abriendo el control para tomar la siguiente opción para el motor, espero puedas ayudarme. Gracias por lo que puedas hacer

Es exactamente igual. Al no saber como tenías las tablas le puse unos valores inventados. Si tengo la tabla Opciones, que supongo que debe ser así

Los demás los pones tu.

Y tengo, por ejemplo, ya que al no saber como son las tablas las he puesto todas igual, la tabla Motor

Si tengo el formulario, que he visto que le has llamado AT1(basado en la tabla AT1, que tiene esos campos que ves)

Si hago clic en el cuadro de texto Opcion

Ahora me voy a la solapa Combustible

hago lo mismo y 

Ahora me voy al registro de mi coche y hago lo mismo

Y así con todos los demás.

El código del evento Al hacer clic del cuadro de texto Opcion del formulario Motor( un subformulario no deja de ser un formulario) es

Private Sub OPCION_Click()
If Me.NewRecord Then
DoCmd.RunSQL "insert into motor(opcion) select opcion from opciones where sistema=""Motor"""
DoCmd.RunSQL "update motor set at1=forms!at1!at1 where at1 is null"
Me.Requery
End If
End Sub

Para el cuadro de texto Opción del formulario Combustible es lo mismo sólo cambiando de nombres, donde insertar y donde actualizar

Private Sub OPCION_Click()
If Me.NewRecord Then
DoCmd.RunSQL "insert into combustible(opcion) select opcion from opciones where sistema=""Combustible"""
DoCmd.RunSQL "update combustible set at1=forms!at1!at1 where at1 is null"
Me.Requery
End If
End Sub

Para los demás sería exactamente igual.

¡Gracias! Excelente tu aporte, dime, ¿mi valoración llego a tu respuesta no? Di la más alta que ofrece esta web ... GRACIAS TOTALES !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas