У меня есть файл Microsoft Access 2003 с различными таблицами данных. Каждая таблица также имеет дубликат этого файла с именем «[оригинальное имя таблицы] _working». В зависимости от выбора пользователя на коммутаторе, форма, которую пользователь выбирает для просмотра, должна переключить свою таблицу источника записей на рабочую таблицу. Сегодня я переработал соответствующий код, чтобы сделать это в следующей функции:
Public Sub SetFormToWorking(ByRef frm As Form)
With frm
.RecordSource = rst![Argument] & "_working"
.Requery
Dim itm As Variant
For Each itm In .Controls
If TypeOf itm Is subForm Then
With Item
Dim childFields As Variant, masterFields As Variant
childFields = .LinkChildFields
masterFields = .LinkMasterFields
.Form.RecordSource = .Form.RecordSource & "_working"
.LinkChildFields = childFields
.LinkMasterFields = masterFields
.Form.Requery
End With
End If
Next
End With
End Sub
Строки кода, которые вызывают функцию, выглядят так:
SetFormToWorking Forms(rst![Argument])
и
SetFormToWorking Forms(cmbTblList)
По какой-то причине вышеуказанная функция не меняет источник записей для формы. Я добавил ключевое слово ByRef к параметру, чтобы быть уверенным, что он передается по ссылке, но без кубиков. Надеюсь, кто-то здесь может сказать мне, что я сделал не так?