Я использую блестящий код Аллена Брауна (http://allenbrowne.com/ser-35.html), чтобы открыть несколько экземпляров формы при событии щелчка. Я понимаю, что новые экземпляры доступны только для чтения, и мне удалось записать данные, введенные пользователем, чтобы сохранить журнал, благодаря этому сообщению ( Access 2007 / VBA - множественные экземпляры формы, обновление элементов управления для конкретного экземпляра из модуля ).
У меня есть несколько полей со списком в каждой форме, и я хотел бы обновить / запросить то, что показано в одном, в зависимости от выбора пользователя в другом (для каждой формы, а не среди форм). Например, пользователь выбирает компонент A на cmb1, cmb2 показывает только возможные сбои компонента A.
{me.Requery} будет только и всегда запрашивать форму в классе Forms (тот, который открыт из окна базы данных / навигационной панели, если таковые имеются, а не экземпляры в коллекции clnClient ниже). Тем не менее, я могу передать информацию с помощью «Я» и получить значения для ведения журнала.
Использование слегка модифицированной версии OpenAClient от Аллена Брауна с входными данными из MajP (в этой замечательной теме https://www.tek -tips.com / viewthread.cfm? Qid = 1753790 )
Public clnClient As New Collection
Public Function OpenAClient(FormName As String, Optional inputCaption As String = "") As Form_f_myForm
'Purpose: Open an independent instance of form f_myForm
On Error GoTo Err_OpenAClient
Dim frm As Form
'Open a new instance, show it, and set a caption.
Set frm = New Form_f_myForm
frm.Visible = True
frm.Caption = inputCaption
frm.Tag = FormName
'Append it to our collection.
clnClient.Add Item:=frm, Key:=FormName
Set OpenAClient = frm
Set frm = Nothing
Exit Function
Err_OpenAClient:
If Err.Number = 457 Then
MsgBox "A Form with this name already exists."
Else
MsgBox Err.Number & " " & Err.Description
End If
End Function
Я пытался
Public ActiveForm As Form_f_myform
Set activeForm = OpenAClient("ExampleForm","Example caption")
или простой
Set activeForm = clnClient.Item(2) 'just to test the second instance
, а затем использовать ActiveForm вместо «Я» и манипулировать им таким образом, но, похоже, это не работает. Любые идеи / помощь будут оценены. Или идеи по-другому. Спасибо!
Немного фона. Я очень новичок в VBA и Access, работаю над базой данных (Access Office365) для отчетов об ошибках. Все сбои были оценены заранее до доставки пользователю. Пользователь идентифицирует конкретный отказавший компонент и заполняет форму соответствующим образом (дата, тип сбоя и т. Д.). Они не изменят таблицу, содержащую предварительную оценку. Это все нормально и работает. Проблема заключается в добавлении пользователю возможности сообщать о множественных сбоях.