** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - hacer control invisible en subFormulario
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradohacer control invisible en subFormulario

 Responder Responder
Autor
Mensaje
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Tema: hacer control invisible en subFormulario
    Enviado: 06/Octubre/2015 a las 22:58
Buenas,

Estoy intentando hacer lo siguiente :

si el control ProductoID = 99 en el subFormulario , entonces hacer visible control_A y invisible el control_B en ese registro en el subormulario , y si no es 99 lo inverso.

consigo el resultado pretendido si en el evento afterUpdate del control ProductoID executo el codigo :

if me.ProductoID = 99 then
      control_A.visible=true
      control_B.visible=false
else
      control_A.visible=false
      control_B.visible=true
end if

el problema es que en el momento entrar en otro registro en el subformulario, y al nuevo control ProductoID no ser 99, el registro anterior hace de nuevo visible el control_A.

o sea lo que pretendia es lo que obtengo con formato conditional, solo que no tiene la opcion de hacer visible y invisible un control.

intente, en el evento on current del subFormulario pero sin exito.

Gracias por Vuestra ayuda



Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5448
Enlace directo a este mensaje Enviado: 06/Octubre/2015 a las 23:48
Hola buenas noches.

1.- Por lo que yo he entendido, todos los controles a los que estás haciendo alusión están en el subformulario y que el código que tienes también lo tienes puesto en el módulo de: ¿¿¿dónde??? en el Formulario o en el subformulario.

2.- Si lo que pretendes es todo en el subformulario, yo parto de la idea de que el ID del subformulario, dependerá del ID del Formulario (si esa es la relación que creaste, normalmente la mas habitual).

3.- Ciñéndome a mi punto 2, yo colocaría en el módulo del subformulario esto:

Private Sub Form_Current()'Cada vez que se pasa por un registro
'Cuando pase por aqui (siempre que "el sistema vaya" a un nuevo registro)
if me.ProductoID = 99 then'Aquí comprobará y: SI, ES 99, pues entonces Control_a.Visible=True
      control_A.visible=true
      control_B.visible=false
else
      control_A.visible=false 'En caso de que: NO, NO ES 99, pues entonces Control_a.Visible=False
      control_B.visible=true
end if
End Sub

Prueba esto o/y aclarános en que módulo tienes puesto tu tus datos.

Saludos
Gracias
Arriba
-Marta- Ver desplegable
Moderadora
Moderadora
Avatar

Unido: 08/Septiembre/2005
Localización: Venus
Estado: Sin conexión
Puntos: 2970
Enlace directo a este mensaje Enviado: 07/Octubre/2015 a las 01:22
hola

el formato condicional si dispone de la opción de hacer visible/invisible un control, con que iguales el color de la tinta al color del fondo ya lo tienes invisible, para hacerlo visible le devuelves su color y listo

un saludo

Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Enviado: 07/Octubre/2015 a las 17:35
Vimipas ,

en ese evento (on current del subformulario) intente lo que me dices, pero como te habia dicho :
 "El problema es que en el momento entrar en otro registro en el subformulario, y al nuevo control ProductoID no ser 99, el registro anterior hace de nuevo visible el control_A."

la solucion de Marcia, no la habia pensado, y funciona, solo que tiene un problema, que es que al ser control_A y control_B sobrepuestos (exactamente en la misma posicion , y tamano), el uno tapa el otro cuando hago la formatacion condicional con el color de fondo.

no hay alguna propiedad del control del tipo pop-up para que el primero control no oculte el segundo ?
Gracias por Vuestra ayuda

Carlos




Editado por cpampasPT - 07/Octubre/2015 a las 17:36
Arriba
Chea1 Ver desplegable
Moderador
Moderador


