У меня возник вопрос как передавать данные между формами в Access.
Такая задача:
Есть формы
1 – Поиск_домов
2 – F1
3 – F2
4 - …
… F15
Из любой формы F1, F2, … вызывается форма Поиск_домов
Когда пользователь в списке нашел интересующий его дом, он кликает на кнопку Вернуться и мне необходимо передать данные в форму из которой он попал на форму Поиск_домов. После этого эти данные надо как-то обработать. (Проверить, подходят ли они по критерию для данной формы и прочее).
Причем обрабатывать надо для каждой формы разными способами.
Если надо передавать одно значение, мне кажется не целесообразными делать для этого таблицу, поэтому, я в обработке события кнопки Вернуться писал код:
- Код: Выделить всё
If Not (IsNull(СписокДомов.Value)) Then
If IsFormOpen("F1") = True Then
‘ проверка подходит ли по критерию для формы F1
‘ если да то
Forms("F1").Controls("IdDoma").Value = СписокДомов.Value
‘ дополнительные действия для F1
End If
End If
If Not (IsNull(СписокДомов.Value)) Then
If IsFormOpen("F1") = True Then
‘ проверка подходит ли по критерию для формы F2
‘ если да то
Forms("F2").Controls("IdDoma").Value = СписокДомов.Value
‘ дополнительные действия для F2
End If
End If
If Not (IsNull(СписокДомов.Value)) Then
If IsFormOpen("F3") = True Then
‘ проверка подходит ли по критерию для формы F3
‘ если да то
Forms("F3").Controls("IdDoma").Value = СписокДомов.Value
‘ дополнительные действия для F3
End If
End If
Но по мере того, как росло количество форм, у меня возникли проблемы
1. При изменении каких-то условий или действий для формы F1, мне приходится постоянно лезть в форму Поиск_домов и править там код. ИМХО Это не удобно!
2. Если открыты две и более форм, то вносятся изменения в каждую из форм.
Чтобы изменения вносились именно в ту форму я стал использовать пометку Tag:
- Код: Выделить всё
Private Sub Укажи_дом_Click()
stDocName = " Поиск_домов"
DoCmd.OpenForm stDocName, , , stLinkCriteria
If IsFormOpen("Поиск_домов") = True Then
Forms("Поиск_домов").Tag = Me.Name
End If
End Sub
А потом, при обработке события кнопки Вернуться указывать
- Код: Выделить всё
Forms(Me.Tag).Controls("Адрес").Value = СписокДомов.Value
Всебы хорошо, да не так, потребовалось для одной из форм указывать два адреса!
Теперь так просто Forms(Me.Tag) не прокатывало, изменяло два адреса.
А теперь вопрос
Как сделать по нормальному!
Хочется чтобы при нажатии кнопки Вернуться вызывалась процедура формы F1,F2,F3.. которая захватывала бы все данные.
То есть обработку критерия данных переложить на форму, ту которую правишь F1,F2,F3
Под каждый критерий своя функция GetVal(), Приписанная к каждой форме F1…
F1. GetVal()
F2. GetVal()
Но я не знаю как запустить процедуру для другой формы, указанной по имени. 8-(
Если вы сталкивались с подобними проблемами, подскажите как решали