[campo de acceso] visible según condición
Bonjour, soy nuevo en este foro y busco la ayuda de especialistas en Access. Estoy creando una base de datos para la gestión de muebles (mesas, formularios) hasta ahora no hay problema. En un formulario, tengo dos campos: un campo "Categoría" y un campo "Altura de asiento". Quiero que el campo "Altura de asiento" aparezca cuando el campo "Categoría" contiene el valor "Silla". He escrito el siguiente código en la propiedad después de ACTUALIZAR el campo "Categoría":
If [Categoría] = "Silla" Then
[Altura de asiento].Visible = True
Else
[Altura de asiento].Visible = False
End If
No funciona porque se aplica a todos los registros de la tabla y no se mantiene en memoria en el registro correspondiente.
¿Cómo puedo hacerlo? Les agradezco su valiosa ayuda
If [Categoría] = "Silla" Then
[Altura de asiento].Visible = True
Else
[Altura de asiento].Visible = False
End If
No funciona porque se aplica a todos los registros de la tabla y no se mantiene en memoria en el registro correspondiente.
¿Cómo puedo hacerlo? Les agradezco su valiosa ayuda
Configuración: Windows XP Access 2003
26 respuestas
-
Usuario anónimoHola,
también se debe poner este código en el evento current() del formulario.
--
Cuando jimmy dice what’d I say, I love you baby
Es como quien dice, toda la provincia canta en inglés. -
babdoulBonjour,
Estoy haciendo un programa en Access 2003 para la gestión de un parque automovilístico.
Me gustaría saber cómo integrar el plan de amortización de los vehículos que se titula de la siguiente manera:
fecha de adquisición: DA
fecha de Valor: DV
Costo de Adquisición: CA
DV1 = DA + 365 días
CA1 = 75% * CA
DV2 = DV1 + 365 días
CA2 = 50% * CA
DV3 = DV2 + 365 días
CA3 = 25% * CA
DV4 = DV3 + 365 días
CA4 = 0% * CA
Su ayuda me sería muy valiosa. -
KlyslaneHola a todos,
Tengo un problema similar al de ustedes, pero las soluciones propuestas no funcionan...
Estoy editando facturas en Access 2010. El informe busca la información necesaria en los formularios previamente completados.
Tengo 3 casillas que solo deben mostrarse si son diferentes de 0 y no logro hacerlo.
Hago clic derecho, creo un evento, generador de código. Escribo esto:
Private Sub Cantidad_compra_para_venta_Enter()
If Cantidad_compra_para_venta <> 0 Then
Cantidad_compra_para_venta.Visible = True
Else
Cantidad_compra_para_venta.Visible = False
End If
End Sub
Y así, cuando abro mi informe, me muestra un mensaje de error porque en las propiedades de mi campo tengo visible = SÍ. Mi única otra opción es NO y tengo que dejar la casilla llena.
¿Alguna idea?
¡Gracias, gracias! -
FabriceHola a todos,
También tengo un problema con un formulario continuo en el que tengo una imagen que quiero mostrar (o no) según el valor del campo S1. (si S1<0, mostrar la imagen)
He ingresado el siguiente código (access 2002)
Private Sub Form_Current()
If [S1] < 0 Then
[alerte].Visible = True
Else
[alerte].Visible = False
End If
End Sub
El problema es que la visualización es idéntica para todos los registros... Si selecciono un valor negativo de uno de los registros, la imagen se muestra bien pero para la totalidad de los registros (incluso aquellos cuyo campo S1 es >0). He aplicado sus diferentes consejos, pero no funciona!
Gracias de antemano a quienes se tomen el tiempo de ayudarme, y felicitaciones a todos por la calidad de sus respuestas
Saludos.-
Usuario anónimoHola Fabrice,
normal, no funciona para los formularios en modo continuo.
Si tienes valor: https://cafeine.developpez.com/access/tutoriel/pseudocontinu/
--
Cuando Jimmy dice what’d I say, I love you baby
Es como quien diría, toda la provincia que canta en inglés.
-
-
Fab
Disculpa, corrijo el código :
Si nom_de_la_case_à_cocher = Verdadero Entonces 'si la casilla está marcada
Me!champs_à_cacher.Visible = Verdadero 'mostramos la zona texto1
De lo contrario
Me!champs_à_cacher.Visible = Falso
Fin Si
-
FabHola a todos,
Solo quiero agradecer sus numerosos consejos en este post que me ayudaron a resolver mi problema sin tener que hacer preguntas. A saber, mostrar campos cuando se marca una casilla.
Es muy sencillo al final:
1 - clic derecho en la casilla de verificación - crear código de evento
2 - codificar esto (con sus nombres de campos, por supuesto)
If nombre_de_la_casilla_de_verificación = True Then 'si la casilla está marcada
Me!campo_a_eliminar.Visible = True 'se muestra la zona de texto1
Else
Me!Ubicación.Visible = False
End If
3 - selecciona Formulario en la lista de opciones en la parte superior izquierda y "actual" en la lista de opciones de la derecha de VBA y copia exactamente el mismo código
If nombre_de_la_casilla_de_verificación = True Then 'si la casilla está marcada
Me!campo_a_eliminar.Visible = True 'se muestra la zona de texto1
Else
Me!Ubicación.Visible = False
End If
hasta luego
Fab-
SquatinaBonjour,
He escrito en VBA este código:
Código:
If nom_de_la_case_à_cocher = True Then 'si la casilla está marcada
Me!foto1.Visible = True 'se muestra la foto1
Else
Me!foto1.Visible = False
End If
Para que la foto1 se muestre en mi formulario1 cuando se marca la casilla correspondiente.
Pero ahora he incrustado mi formulario1 en otro formulario2.
Y me gustaría que la foto se muestre en el formulario2 en lugar de en el formulario1.
¿Qué modificación debo realizar en mi código para que la foto aparezca en el formulario2, por favor?
Estoy seguro de que es simple, pero no lo encuentro.
-
-
François35Vuelvo a este post...
Tengo otro problema, pero del mismo nivel...
Siempre en la misma base.
En mi formulario de presupuesto, cuando ingreso un producto, quiero que, dependiendo del producto ingresado, aparezca en el estado ''presupuesto'' o en el estado ''guía de entrega'' o en ambos...
He creado 2 casillas de verificación en mis artículos. Una para ''aparecer en presupuesto'' y otra para ''aparecer en GL''
Hice clic derecho en la casilla y luego ''crear código de evento'' y escribí:
if [Ab2]=true then
me! Estados![P_Devis#Devis#]![AbsMontant].Visible = true
else
me![Ab2].visible=false
leyenda: [Ab2] es mi casilla de verificación
[AbsMontant] es lo que debe mostrarse o no y que se encuentra en el estado P-Devis#Devis#
Cierro y cuando hago clic en la casilla de verificación del artículo me dice:
Microsoft Office Access no puede encontrar la macro if [Ab2]=true then
me! Estados![P_Devis#Devis#]![AbsMontant].
La macro (o su grupo de macros) no existe o la macro es nueva pero no ha sido guardada. Tenga en cuenta que cuando escribe la sintaxis nombregrupomacro.nombremacro en un argumento, debe especificar el nombre bajo el cual el grupo de macros de la macro ha sido guardado por última vez.
Luego, la casilla se marca de todos modos pero sin cambiar el estado de presupuesto...
En fin, estoy un poco perdido.... gracias a quienes quieran aclarar mi problema. -
Laura HoltHola,
Mi problema me ha llevado a esta discusión. Veo que algunos de ustedes dominan Access (qué suerte) y necesito su valiosa ayuda.
Tengo una base de datos "contrato" que comprende varias tablas (información, coordenadas, facturación, planificación, fecha, etc.). He creado formularios y subformularios de entrada que agrupan los datos para facilitar la entrada a mis usuarios.
Además, algunos contratos han sido cancelados y no deseo eliminar la ficha, sino únicamente ocultarla usando una casilla de verificación, por ejemplo, activo o inactivo. Todo ello, pudiendo encontrarlos al hacer clic en un botón "mostrar contratos inactivos".
Sé que es posible ocultar las fichas "inactivas" a través de una consulta. Pero mis registros se establecen directamente por varias tablas.
Aún no he establecido ninguna macro en mi base. No domino las macros en Access (pero me defiendo en Excel)
¿Es posible?
Gracias.
LH
PD: ¿conocen un sitio que explique las fórmulas del lenguaje SQL? Gracias.-
Usuario anónimoHola,
tienes la opción: o por sql, o por código.
Por código, te dejo mirar las diferentes intervenciones de este mensaje, probablemente entenderás.
Para el sql, hay que cambiar la fuente de tu formulario que muestra las "fichas"; en primer lugar, hay que crear un campo "visible" en la tabla de información de los contratos, de tipo "sí/no". Colocar un control del mismo tipo en el formulario.
Luego, en la fuente de tu formulario (en modo creación, propiedades), debes añadir este campo, y como condición poner "falso".
De esta manera, tu formulario mostrará los registros que tienen esta casilla desmarcada.
Espero que lo hayas entendido, si no, no dudes en preguntar.
Hasta luego
--
Cuando jimmy dice what’d I say, te amo bebé
Es como quien diría, toda la provincia que canta en inglés -
Laura Holt@Usuario anónimoHola HDU,
(ACCESS 2007)
Gracias por tu respuesta. Creo que he entendido el método, pero no puedo encontrar la línea "condición" en propiedades para poner "falso".
Esto es lo que he hecho:
Partí de mi base de datos ya bien llena.
Por lo tanto, creé (en su momento) en mi tabla un campo "Efectuado" de tipo "sí/no".
Fui a mi formulario, eliminé este campo "efectuado" y luego lo volví a insertar (por si acaso) a través de "agregar campos existentes".
Luego, hago clic derecho en la casilla de verificación en el formulario y accedo a las propiedades. Tengo varias pestañas: Formato, datos, evento, otros y todos. ¿Dónde debo poner "Falso"?
Gracias por tu respuesta.
LH -
Usuario anónimo@Laura HoltHola,
Tienes que poner la condición en la fuente del formulario, no en las propiedades de la casilla de verificación...
Abre tu formulario en modo creación (modificación entonces), y haz clic en Vista, propiedades.
- O bien tu formulario se basa en una consulta y tienes acceso a esta consulta en la línea 'fuente' de las propiedades (pestaña de datos, o en su defecto, todas) y modificas la consulta fuente de este formulario añadiendo el campo y poniendo la condición "falso" en la línea 'criterios'.
- O bien tu formulario se basa en una tabla, y no quieres crear una consulta, entonces, simplemente añade, en la línea 'filtro' "realizado es falso" (sin las comillas).
¿Todo claro?
¡Hasta luego!
--
Cuando jimmy dice what’d I say, I love you baby
Es como quien diría, toda la provincia que canta en inglés. -
lauraholt@Usuario anónimoGracias por tu respuesta.
Finalmente encontré la línea "filtro" en las propiedades del formulario, luego en la pestaña "datos" donde escribí Efectuado=False.
Eso funciona, pero si deseo ingresar un registro (con el filtro activo), no puedo hacer nada, todas las celdas están bloqueadas. ¿Por qué y qué hacer?
Gracias
--
LH -
Usuario anónimo@lauraholtRe,
Un filtro no debería bloquearte la entrada. ¿Puedes darme la fuente de tu formulario? ¿Puedes intentar quitar solo el filtro y decirme si funciona?
¡A+!
--
Cuando Jimmy dice "what’d I say, I love you baby"
Es como quien diría, toda la provincia cantando en inglés.
-
-
tili67Hola,
tengo un problema similar pero en Word.
He creado un formulario y me gustaría que cuando la persona lo complete, mis campos de casillas de verificación sean interactivas.
Me explico, en la pregunta: materia del producto hay la opción entre Acero o inoxidable y me gustaría que la persona que complete la casilla solo pueda poner una cruz. (ya sea uno u otro y no ambos)
Gracias. -
MiiHola,
también tengo un problema al intentar mostrar un campo según una condición.
El campo sigue visible independientemente de la condición.
Aquí está mi código, esperando que alguien pueda ayudarme.
Private Sub Form_Current()
If EMPLEO = "Desempleado" Then
nivrequis.Visible = False
Else
nivrequis.Visible = True
End If
End Sub
Private Sub nivrequis_BeforeUpdate(Cancel As Integer)
If EMPLEO = "Desempleado" Then
nivrequis.Visible = False
Else
nivrequis.Visible = True
End If
End Sub-
domik[acceso] campo visible bajo condición
Hola,
prueba esto:
Private Sub Form_Current()
If [EMPLOI]= "Desempleado" Then
me.nivrequis.Visible = False
Else
me.nivrequis.Visible = True
End If
End Sub
Private Sub nivrequis_BeforeUpdate(Cancel As Integer)
If [EMPLOI] = "Desempleado" Then
me.nivrequis.Visible = False
Else
me.nivrequis.Visible = True
End If
End Sub -
Mii@domik¡Te agradezco por tu respuesta, domik! ;-)
-
-
Usuario anónimoHola,
A primera vista, si me atengo exactamente a lo que me dices, ¿tienes una tabla de presupuestos con códigos de productos dentro?
Si es así, huele a trampa.
Pero bueno, puede que no tengas tiempo de rehacer una base desde cero.
En tu estado, puedes, como en tu formulario, crear código para mostrar / ocultar objetos (controles).
En el estado en modo creación, haz clic derecho y luego crea el código de evento, generador de código.
Elige el evento open() y ahí pones el código adecuado, como:
if vchek2=true then
me.texte3.visible=true
.....
else
me.texte3.visible=false
.....
end if
A adaptar, por supuesto.
Para el "gran agujero en medio" como dices, no veo bien cómo si realmente tienes una sola tabla de presupuestos. El uso de sub-estados era bastante indicado.
De lo contrario, pero es realmente sucio, puedes usar con el código de arriba el posicionamiento de tus objetos.
Entonces, si tu texto3 no es visible, tienes que "subir" tu texto4, con sus propiedades:
if vchek2=true then
me.texte3.visible=true
me.texte4.top=
....
Pero es sucio...
Dame la estructura de tus tablas, puede que haya algo más simple.
Saludos
--
Cuando Jimmy dice what’d I say, I love you baby
Es como quien dice, toda la provincia que canta en inglés.-
-
Usuario anónimo@françoisRe,
Lo siento, pero estoy en el trabajo y tengo vacaciones esta noche, así que tengo muchas cosas que terminar.
O bien reduces al máximo tus etiquetas y las pegas unas debajo de otras, estarán casi a la misma altura (al reducirlas, tendrán ~ 1 mm de altura).
Les pones su propiedad 'autoextensible' en sí, ¿funciona eso (no probado)?
O bien, las dejas como están, y en el código que has puesto para hacer visibles/invisibles tus etiquetas, juegas con las propiedades para mostrarlas más o menos alto en el estado (ME.E2.Top=7,55 por ejemplo).
¡Hasta luego!
--
Cuando jimmy dice what’d I say, I love you baby
Es como quien dice, toda la provincia que canta en inglés. -
françois@Usuario anónimoGracias por tomarte el tiempo para responderme DHU, ¡y eso a pesar de tus vacaciones! ¡Que tengas buenas vacaciones entonces!
Con respecto a tu código en tu segunda solución, no veo bien dónde insertarlo. Mi código es el siguiente:
If Forms!P!verso_pretstaion.Form!CB_repas = -1 Then
Date_repas.Visible = True
Else
Date_repas.Visible = False
End If
El problema también es que 7,55 está bien si solo la línea anterior está desactivada... pero en el caso de que estuvieran desactivadas las 4 líneas anteriores?
Necesito poder decir:
si la casilla 1 está inactiva, entonces la etiqueta 2 toma el lugar de la etiqueta 1
y si la casilla 1 está activa, la casilla 2 inactiva, la casilla 3 inactiva, la casilla 4 activa, la etiqueta 4 toma el lugar de la etiqueta 2...
pero es más fácil de decir que de hacer... -
Usuario anónimo@françoisGracias,
Sí, habría que probar las posibilidades, y no es fácil y no es limpio.
¿Has probado la primera solución? (disminuir al máximo las etiquetas y poner su propiedad 'autoextensible' en sí)
¡Hasta luego!
--
Cuando jimmy dice what'd I say, I love you baby
Es como quien diría, Toda la provincia que canta en inglés. -
françois@Usuario anónimoHola HDU, disculpa por esta ausencia... ah, las vacaciones...
He probado tu solución de pegar las etiquetas unas a otras y de ponerlas autoexpandibles...
Varias cosas: no se puede hacer autoexpandible para las etiquetas, sino solo para las zonas de texto... lo cual es un problema en mi caso...
Por otro lado, he intentado con zonas de texto, pero eso no soluciona el problema... me encuentro con 2 zonas de texto casi una encima de la otra si valido ambas...
Entonces subí un poco más arriba en el foro y releí uno de tus mensajes que decía esto:
""Entonces, si tu texto3 no es visible, hay que "subir" tu texto4, con sus propiedades:
if vchek2=true then
me.texto3.visible=true
me.texto4.top= ""
Quería saber dónde poner esta propiedad para que yo pruebe.
Por otro lado, ¿el "top" va a subir el texto hasta el texto anterior? ¿Estás seguro de que no lo va a subir hasta la parte superior de la página simplemente?
Por último, también vi un mensaje donde me decías que el subtipo era muy indicado... no conozco en absoluto los subtipos. ¿Es difícil acostumbrarse a ellos?
Gracias una vez más...
-
-
Breizhinours35Lo siento, pero no puedo ayudarte con eso.
-
Usuario anónimoLo que te propongo es que me envíes tu base de datos comprimida.
Si tienes miedo por tus datos (no soy un criminal jaja), haz una copia y vacía las tablas "sensibles".
Lo veré mejor "visualmente" porque ahora está borroso.
Mi correo está en mi perfil.
Por cierto, no podré mirar eso hasta el lunes por la tarde, ahora me voy de fin de semana.
¡Hasta luego!
--
Cuando Jimmy dice what’d I say, I love you baby
Es como quien dice, toda la provincia cantando en inglés. -
Breizhinours35Lo siento, no puedo ayudar con eso.
-
Usuario anónimoRe,
En mi opinión, ya hay un problema de diseño...
Para el efecto inverso, como tú dices, el código que te di debe funcionar. Por supuesto, en el formulario.
Dinos qué tablas tienes y para qué sirve la base de datos, en definitiva, qué quieres que gestione.
Hasta luego
--
Cuando Jimmy dice what’d I say, I love you baby
Es como quien dice, toda la provincia que canta en inglés. -
Breizhinours35Salut et merci pour ces premiers infos... j'y vois plus clair
le souci c'est que, voici ce que j'aimerais faire dans l'idéal :
j'ai un formulaire qui fait partie d'une base déjà construite.
Sur ce formulaire j'ai des cases à cocher avec le titre des cases par exemple :
chkbox 1 : repas
chkbox 2 : hôtel
chkbox 3 : déplacement
Je veux choisir dans ce formulaire ce que je veux qu'il s'affiche mais sur un état correspondant et non pas sur le formulaire. Le texte décrit sur l'état est plus complet que sur le formulaire. du style "prévoir 5 repas"
Avec le code que tu m'as donné, cela rend visible sur le formulaire. et plus encore, cela le rend en fait invisible et il ne réapparaît plus ensuite. Je souhaiterais que cela fasse aussi l'effet inverse.
encore mieux, j'aimerais que si je coche la case 2, les repas s'affichent en haut de l'état et non pas au milieu.
merci pour ton aide -
Breizhinours35Hola, tres años después...
soy completamente nuevo en Access pero ¡muy motivado!
Trabajo en Access para la gestión de materiales. La base de datos ya fue creada, pero no por mí.
Quisiera añadir esto a la base: cuando en un formulario marco una "casilla de verificación", que me muestre un texto. Si la casilla no está marcada, no lo muestra.
Otra condición: En mi formulario principal, tengo todos los textos que se muestran, para poder orientarme. Cuando marco la casilla correspondiente en este formulario, quiero que se muestre en un informe creado específicamente.
Ya he creado mi tabla, mi formulario y mi informe, pero estoy un poco superado con las consultas y relaciones... necesito un poco de ayuda....
Gracias a todos por sus respuestas.-
Usuario anónimoHola,
En tu formulario, en modo creación, haz clic derecho en la casilla de verificación que debe activar o desactivar la visualización del texto, haz "crear código de evento", generador de código si te lo pide. Normalmente, Access te propone asignar código al evento 'clic' (zona en la parte superior derecha) de la casilla de verificación (en la parte superior izquierda).
Eso es lo que quieres --> hacer algo cuando el usuario haga clic en la casilla de verificación.
Quieres mostrar u ocultar un texto. ¿Dónde se encuentra este texto? ¿En un cuadro de texto? ¿En una etiqueta?
De todas formas, conoces el nombre del control que contiene el texto. Se dice que se llama "texto1".
Entonces, en el evento clic de tu casilla de verificación ("cocher1" por ejemplo), pones:if texto1=true then 'si la casilla está marcada me!texto1.visible=true 'se muestra el cuadro de texto1 else me!texto1.visible=false end if
Para tu otra pregunta, ¡no entendí del todo! Aparentemente tienes casillas de verificación en un formulario y quieres que estas casillas aparezcan en un estado.
Si es así, ¿tus casillas corresponden a tus campos de una (o varias tablas)?
Espero tu respuesta para poder guiarte.
¡Hasta luego!
--
Cuando Jimmy dice what’d I say, I love you baby
Es como quien dice, toda la provincia canta en inglés.
-
-
Usuario anónimoHola,
Esto debería ayudarte: https://grenier.self-access.com/?post/2007/09/05/Listes-deroulantes-liees
¡Hasta luego!
--
Cuando Jimmy dice what’d I say, I love you baby
Es como quien dice, toda la provincia canta en inglés. -
younesHola a todos, soy nuevo en el foro
tengo un problema con los combobox, de hecho, quisiera mostrar una lista según otra lista, más precisamente:
al elegir un elemento de un combo, los elementos del segundo combo deben cambiar. He intentado con una consulta, pero no funciona. Y esto en el mismo formulario (Access 2003). -
romstek31
Private Sub Form_Current() If Not IsNull([dateValidPlanMinute]) Then [remarqueNonValid].Enabled = False Else [remarqueNonValid].Enabled = True End If End Sub
-
domik
Private Sub Form_Current() If Not IsNull(dateValidPlanMinute) Then [remarqueNonValid].Visible = True Else [remarqueNonValid].Visible = False End If End Sub
También hay que poner este código en el evento BeforeUpdate(Cancel As Integer), como decía HDUPrivate Sub dateValidPlanMinute_BeforeUpdate(Cancel As Integer) If Not IsNull(dateValidPlanMinute) Then [remarqueNonValid].Visible = True Else [remarqueNonValid].Visible = False End If End Sub
-
romstek31@domik¡Muchas gracias, funciona! ;)
-
-
-
- 1
- 2
Siguiente