|
Responder ![]() |
Autor | |
cpampasPT ![]() Colaborador ![]() ![]() Unido: 20/Marzo/2010 Localización: Portugal Estado: Sin conexión Puntos: 537 |
![]() 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 |
|
![]() |
|
VIMIPAS ![]() Colaborador ![]() ![]() Unido: 06/Enero/2006 Localización: ESPAÑA Estado: Sin conexión Puntos: 5448 |
![]() |
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
|
|
![]() |
|
-Marta- ![]() Moderadora ![]() ![]() Unido: 08/Septiembre/2005 Localización: Venus Estado: Sin conexión Puntos: 2970 |
![]() |
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 |
|
![]() |
|
cpampasPT ![]() Colaborador ![]() ![]() Unido: 20/Marzo/2010 Localización: Portugal Estado: Sin conexión Puntos: 537 |
![]() |
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 |
|
![]() |
|
Chea1 ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Moderador ![]() Unido: 20/Noviembre/2005 Localización: España Estado: Sin conexión Puntos: 4142 |
![]() |
¿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. |
|
![]() |
|
cpampasPT ![]() Colaborador ![]() ![]() Unido: 20/Marzo/2010 Localización: Portugal Estado: Sin conexión Puntos: 537 |
![]() |
hola Chea,
El control que quiero ocultar es una texbox (cuadro de texto ??? ![]() 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
|
|
![]() |
|
cpampasPT ![]() Colaborador ![]() ![]() Unido: 20/Marzo/2010 Localización: Portugal Estado: Sin conexión Puntos: 537 |
![]() |
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 |
|
![]() |
|
VIMIPAS ![]() Colaborador ![]() ![]() Unido: 06/Enero/2006 Localización: ESPAÑA Estado: Sin conexión Puntos: 5448 |
![]() |
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
|
|
![]() |
Responder ![]() |
|
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |