在MS-Access中以编程方式隐藏列

Cur*_*che 3 foreach ms-access controls properties

我想隐藏或显示基于用户选择的可变数据的列.如何在MS-Access 2003中将列设置为隐藏?

例如,

用户更改活动后......

For Each ctl In Me.FormNameHere.Form.Controls
    If (TypeName(ctl) = "Textbox") Then
        If InStr(GetTextList(), ctl.Name) > 0 Then
            ctl.hidden = True
        Else
            ctl.hidden = False
        End If
    End If
Next ctl
Run Code Online (Sandbox Code Playgroud)
  • 这种挑战的最佳方法是什么?
  • 有更明显的解决方案吗?

Dal*_*ale 5

不久前我回答了一个类似的问题,就是在数据表中隐藏列.但是,您似乎想要隐藏排列在表单列中的文本框,这是正确的吗?

如果你有很多控件,迭代窗体中的所有控件可能会很慢.如果你真的需要使用这样的文本框,那么你可以尝试将"列"组合在一起然后隐藏组.另一种方法是使用列表框或数据表来表示数据,您可以在其中直接更改列的布局.

  • 如果您有无限数量的控件,隐藏它们将是您遇到的最少问题.=) (2认同)

Dav*_*ton 5

控件没有"隐藏"属性(Access中没有对象具有隐藏属性).他们确实有.Visible属性.

为了将来参考,我建议您熟悉VBE中的对象浏览器 - 打开VBE并点击F2.然后,您可以将搜索范围限制为项目中使用的各个库.但是,确实需要一段时间才能理解对象模型.

此外,您可以依靠Intellisense来学习对象的属性/方法,因此在您正在使用的表单的代码中,您可以键入"Me.MyTextBox".并且Intellisense下拉列表将显示该特定控件的所有属性和方法.它不适用于通用控件变量(如在代码中),因为不同的控件类型具有不同的属性.

当然,属性表给出了属性的名称,即使在代码中它们并不总是使用相同的拼写法(通常它们与删除的空格相同).

此外,您可能希望如何执行此操作,这取决于它是常规表单还是数据表表单.在数据表中,您的控件还具有.ColumnHidden和.ColumnWidth属性(在数据表视图以外的任何视图中设置这些属性都没有效果,并且标准属性表中没有这些属性可用,但保存时对它们的更改将保留表格).


Cur*_*che 5

我发现ColumnHidden属性可以解决问题。

For Each ctl In Me.FormNameHere.Form.Controls
    If (TypeName(ctl) = "Textbox") Then
        If InStr(GetTextList(), ctl.Name) > 0 Then
            ctl.Columnhidden = True
        Else
            ctl.Columnhidden = False
        End If
    End If
Next ctl
Run Code Online (Sandbox Code Playgroud)

我从这个相关问题得到了提示。