Access - Actualizar combos en cascada

   
Vista:

Actualizar combos en cascada

Publicado por Marta (5 intervenciones) el 20/07/2017 11:26:58
Buenos días,

tengo una base de datos en access, hice un formulario con cuadros combinados en cascada (a través de consultas para cada cuadro).

Necesito que se actualicen los cuadros combinados cuando me equivoco al elegir una opción, y que no se queden las opciones de la primera elección.

Y si es posible que si elijo un cuadro combinado superior, pues que los inferiores se pongan en blanco.

no me sirve .requery

y este es el código que tengo, que seguro que habrá que modificar algo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Option Compare Database
 
Private Sub CBOCENTRO_Change()
Me.CBOCODIGOCURSO.Requery
Me.CBONOMBRECURSO.Requery
End Sub
Private Sub CBOCODIGOCURSO_Change()
Me.CBODOCENTE.Requery
Me.CBONOMBRECURSO.Requery
End Sub
 
Private Sub CBODOCENTE_Change()
Me.CBOCODIGOCURSO.Requery
Me.CBOCENTRO
End Sub
 
Private Sub CBONOMBRECURSO_Change()
Me.CBOCENTRO.Requery
Me.CBODOCENTE.Requery
End Sub
 
Private Sub CBOEMRECU_Change()
Me.CBOTIPCUR.Requery
Me.CBOCENTRO.Requery
End Sub
 
Private Sub CBOTIPCUR_Change()
Me.CBOCENTRO.Requery
Me.CBOISLA.Requery
End Sub
 
Private Sub CBOCODIGOCURSO_AfterUpdate()
Me.CBODOCENTE.Requery
Me.CBONOMBRECURSO.Requery
End Sub
 
Private Sub CBODOCENTE_AfterUpdate()
Me.CBOCODIGOCURSO.Requery
Me.CBOCENTRO
End Sub
 
Private Sub CBONOMBRECURSO_AfterUpdate()
Me.CBOCENTRO.Requery
Me.CBODOCENTE.Requery
End Sub
 
Private Sub CBOCENTRO_AfterUpdate()
Me.CBOCODIGOCURSO.Requery
Me.CBONOMBRECURSO.Requery
End Sub
 
Private Sub CBOEMRECU_AfterUpdate()
Me.CBOTIPCUR.Requery
Me.CBOCENTRO.Requery
End Sub
 
Private Sub CBOTIPCUR_AfterUpdate()
Me.CBOCENTRO.Requery
Me.CBOISLA.Requery
End Sub



Sin-titulo
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

Actualizar combos en cascada

Publicado por Anonimo (681 intervenciones) el 20/07/2017 22:14:25
Lo primero, para que un combo muestre un dato, ese dato ha de estar en el combo y si se desease que 'apareciese en blanco' habria qie ponerle una condicion tal que no cumpliese ninguno de los items el el contenido (o cambiar el propio origen de datos del combo).

Lo segundo, en una serie de combos en cascada, el cambio de uno cualquiera de ellos EXIGE que se actulicen (si: REQUERY) todos y cada uno de los que dependan de el (no solo el siguiente, pues 'el siguiente' (con la excepcion del ultimo) tambien tendra otro que de el dependa.

La actualizacion ha de ser en el mismo orden que imponga su depedencia, intentare aclararlo ....
A,B, C, D, E, F

Se supone que todos son combos y que B depende de A, C depende de B, D depende de C ... etc.

Si se modifica A, se deberia actualizar B (con requery normalmente) y tras ello actualizar D y tras ello D ... y finalmente F
Si la modificacion se efectuase en 'D' , se deberia actualizar E y tras el F.

Siguiendo esa logica los cuadros de texto reflejaran la dependencia 'real' y lo de dejarlos en blanco careceria (a todos los efectos) de sentido practico.

Nota:
Se puede 'llamar' al evento AfterUpdate, Change ... de los combos desde el evento de cualquier combo, lo anterior (suponiendo que la dependencia actual sea la msma que se muestra en el codigo posteado y solo a titulo de ejemplo practico)


Private Sub CBODOCENTE_AfterUpdate()
CBONOMBRECURSO_AfterUpdate
CBOCENTRO_AfterUpdate
CBOEMRECU_AfterUpdate
CBOTIPCUR_AfterUpdate
End Sub
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

Actualizar combos en cascada

Publicado por Marta (5 intervenciones) el 21/07/2017 11:37:59
Buenos días Anónimo,

he cambiado el código y lo he simplificado, pero me sigue pasando lo mismo, no se actualiza el siguiente combo si cambio el anterior.

Por favor, si me puedes decir en que me estoy equivocando.

Gracias por anticipado.

Private Sub CBOEMRECU_AfterUpdate()
Me.CBOTIPCUR.Requery
End Sub


Private Sub CBOTIPCUR_AfterUpdate()
Me.CBOCENTRO.Requery
End Sub


Private Sub CBOCENTRO_AfterUpdate()
Me.CBOCODIGOCURSO.Requery
End Sub



Private Sub CBOCODIGOCURSO_AfterUpdate()
Me.CBONOMBRECURSO.Requery
End Sub


Private Sub CBONOMBRECURSO_AfterUpdate()
Me.CBODOCENTE.Requery
End Sub
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

Actualizar combos en cascada

Publicado por Anonimo (681 intervenciones) el 21/07/2017 14:29:54
No aprecio la existencia de datos suficientes para emitir un juicio realista.

La 'dependencia' esto es, la relacion entre los cuadros combinados, se desconoce y es un dato necesario para implementar una solucion que sea realista, pues la teoria no parece que fuera tenida en cuenta.

Conocida esa dependencia y tambien el 'evento real' en que se aplica (o aplicaria) la actualizacion, serian datos que permitirian llegar a una solucion, en lo publicado se utilizan cuando menos dos eventos, el 'change' y el 'afterUpdate' que se producen en momentos diferentes y por lo tanto pueden presentar ellos tambien resultados diferentes.

Vuelvo a insistir en que hay que actualizarlos (o refrescarlos o ...) cada uno en su momento optimo y en el orden adecuado.

Un clasico: el orden dependiente esta en que segun se seleccione al enseñante y al nivel, se selecciona un aula ..... (enseñante ==> nivel ==> aula , pues el aula dependera del numero de participantes en ese nivel con ese enseñante)

Si seleccionado un enseñante y a continuacion 'refresco' las aulas sin refrescar antes el nivel, el resultado sera incorrecto ....¿o funcionaria igual?.

Se parte del supuesto que conocido quien imparte y a quienes imparte, se sabria cuantos son (eliminando de la ecuacion a las aulas de capacidad inferior a la necesitada)
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

Actualizar combos en cascada

Publicado por Marta (5 intervenciones) el 21/07/2017 16:29:15
Gracias por la respuesta
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