循环访问MS Access子表单并获得列可见性

我正在使用一个包含多个页面的选项卡控件,每个页面都存储一个具有不同列数的子表单。每个子窗体都必须显示一些基本信息,并且按需显示更多信息。每个子表单的OnLoad事件定义了哪些列可见或不可见。

作为导出工具的一部分,我试图构建一个循环,该循环返回每个字段的名称,标题标题可见性该列为布尔值。

Dim strAns As String
Dim ctl As Control
Dim sfrm As SubForm
Set sfrm = Forms![frm_Main]![frm_Sub]

For Each ctl In sfrm.Controls
    strAns = ctl.Name & "_" & ctl.Caption & "_" & ctl.columnVisible
    Debug.Print strAns
Next ctl

当前它仅使用ctl.Name运行,但是我感觉这可能不是我的用例的正确语法。它返回每个字段名称,并在下一行返回其下的文本框的名称,因此基本上这是我需要的信息的两倍。

有人知道如何达到其他两个属性吗?

hessler2009 回答:循环访问MS Access子表单并获得列可见性

对于那些有相同问题的人,这是一个可能的解决方法!同时,我发现我的特定用例不一定需要.Caption

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim rstQry As DAO.Recordset
Dim fldQry As DAO.Field

Set db = CurrentDb
Set qdf = db.QueryDefs("qrySource_frmSub")
Set rstQry = qdf.OpenRecordset

Dim dictHidden As New Scripting.Dictionary
For Each fldQry In rstQry.Fields
    dictHidden.Add fldQry.Name,False
Next fldQry
qdf.Close

Dim frm As SubForm
Set frm = Forms![frm_Main]![frm_Sub]

For Each key In dictHidden.Keys
    dictHidden(key) = frm.Controls.item(key).ColumnHidden
Next key
本文链接:https://www.f2er.com/2399357.html

大家都在问