|
|
|
| Проблема:
Есть форма subfrm1, которая используется как подчиненная в frm1 и frm2. Еще есть форма frm1, у которой в подчиненной форме программно меняется объект-источник subfrm1 или subfrm2. В качестве источника данных subfrm1 выступеет запрос с параметрами. Когда я открываю frm1 и меняю объект источник подфомы на subfrm1, то у меня вылязит "Ведите значение параметра...", которого в frm1 нет. Затем я программно меняю источник данных subfrm1 и все работает, причем вне зависимости от того что введет юзер. Но как, блин, избавиться от этого дурацкого сообщения.
Вопрос: Можно ли как-то отложить выполнение этого запроса. Вариант с открытием в конструкторе не подходит, т.к. база будет MDE. | |
|
| |
|
|
|
| Добавьте на frm1 скрытое поле с именем параметра. | |
|
| |
|
|
|
| Попробуйте устанавливать источник подчинённой формы во время её открытия. Может, конечно, я ошибаюсь, но насколько я понял, подчинённые формы открываются почему-то раньше основной. | |
|
| |
|
|
|
| В форме запрос отрабатывается до возникновения события Form_Open. Отложить никак не удастся.
Вижу 2 варианта:
1. Запрос субформы сделать без параметров, возвращающий 0 или 1 запись. По ее событию
Form_Open проверять Me.Parent.Name, и подставлять правильный запрос в Me.RecordSource;
2. Если запрос с параметром используется только в этой субформе, подставьте вместо параметра ссылку на поле в заголовке формы. В нужный момент подставляйте туда значение и выполняйте me.Requery.
ЗЫ. Раньше я посоветовал ерунду. Поспешил. :-) | |
|
| |
|
|
|
| А почему нельзя вообще не указывать запрос субформы? И действовать далее так, как Вы советовали? | |
|
| |
|
|
|
| >А почему нельзя вообще не указывать запрос субформы?
Ну так и попробуйте...
Поля формы связаны с полями запроса (ControlSource). Если запрос убрать, ссылки будут в никуда. Может это и не страшно, но я бы так не делал. Трудно что ли написать запрос с WHERE ID Is Null или SELECT TOP 1 ... | |
|
| |
|
|
|
| Похоже, что запрос должен быть обязательно без параметров и менять его придется и в frm1 и в frm2. Или второй вариант, но он годиться только при одинаковом количестве параметров - сделать в frm1 и frm2 скрытое поле с одним именем, в которое кидать значение параметра. Пошел по первому пути.
Огромное спасибо всем откликнувшимся. | |
|
| |