Unido: 20/Noviembre/2005
Localización: España
Estado: Sin conexión
Puntos: 4142
Enlace directo a este mensaje Enviado: 07/Octubre/2015 a las 18:38
¿De qué tipo es el control que quieres ocultar? Un único control imagen dependiente podría cambiarse fácilmente y un cuadro de texto podría ser calculado dependiendo de que ProductoID fuera 99.


Saludos
José Bengoechea Ibaceta
Mi página

Mi otra página
Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Enviado: 07/Octubre/2015 a las 22:31
hola Chea,

El control que quiero ocultar es una texbox (cuadro de texto ???Ermm)
en cuanto al cuadro de texto poder ser  calculado, no es asi que lo hice, o sea, como pretendo que funcione es asi :

al escojer en la caja de combinacion ProductoID  dependiente de la tabla de Productos, con con claves primarias entre 1 y 98, la cosa funciona normalmente, y se visualiza el control ProductoID y el control_B (que contiene el nombre del producto), pero si es 99 haria visible el control_A que tambien es un cuadro de texto dependiente , pero que no depende de la tabla de productos, sino que es un texto que el usuario deve rellenar y que se guarda en la tabla asociada al subformulario, por lo que no se podria calcular.

espero no haberlo liado con la explicacion.

todo esto se deve a que se pueden facturar productos de la tabla de productos , pero tambien servicios con texto no previamente definido

si ven alguna otra forma de conseguir el objectivo, agradezco Vuestros comentarios
Saludos
Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 537
Enlace directo a este mensaje Enviado: 08/Octubre/2015 a las 00:13
Chea,
Despues de leer tu sugestion con mas atencion, me funciono perfecto, en el evento despues de actualizar del control "ProductoID" del subformulario :

If Me.ProductID = 99 Then
   Me.Control_A = ""      ' permite escribir texto
   Me.Control_A.SetFocus
Else
   Me.Control_A = Me.ProductoID.Column(1)   ´contiene el nombre de producto
End If

Claro que tuve que crear un nuevo campo en la tabla de source del formulario que recoje el nombre del producto facturado, sea de la tabla de productos o bien texto que escribe el usuario.

Gracias por Vuestra ayuda
Pueden cerrar el hilo


Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5448
Enlace directo a este mensaje Enviado: 08/Octubre/2015 a las 00:18
Tienes razón campasPt, disculpa.
'Edito para añadir, que escribiste tu solución, mientras yo proponía esta. Aquí se queda.Saludos de nuevo.
Que yo sepa no se puede hacer lo que pretendes. 

También he buscado si se puede hacer el pop-up, como tu dices (arriba/abajo) en tiempo de ejecución y no lo veo por ningún lado.

No obstante he estado probando esto:

Private Sub CONTROL_A_Enter()
If Me.NUMERO_ID <> 11 Then Me.CONTROL_B.SetFocus
End Sub

Private Sub CONTROL_B_Enter()
If Me.NUMERO_ID = 11 Then Me.CONTROL_A.SetFocus
End Sub

Y la razón de la prueba es porque un control que reciba el foco, se queda por encima del que haya, para el caso en que tengas dos controles superpuestos, estará bien que lo compruebes, ya que mi idea es:

A) Tienes los controles uno encima del otro
1.- Haces los controles como indica Marta, con los mismos colores.
2.- Colocas el Formato con el 99 y así cambiarán de color ambos.
B) Si colocas ahora mis dos eventos, uno en cada uno de los controles, para el caso en que entres en el que no es, lo enviará al que sí es, tan solo cuando sea 99, entrará al CONTROL_A
C) Y a la inversa, irá al control_B, cuando NO TENGA QUE ENTRAR EN EL CONTROL_A, por lo tanto, repito irá al CONTROL_B

Esté en el control que esté, siempre estará "ilusoriamente" encima del otro. La realidad es que cada uno estará arriba/abajo, nos dará igual.

Por favor haz la prueba y ya nos dices.

Saludos


Editado por VIMIPAS - 08/Octubre/2015 a las 00:20
Gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable