ACCESS. Control Grupo Opciones, cambiar los números por palabras.

Soy yahovir novato en access, tengo access 2010.

Tengo una base de datos, he puesto un control de grupo de opciones y me gustaría que me apareciera en la tabla donde se guardan los datos, en vez de números (1, 2, y 3), pues palabras como FUGA, SUST. Componentes, o camb. Refrigerante.

Me gustaría que me lo explicaseis bastante detallado, porque he visto alguna respuesta al respecto y no logro realizar, por ejemplo ponen, (desvincula el cuadro de opciones del campo donde quieres almacenar los datos", no logro desvincular. Esto lo haces seleccionando el grupo, activando la ventana de propiedades (Menú "ver", "Propiedades") y en la ficha llamada "Datos" borras lo que exista en "origen del control".
Luego en la misma ventana entras a la ficha "eventos" y escoges "Después de actualizar", al final aparecen ... Los oprimes y escoges "Generador de código" ) luego viene como generarlo.

2 respuestas

Respuesta
2

No dices si el control Grupo de opciones tiene Origen del control(Propiedades-Datos-Origen del control). Vamos a suponer que si(aunque da lo mismo)que depende de un campo de una tabla. Lo mejor es que en la tabla crees otro campo, y llámalo por ejemplo Descripción tipo texto.

En el formulario, supongamos que el grupo de opciones se llama Elegir(Propiedades-Otras-Nombre). También en sus Propiedades-Eventos-Después de actualizar

Le das a la flechita y te aparecerá Procedimiento de evento. Haz clic sobre él y luego le das al botón con los tres puntos. Se abrirá el editor de VB y entre Private Sub Y end sub escribe:

select case elegir

case is=1

descripción="FUGA"

Case is=2

descripción="SUST"

Case is=3

Descripción="Componentes..."

cuando hayas terminado de poner las opciones que quieras, terminas con

End Select

Otra forma, la pongo aparte para que no te líes. Si en la tabla ya tienes muchos registros, con los valores 1,2,3,.. en el campo donde los guardas, añádele el campo Descripción. Luego puedes hacer una consulta de actualización, Agrega los campos Descripción y el campo de los números. Debajo de Descripción donde pone actualizar a: pones FUGA y debajo del campo numérico, en Criterios pones 1. Le das a ejecutar y en la tabla, en todos los registros que tengan un 1 en Descripción te pondrá FUGA y así sucesivamente para los demás números.

Respuesta
1

Yahovir: Con Access 2010, abre el Formulario donde tengas el Grupo de Opciones en Vista de Diseño.

Marcas el recuadro según la figura que te adjunto.

Una vez Marcado: Arriba en la Cinta de Opciones verás Diseño, lo pulsas y al desplegarse la cinta de Opciones casi al final y a la derecha verás >> Propiedades. Se teabrira a la derecha la banda de Propiedades con 5 Pestañas.

Eliges Datos y según te muestro simplemente borras (quitas) el Origen de Control de modo que quede en blanco.

Tal como dice arriba, pulsas en la Pestañe Eventos, y en la Tercera Fila está ese Evento.

A la derecha hay un pequeño botón con tres puntos.

Pulsa ese bón y se te abrirá una pequeña ventana emergente con tres opciones.

Elige la última >> "Generador de Código". Al pulsar Aceptar se te irá al Editor de VBA y te habrá escrito algo así.

Private Sub GrpOpcEntrega_AfterUpdate()

End Sub

Lo que te señalo en Negita y Cursiva es el Nombre que yo le he dado a mi Grupo de Opciones. A ti te saldrá el que tengas.

A partir de ahí el Código que va entre el private Sub y el EndSub al parecer ya lo tienes.

Si tienes dudas me comentas. Saludos >> Jacinto

¡Gracias! 

Gracias a las respuestas, Gracias por vuestro tiempo y ayudarnos a los que no sabemos.

He logrado que me funcione y en la tabla se grabe los nombres.

Pero necesito los dos datos, 1º que se queden marcados en el formulario las casillas para poder imprimirlo y 2º en otros formularios las palabras correspondiente a lo que he marcado en el formulario. Voy a seguir investigando y leyendo buscando solución. 

¿Hay forma de crear otro campo y que en el campo nuevo se graben los nombres?.

Yahovir: Claro que es posible, añadiendo un Campo a tu tabla y un control en tu Formulario.

En el evento AfterUpdate del Grupo de Opciones le pones el Código que te comentaba Icue del Select Case  o con If ....... ElseIf .........Else...End If.

Para actualizar los que ya tengas, también Icue te da una solución, por una Consulta de Actualización. Si tienes dificultades nos comentas. Saludos >> Jacinto

Hola Jacinto, gracias por tan rápida contestación.

Ahora si que no comprendo lo que me dices con el código, Icue del Select Case  o con If ....... ElseIf .........Else...End If.

Puedes ponerme el ejemplo. yo hasta el momento tengo este código:

Private Sub Marco307_AfterUpdate()
Dim Valor
Select Case Marco307
Case 1
Valor = "FUGA"
Case 2
Valor = "SUSTI.COMPONENTES"
Case 3
Valor = "CAMB.REFRIGERANTE"
End Select
Motivo_Intervención = Valor
End Sub

