PDA

Ver la versión completa : Otros Lenguajes ¿Celdas dependientes con Access?



Drumpi
23/01/2016, 20:43
Hola a todos:

Mi hermana está con un trabajo de clasificación, y me ha pedido ayuda para crear una BD. La pega es que es de Access.
La cosa es que necesita crear una tabla ("tablaPrincipal") para clasificar huesos, y tiene una columna llamada "región" que indica la parte del cuerpo (cabeza, brazo, pierna...) cuyas casillas son combobox con valores de otra tabla (tabla "regiones").
El problema viene en la siguiente columna, que es "hueso", y debería aparecer en sus celdas un combobox que muestre sólo los huesos de una determinada región (no queremos que salga "fémur" si se ha seleccionado la región "cabeza").

Lo más que he conseguido es que, creando una tabla aparte que relacione cada hueso con una región, intente filtrar los datos. Hay un campo en la "vista diseño" llamada "Origen de control" donde se puede escribir algo similar a SQL. Con la sentencia:

SELECT [tablaRelacion].[Id], [tablaRelacion].[hueso] FROM [tablaRelacion];

Me devuelve los diferentes nombres de los huesos (y sí, necesita el ID para que aparezcan los textos), pero en cuanto intento filtrarla:

SELECT [tablaRelacion].[Id], [tablaRelacion].[hueso] FROM [tablaRelacion] WHERE [tablaRelacion].[region] = [tablaPrincipal].[region];

Sólo aparecen los valores de una región, que cambia en cada ejecución (por ejemplo, da igual que ponga brazo o cabeza en la región, que los huesos que aparecen son fémur, tibia y peroné, y al siguiente día pueden ser húmero, cúbito y radio).

¿Alguien sabe cómo hacerlo? Los tutoriales de internet no nos aclaran nada.
Y antes de que preguntéis: sí, le he dicho que podría intentar hacerle un programita en Java con MySQL en un par de semanas, pero necesita que sea con access.

swapd0
23/01/2016, 20:49
¿Eso no seria una consulta con parámetros? El parámetro de la consulta es la región elegida.

Ufff, hace eones que no toco SQL.

Drumpi
24/01/2016, 19:23
Sí, pero necesito esos valores para introducir los datos en la "tablaPrincipal".
Lo que sospecho es que no sé indicar que el parámetro que solicito (la región) es la de la celda de al lado, pero lo mismo hay más fallos en la expresión o incluso en la manera en la que estoy intentando de hacerlo.

swapd0
24/01/2016, 21:24
Vamos a ver, si haces

SELECT [tablaRelacion].[Id], [tablaRelacion].[hueso] FROM [tablaRelacion] WHERE [tablaRelacion].[region] = region;

Seleccionara los huesos que esten en la región que le pases, eso es lo que quieres, ¿no? Región seria el parámetro, otra opción que usaba cuando no me enteraba de como iban los parámetros es crear ese string y le concatenas el valor de la región, despues se lo pasas al objeto SQL para que lo parsee. Seria en plan.

SELECT [tablaRelacion].[Id], [tablaRelacion].[hueso] FROM [tablaRelacion] WHERE [tablaRelacion].[region] = 'cabeza';
SELECT [tablaRelacion].[Id], [tablaRelacion].[hueso] FROM [tablaRelacion] WHERE [tablaRelacion].[region] = 'tronco';

Es mas chapucero pero debería de funcionar igual, solo tienes que pasarle el valor del combo de la región o pasárselo como parámetro.

Drumpi
26/01/2016, 19:14
Gracias, le echaré un vistazo, a ver si así...