Imprimir página | Cerrar ventana

No permitir mostrar columnas en subform hoja datos

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86780
Fecha de impresión: 27/Marzo/2026 a las 02:46


Tema: No permitir mostrar columnas en subform hoja datos
Publicado por: paloma
Asunto: No permitir mostrar columnas en subform hoja datos
Fecha de publicación: 14/Septiembre/2023 a las 23:26


Hola buenas.

En un subformulario hoja de datos, dependiendo de la consulta desde un combo del formulario principal, visualizo o no las columnas del subformulario. Pero como este subformulario tiene muchos controles, de varias tablas, yo lo que quiero es que no se pueda mostrar columnas que no están dentro del origen de registros del subformulario para evitar el odioso #Nombre. 

Sí que se pueda ocultar/mostrar las columnas que sí están dentro del origen de registros porque  devolverán algún valor. Vale, eso sí. Pero no veo forma de "bloquear" la visualización de determinadas columnas que están fuera de la consulta.

Esto es lo que hago, pongo un ejemplo porque mi código es muy largo. Había pensado que poniendo ColumnWidth = 0 en las columnas que no me interesan, si luego con el botón derecho le doy a mostrar, no se mostrarían porque las he dejado peladas de espacio. Pero nada, siguen saliendo. De hecho, la propiedad ColumnWidth pasa de mí por completo.
   Dim ctl As Control
   For Each ctl In Me.subform.Form.Section(acDetail).Controls
   Select Case ctl.ControlType
      Case acTextBox
      If ctl.Name <> "Nombre" And _
         ctl.Name <> "Apellido1" And _
         ctl.Name <> "Apellido2" Then
         ctl.ColumnHidden = True
         ctl.ColumnWidth = 0
       Else
         ctl.ColumnHidden = False
         If ctl.Name = "Nombre" Then ctl.ColumnOrder = 1
         If ctl.Name = "Apellido1" Then ctl.ColumnOrder = 2
         If ctl.Name = "Apellido2" Then ctl.ColumnOrder = 3
      End If
   End Select
   Next


¿Alguna ideita?

Gracias,

Saludos,



Respuestas:
Publicado por: paloma
Fecha de publicación: 15/Septiembre/2023 a las 01:15

joe qué tonta, le paso al bucle de los controles del subformulario un ctl.ControlSource = "" y ya no aparecen #Nombre si las muestro.

Además he puesto en los controles, un formato condicional que  .ControlSource ="" los bloqueo, de tal forma que se visualizan con el tono típico de bloqueo, distinguiéndose mejor. En fin. Esto me vale osea que pueden cerrar el hilo :)

Saluditos.



Imprimir página | Cerrar ventana