Te agradezco el interés, Saludos

Yahovir: Ya está bien ese código que utilizas y yo lo suelo utilizar cuando el sondeo tiene más de un Valor, pero puedes usar También:

Private Sub Marco307_AfterUpdate()
If Me.Marco307.Value = 1 Then

Me.[Motivo_Intervención] = "FUGA"

ElseIf Me.Marco307.Value = 2 Then

Me.[Motivo_Intervención] ="SUSTI.COMPONENTES"

Else

Me.[Motivo_Intervención] ="CAMB.REFRIGERANTE"

End If
End Sub

Es solo una Alternativa

Supongo que el Control que has incorporado en tu Formulario se llama Motivo_Intervención . Saludos >> Jacinto

Perdóname Jacinto pero soy muy bruto, no lo logro, ahora lo que he hecho a sido dejarlo como al principio el CONTROL, y he creado en la misma tabla otro campo, le he llamado (Motivo), para que al decirle que si CONTROL es 1 me graba el 1 en la tabla, en el campo (Motivo_Intervención), lo que quiero es que me grabe también en la tabla que he creado 1 = "FUGA"  pero no me lo graba los dos datos. Me explico? He hecho esto, no se si esta bien.? No debe estarlo porque no me lo graba, claro está.

Private Sub Marco307_AfterUpdate()
Dim Valor
Select Case Marco307
Case 1
Valor = "FUGA"
Case 2
Valor = "SUSTI.COMPONENTES"
Case 3
Valor = "CAMB.REFRIGERANTE"
End Select
Motivo = Valor
End Sub

Yahovir: Vayamos al principio cuando tenías un Grupo de Opciones, y como Orgen de Datos el Campo de tu Tabla. Si noleo mal es lo que tu te refieres a CONTROL

Apartir de ahí parece ser que tienes:

En la Tabla >> 1 Campo que se llama Motivo, que debe ser el Origen del "Control" Marco307 y que te guardará sin más 1, 2 o 3 según lo que selecciones.

Otro Campo que veo llamas Motivo_Intervención (Ojo con los acentos, a veces los olvidamos en el código)

En el Formulario, aparte del Grupo de Opcines lógicamente has de tener un TextBox cuyo Nombre sea TxtMotivo_Intervención o como tu quieras llamarlo.

Ese TextBox tiene que tener como Origen de Control el Campo de la Tabla en el que lo quieres guardar. Suponemos Motivo_Intervención

El código que citas ya está bien, solo que donde pones Motivo = Valor, si es que el TextBox se llama TxtMotivo_Intervención debes poner Me.TxtMotivo_Intervención = Valor y si no el Nombre que tenga el TexBox.

Donde Pones Dim Valor, yo pondría : Dim Valor As String, pero eso no debe ser motivo de error.

Si quieres guardar otro literal, simplemente lo citas.

Ejemplo. Valor = "1.- FUGA"

Espero que ahora soluciones el tema y si no me comentas. Saludos >> Jacinto

Hola nuevamente Jacinto, como ves no he conseguido lo que me propongo todavía, voy a empezar como bien dices tú, efectivamente tengo una tabla con dos campos, en uno quiero que del Control Grupo Opciones tengo tres campos.

Lo que quiero que en Motivo_Intervención se grabe, que lo hace bien, los campos que voy marcando en el Control Grupo de Opciones. Pero como ves, en el campo Motivo pues para verlo en otras Consultas y Formularios y no ver 1, 2 o 3, quiero que ponga el nombre de lo que quiero ver, si el campo de Motivo_Intervención es 1, en Motivo quiero ver el nombre que es “FUGA”. El 2, ver “SUSTI.COMPONENTES”, y el 3 ver “CAMB.REFRIGERANTE”.

Esta es la estructura que veo en el Formulario.

Este es el formulario del Marco307, que es el que estoy usando.

He quitado en la Hoja de Propiedades Motivo_Intervención, lo he puesto, pero no lo graba de ninguna manera, a ver si así me encuentras el fallo.

Esta es la estructura que me habéis dado en Todoexpertos para que lo hiciera, pero no me lo graba en la tabla, y no se donde está el fallo.

Gracias nuevamente, como te dije a si que me hablas un poco técnico me pierdo, ya que soy novato en Access.

Un saludo Jacinto.

Yahovir: Tal como lo tienes añade un TextBox mas o menos donde te señalo.

En la Propiedades >> Formato, le pones si quieres Visible en No.

En las propiedades >> Datos >> Origen del Control le pones >> Motivo.

En Propiedades >> Otras >> Nombre le pone TxtMotivo, por ejemplo

Y ahora vamos al Código:

Private Marco307_AfterUpdate

Dim StrMotivo As String

Select Case Me.Marco307.Value

Case1

StrMotivo = "FUGA"

Case 2
StrMotivo = "SUSTI.COMPONENTES"
Case 3
StrMotivo = "CAMB.REFRIGERANTE"
End Select
Me.TxtMotivo = StrMotivo
End Sub

Espero que ahora lo hayamos solucionado. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas