L oop через подчиненную форму MS Access и получить видимость столбца - PullRequest
0 голосов
/ 20 апреля 2020

Я использую одну вкладку с множеством страниц, каждая из которых хранит одну подчиненную форму с разным количеством столбцов. Каждая подчиненная форма должна отображать некоторую базовую информацию c, а по запросу даже больше. Событие OnLoad каждой подчиненной формы определяет, какой столбец может быть видимым или нет.

В рамках инструмента экспорта я пытаюсь создать al oop, который возвращает каждое поле имя , поле заголовок и видимость столбца как логическое значение.

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, но я чувствую, что это может быть неправильный синтаксис для моего варианта использования. Он возвращает каждое имя поля И дополнительно имя текстового поля под ним в новой строке, так что в основном это вдвое больше информации, что мне нужно.

У кого-нибудь есть идея, как достичь двух других свойств?

1 Ответ

0 голосов
/ 20 апреля 2020

Для тех, у кого такая же проблема, вот возможный обходной путь! Тем временем я понял, что мне не обязательно нужен .Caption для моего конкретного c варианта использования.

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