Guardar datos de combobox en cascada en Access.

Espero estés muy bien.

Acudo a tu ayuda por que he visto y leído que eres un experto que ha resulto muchas dudas en Access y tus respuestas son entendibles y concretas.

Mi pregunta es la siguiente.

Tengo dos Combobox, que están en cascada. Un combobox es llamado Tecnología, contiene dos campos en su tabla llamada Tecnología, (referencia tipo autonumérico) y (descripción tipo texto), y contiene:

Referencia descripción

0 Celdacontrol1

1 Celdacontrol2

2 Celdacontrol3

3 Celdacontrol4

4 Celdacontrol5

Origen del control: Tecnología (tabla).

Tipo de origen de la fila: Tabla/Consulta.

Origen de la fila: SELECT Tecnologia. Referencia, Tecnología. Descripcion FROM Tecnología ORDER BY Tecnología.Referencia;

Columna dependiente 1.

El otro Combobox es llamado Cubículo. Que corresponde a los cubículos que componen las distintas celdacontrol. Estos cubículos varían en cada celda control. Por ejemplo Celdacontrol1 contiene: CC, Ducto, Envoltura y Modulo Especial Mientras que Celdacontrol2 Contiene Racks, Compartimiento intermedio, accesorios especiales, y cableado no blindado. Así mismo varían para los distintos celdacontrol.

Esta tabla (Cubículo) contiene 3 campos:

(Id autonumérico, Referencia (numero) y descripción (texto)

Id referencia descripción

1 0 cc

2 0 ducto

3 0 envoltura

4 0 modulo especial

5 1 racks

6 1 compartimiento intermedio

7 1 accesorios especiales

...

El combobox llamado cubículo que toma los valores de la respectiva tabla, tiene estas propiedades.

Origen de Control: Cubículo (Tabla)

Tipo de Origen de la fila: Tabla / Consulta

Origen de la fila:SELECT Cubiculo.id,Cubículo.Descripcion FROM Cubículo (WHERE (((Cubículo.Referencia)=Form!Tecnologia.Value)) ORDER BY Cubiculo.Descripcion;

Columna dependiente 2.

La cuestión es que a la hora de almacenar los respectivos valores en otra tabla llamada principal, que contiene el campo llamado tecnología(donde almaceno lo que capturo del combobox llamado tecnología, y tipo ( donde almaceno lo que capturo del combobox llamado Cubículo) No me esta almacenando bien. En este caso, en la tabla principal, campo tecnología, me almacena la referencia, es decir, me almacena el identificador, y quiero almacenar la descripción. Entre tanto, en el campo tipo, si me esta almacenando lo que deseo, que es la descripción del cubículo. ¿Podrías ayudarme con este problema?

En el segundo combobox llamado Cubículo, cambie la columna dependiente, para que me almacenara lo que deseo, por que si usaba como columna dependiente la 1, tendría el mismo problema que te describo, que es el del almacenamiento de los identificadores, mas no de las descripciones que es lo que finalmente requiero.

Perdona si me extendí mucho, pero he querido explicar todo de la mejor forma posible, para así hallarle una solución mas concisa.

1 Respuesta

Respuesta
1

En segundo lugar, un par de comentarios sobre tu BD y tu "Problema":

1º/ Si tu tabla principal la relacionas con las tablas Tecnologías y Cubículos (que por lo que comentas no están relacionadas o no del todo correctamente), tu problema se resuelve por si solo.

Verás: En tu tabla Principal, en vista diseño, en el campo tecnología (que debería ser numérico si están bien relacionadas las tablas) te vas a la pestaña Búsqueda, y cambias Mostrar Control de cuadro de texto a cuadro combinado, y lo configuras como el de tu combo Tecnologías del formulario (Columna dependiente:1, Num. de columnas: 2, y para que se vea la descripción y no la referencia, en ancho de columnas pones: 0 cm ; 2.54 cm (o lo que te haga falta para que se vea entero))

Lo mismo con el campo tipo.

En la ventana de relaciones, si no las tienes ya creadas, arrastras el campo referencia de la tabla tecnologías al campo tecnología de principal, y creas la relación (uno a varios) y lo mismo con el cubículo.

2º/ Si no tienes las relaciones creadas, y ya tienes muchos datos metidos, el método que comento arriba te obligaría a borrar datos y meterlos de nuevo, con el incordio que supone.

Como alternativa, abres el formulario en vista diseño, y al combo tecnología le borras el origen de control, para hacerlo independiente. En la pestaña Eventos, seleccionas Después de Actualizar, y le das al botoncito con 3 puntos que aparece a la derecha de la fila, y eliges generador de código. Se te abrirá el editor de Visual Basic, y ahí escribes, entre las lineas Private Sub ... y End Sub, lo siguiente:

Dim vTecnologia as String

Si el combo está vacío, salimos sin más

If IsNull(Me.Tecnología) Then Exit Sub

'Cogemos la descripción para el valor seleccionado

vTecnologia=Me.Tecnología.Column(1)

'La pasamos al cuadro de texto oculto que va a la tabla

Me.txtTecnologia=vTecnologia

Y para acabar, creas en tu formulario un cuadro de texto, llamado txtTecnologia,

Con la propiedad visible en No, y con Origen de control el campo Tecnología de la

Tabla principal (el mismo que tenias en el combo originalmente)

Si no lo quieres hacer por código, te creas este cuadro de texto óculo, y en su

Origen de control le pones:

=[Tecnología].Column(1)

Y le borras el origen del control al combo Tecnología.

Hola!

Gracias por la prontitud en tu respuesta. La solución aunque curiosa, funciona! me funciono programándolo en VBA tal y como tu me lo mencionaste. Y finalmente agrega las dos descripciones.

Quería aclararte que por supuesto las relaciones están creadas, pero tu solución, respecto al inconveniente, al cual me mate la cabeza bastante tiempo, finalmente funciona. Gracias, y un cordial Saludo,!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas