Access - Combos en cascada

   
Vista:
Imágen de perfil de Atom5800

Combos en cascada

Publicado por Atom5800 (27 intervenciones) el 28/06/2013 17:32:09
Hola a todos,
Como siempre aquí molestando.

Ya he visto unos ejemplos de combos en cascada y logre hacerlos que funcionen por ejemplo de un país, el estado, sigue el municipio, sigue la comunidad, pero solo en formularios donde solo hay un registro, como un formulario para agregar zonas o regiones.

En formularios donde hay mas de un registro NO funciona porque al cambiar o agregar registros se cambia los detalles de los registros anteriores, por ejemplo si tengo 5 registros guardados y cambio la comunidad de uno de ellos, la comunidad de los anteriores se pone en blanco.

Repito: Ya vi el ejemplo del MASTER Neckkito, funciona bien y logre hacerlo en un formulario independiente, pero en un formulario de varios registros no funciona bien, por ejemplo tengo un formulario donde ingreso las escuelas y detallo de que departamento o estado es, sigue el municipio y sigue la comunidad, al cambiar la comunidad de un registro existente, la comunidad del registro anterior se pone en blanco, si cambio o agrego una escuela, selecciono el departamento, municipio y comunidad, la comunidad o el municipio del registro anterior se pone en blanco.

Hay alguna otra forma de hacer Combos en Cascada o hay que agregar algo mas al código del ejemplo de Neckkito.


http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/controles/96-ejemplos-explicados/ejemplos-de-controles/144-combos-en-cascada

Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Combos en cascada

Publicado por jose (741 intervenciones) el 28/06/2013 18:49:22
SALUDOS Atom5800

En realidad ésta cuestión es facil pero suscita muchas dudasentre los foreros , por ello voy a explicar la idea con la cual se tiene que hacer


1 supongamos que tenemos que encadenar 3 cuadros combinados cc1, cc2 y cc3 que tienen su origen en tres tablas tabla1 tabla2 y tabla3 respectivamente.


2 El primero (cc1) tiene que tener en datos origen de filas algo así : select dato1, dato2 from TABLA1

3.- el segundo (cc2) tiene que tener en datos origen de filas algo así : select dato1, dato2 from TABLA2 where dato_n= cc1

3.- el tercero (cc3) tiene que tener en datos origen de filas algo así : select dato1, dato2 from TABLA3 where dato_n= cc2


y es en éste cc3 donde en el evento despues de actualizar pasa el dato a donde queramos o bien lo utilizamos para ponerlo com o origenen de registro
ejemplo : me.reocrsource="select * from detalle WHERE DATO_X = " & STR$( CC3.COLUMN(0) ) ---SUPONIENDO QUE SEA NUMERICO , SI NO SSERÍA DE OTRA FORMA pero no es el asunto de ésta consulta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Combos en cascada

Publicado por jose (741 intervenciones) el 28/06/2013 20:06:02
se me olvidaba decir que tenemos que ir actualizando los cuadros combinados con los nuevos nalores con

DoCmd.Requery "CC"



1 supongamos que tenemos que encadenar 3 cuadros combinados cc1, cc2 y cc3 que tienen su origen en tres tablas tabla1 tabla2 y tabla3 respectivamente.


2 El primero (cc1) tiene que tener en datos origen de filas algo así : select dato1, dato2 from TABLA1
en el evento despues de actualizar poner DoCmd.Requery "CC2"


3.- el segundo (cc2) tiene que tener en datos origen de filas algo así : select dato1, dato2 from TABLA2 where dato_n= cc1
en el evento despues de actualizar poner DoCmd.Requery "CC3"

4.- el tercero (cc3) tiene que tener en datos origen de filas algo así : select dato1, dato2 from TABLA3 where dato_n= cc2


y es en éste cc3 donde en el evento despues de actualizar pasa el dato a donde queramos o bien lo utilizamos para ponerlo com o origenen de registro
ejemplo : me.reocrsource="select * from detalle WHERE DATO_X = " & STR$( CC3.COLUMN(0) ) ---SUPONIENDO QUE SEA NUMERICO , SI NO SSERÍA DE OTRA FORMA pero no es el asunto de ésta consulta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Combos en cascada

Publicado por marina marynags@hotmail.com (37 intervenciones) el 09/07/2013 11:41:53
Hola... el mismo problema tengo yo. en formularios unicos funcionan perfectamente, pero en hoja de datos, el segundo combo dependiente del primero aunque en la tabla tiene los datos, se queda en blanco, y aunque puedes cambiar, al cambiar de registro se vuelve a quedar en blanco, no entiendo como hacer la parte final que indicas.

