通过MS Access子窗体循环并获得列可见性

问题描述 投票:0回答:1

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

作为导出工具的一部分,我正在尝试构建一个循环,该循环以布尔值返回列的每个字段name,字段caption和列的[[visibility。

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运行,但是我觉得这可能不是我的用例的正确语法。它返回每个字段名称,并在下一行返回其下的文本框的名称,因此基本上这是我需要的信息的两倍。 

有人有一个想法,如何达到其他两个属性?

vba ms-access subform
1个回答
0
投票
对于那些有相同问题的人,这是一个可能的解决方法!同时,我发现我的特定用例不一定需要.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 ctl As Control 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

© www.soinside.com 2019 - 2024. All rights reserved.