Access - Ocultar botón

 
Vista:

Ocultar botón

Publicado por Oscar (1 intervención) el 13/07/2018 12:09:17
Hola

Tengo este código implementado en un botón:

1
2
3
4
5
6
If Me.Form!Ficha_Lampara = IdLamparaThen
    Me.Comando83.Enabled = False
    DoCmd.OpenForm "Ficha_Lampara"
Else
    Me.Comando83.Enabled = True
End If

Lo que intento conseguir con dicho código es informar al boton que si un formulario tiene datos se active y me abra su ficha, pero si no tiene datos se quede bloqueado. El problema es que implemento este codigo pero no realiza la funcion deseada y cuando doy clik me dice que no reconoce el formulario indicado.

Espero que puedan ayudar. Grax.
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

Ocultar botón

Publicado por Anonimo (2030 intervenciones) el 13/07/2018 13:16:00
Hay publicadas seis líneas y de ellas cuatro pueden dar lugar a error ….¿cual es la que realmente da lugar a error?

Lo mas probable es que no se este referenciando de forma correcta a los objetos (o que se haga referencia a ellos sin que estén accesibles).
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

Ocultar botón

Publicado por Oscar (1 intervención) el 16/07/2018 12:50:46
Buenas Anomino,

La sentencia que me da error es la primera... Cuando doy click me dice que no puede abrir el formulario indicado... Y si le doy a depurar me marca la primera sentencia...

No se que puede estar mal ahi...

Grax.
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

Ocultar botón

Publicado por Anonimo (2030 intervenciones) el 16/07/2018 15:13:02
Dependiendo de el entorno real (por ejemplo: si 'ficha_lampara' es un formulario en funciones de subformulario) todo puede ser un error de referencias o un diseño errático.

Una descripción del entorno (donde esta cada objeto) seria una aclaración imprescindible no vendría mal una aclaración de lo que se pretende (la 'tercera pata del banco': lo que se ha intentado, ya esta publicada)

A mayores unas aclaraciones:
.- 'Me' es el prefijo que indica que todos los objetos que lo utilicen son del formulario activo
.- Normalmente solo se abre una instancia de cada objeto formulario
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

Ocultar botón

Publicado por Oscar (1 intervención) el 16/07/2018 16:13:42
Buenas,

La idea es la siguiente,

Tengo la ficha de mi tienda de lámparas y tengo un botón en dicha ficha. Ese botón esta asociado a la ficha Lampara, que contiene los datos explicativos de cada lampara.

La intención es que si esa ficha lampara tiene datos, el botón se muestre. En cambio, si no existen datos, se quede bloqueado o en su defecto desaparezca

Por lo tanto,

1
2
3
4
5
6
If Me.Form!Ficha_Lampara = IdLamparaThen (Si la Ficha Lámpara contiene un IdLampara guardado, me haga lo sigiente).
    Me.Comando83.Enabled = False (Habilitame el comando)
    DoCmd.OpenForm "Ficha_Lampara" (Abreme el formulario Ficha Lampara)
Else
    Me.Comando83.Enabled = True (Por el contrario, si no hay nada en IdLampara, bloquea/desactiva el comando).
End If

Gracias por todo.
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 jorge
Val: 1.031
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ocultar botón

Publicado por jorge (293 intervenciones) el 16/07/2018 16:31:09
hola Oscar pon una imagen claro si es que puede amgo..

saludos.
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

Ocultar botón

Publicado por anonimo (2030 intervenciones) el 16/07/2018 17:53:39
Sinceramente … o tu explicación no la entiendes ni tú o es un absoluto despropósito lo que se intenta.

Estamos en un formulario (que como referenciamos con 'Me' puede ser cualquiera llamarse como quiera etc....) pero se cumple que es el formulario activo.

Por otra parte aparece un dato ('IdLampara') cuya procedencia es (a momento actual) desconocida y del cual 'se supone' que tiene una relación con …..

en el formulario activo (que define 'me') parece que existe un campo cuyo nombre es: Form!Ficha_Lampara (no creo que Access interprete eso como un nombre valido) por lo que como también me considero con derecho a suponer, DEDUZCO que el campo es 'Ficha_Lampara' asi que la referencia correcta de este termino es:
Me.Ficha_Lampara (también se puede escribir asi: Me!Ficha_Lampara)

Lo comparamos con IdLampara (que seguimos desconociendo su origen)

IF Me.Ficha_Lampara = IdLampara Then ……

Si se cumple se ajusta una propiedad de otro objeto:
Me.Comando83.Enabled = False …… Curiosamente esto DES-Habilita el objeto (al contrario de lo que se pretende)

Y tras ello se abre un formulario:
DoCmd.OpenForm "Ficha_Lampara"

Pero ese formulario ¿Qué origen de datos tiene?, porque si no se le filtra, abrirá en el primer registro (y solo acertaría con la lampara de nuestro interés por casualidad).
--------------------------------------

Vamos a partir de un supuesto, tenemos una tabla con detalles de objetos (sean lamparas o bombillas, el objeto es lo de menos), se debería cumplir que:
.- Si hay detalles … tenemos un registro que los contiene
.- Si no hay detalles … NO tenemos un registro es esa tabla


Ya tenemos información para aplicar metodología

.- SI hay detalles deseamos que un botón este habilitado (nos permitiría abrir un formulario, generalmente emergente con ESOS particulares detalles)
.- Si no hay detalles, el botón debería estar deshabilitado

Tenemos un ID en alguna parte (el cual se supone es el que genera la relación entre el objeto y 'sus' detalles) lo utilizaremos para ver si hay un registro (esto es: si para ese ID tiene asociado detalles)

Me.Comando83.Enabled = DCount("*", "[la tabla detalles]","IdLampara = " & Me.Ficha_Lampara)
(si no hay registros asociados, DCount devolverá un cero => False, si los hay un valor diferente de cero => TRUE)

APARTE en el botón que supuestamente mostraría los detalles (al click del botón) se le indica que abra el formulario pero EN el registro de nuestro interés:
DoCmd.OpenForm "Ficha_Lampara",,,"IdLampara = " & Me.Ficha_Lampara
(si: es la misma condición que se utilzo para ver si existía)

No existe inconveniente en que (reutilizando algo pero con sensatez) se aplique el clásico IF … THEN … ELSE (lo que es escribir se puede hacer con lápiz, bolígrafo o pluma o incluso virtualmente como es esto, lo importante es que se transmita el mensaje con veracidad)
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