Me podrias dar más detalles... gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Combos en cascada

Publicado por jose (741 intervenciones) el 09/07/2013 12:28:33
LOS COMBOBOX tienen que estar en el encabezado del formulario

si a pesar de ésto no te funciona tendrás que plantearte hacer un formulario con subformulario y el formulario principal poner los combox
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Combos en cascada

Publicado por marina Marynags@hotmail.com (37 intervenciones) el 09/07/2013 13:30:58
Hola

Estoy intentando hacer los que explicas más arriba.. pero no me queda claro la expresión...

me.reocrsource="select * from detalle WHERE DATO_X = " & STR$( CC3.COLUMN(0) )

Entiendo que seria así:

1. El select es de la tabla origen donde se forma el formulario y Dato_x sería el campo que corresponde al combo final en mi caso combo2, abria que ponerle & str$(Combo2.Column(0)) en la columna... ? que número es la posión de la columna de ese campo en la tabla?

2. Lo he intentando pero me da error...

Me.RecordSource = "SELECT [Tabla datos formulario].*, [Tabla datos formulario].CampoTabla FROM [Tabla datos formulario] WHERE ((([Tabla datos formulario].CampoTabla )=Str$([Formulario1].[Combo2].COLUMN(4))));"

3. Me sigue saliendo en blanco algunos si otros no.. y cada vez que cambio el combo2 me sale el siguiente error la funsión no esta definida en la expresión [Formulario1].[Combo2].COLUMN(4)..


4. Y en cuanto lo que comentas lo que quiero hacer es lo siguiente:

Tengo una tabla con los datos.. en principio correctos... pongamos como ejemplo CampoProvincia y CampoMunicipio... necesito hacer el formulario.. para comprobar que los campos estan correctos es decir.. puede ser que al introducir el codigo del CampoMunio hayan introducido otro erroneo ya que estos datos son exportaciones de un excel.. si bailan el codigo numerico del CampoMunicipio.. me cogerá otro municipio y otra pronvincia... por eso necesito el formulario con los dos despleagables...

1. que me salieran todos los datos.. y si se han equivocado.. pudiera elegir la pronvicia correcta y en el segundo combo.. el municipio correcto.. y me guardaria solo los codigos... esta opcion en registro unicos.. funciona perfectamente.. me coge los datos originales de la tabla.. y si tengo que cambiar los cambia.. y perfecto.. el problema me surge ahora.. al hacerlo en una vista hoja de datos.. ya que son muy pocos datos no tiene sentido hacerlo en registro unicos....

no se se mi explico... gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Atom5800

Combos en cascada

Publicado por Atom5800 (27 intervenciones) el 09/07/2013 16:07:23
Hola marina, no le entiendo mucho a tu comentario pero hablando de campos en cascada te doy otra opción:

Gracias a José por su aporte, yo lo resolví de la siguiente manera:

En el primer campo pones el origen de fila con las tablas que necesites, estas deben estar relacionadas o anidadas, es decir si tienes una tabla de provincias y de municipios estas deben estar relacionadas por un campo en común y único que seria idProvincias en la tabla de municipios. Bueno haces el origen de fila con las tablas y pones los campo con los índices de cada una: idProvincias, provincias, idMunicipio, Municipio, notas aquí son 4 columnas. configuras el ancho de las columnas así: 0,3,0,3, así los índices no se ven. Acuérdate de poner el idProvincias primero para que al seleccionar la provincia guarde el numero correspondiente a la provincia, obviamente en el campo provincia.

Ahora un código pequeño: en la acción después de actualizar del campo1 (Provincias) pones me.municipio = me.provincia.Column(2), esto actualiza el idMunicipio del campo municipio tomando tu selección anterior. (se pone column(2) porque Access comienza a contar desde la columna 0).

Bloqueas el campo municipio para que no puedan hacer cambios, puesto que lo hacen desde el campo provincias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Combos en cascada

Publicado por marina (37 intervenciones) el 09/07/2013 17:17:06
Hola

no me vale como dices... ya que el campo municipios es una relación uno a varios.. es decir que por cada provincia hay varios municipios.. en la tabla estan relacionados.. es un formulario para tomar los datos de las tablas y en caso de necesitar corregirla poder elegir una provincia y su municipio.. cada provincia puede tener uno o varios municipios, con lo cual no puedo bloquear el campo municipio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar