LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Как опред...
 Тема: Как определить какая форма является родительской
 
 15.06.2007 21:07:53
Luckiy
15 сообщения


Тема: Как определить какая форма является родительской
Разные формы (пример: документ Спецификация и документ Инвойс) запускают одну и ту же форму (Материалы). Работа сводиться к тому что производиться подбор элементов из формы Материалы в оба документа. Вопрос: Как определить из какой формы была открыта форма Материалы. Всем спасибо кто поможет.


P.S. Общий раздел по формам
Автор: Lucky от 12.01.2004 0:06:26 Источник ...
 15.06.2007 21:07:53
ТимурРахимов
16 сообщения


RE: Как определить какая форма является родительской
Похоже, после того, как мы программно откроем форму, из этой формы узнать, в какой форме находился код, которым её открыли, уже невозможно. Выход видится в том, чтобы сразу после того, как откроем форму, следующими же строчками кода передать только что открытой форме нужную информацию (имя исходной формы в вашем случае), или воспользоваться параметром OpenArgs метода OpenForm.

Мне известны четыре способа сделать это:

1) Передать имя исходной формы через параметр OpenArgs (7-й параметр) метода OpenForm объекта DoCmd:

strThisFormName=Me.Name
DoCmd.OpenForm "Открываемая форма", , , , , , strThisFormName

Переданное значение потом можно извлечь в открытой форме из свойства OpenArgs:

strInitialForm=Me.OpenArgs

2) Заранее создать в вызываемой форме нужное свойство (например, InitialFormName), и заполнить его сразу же после открытия формы:

strNewFormName="Открываемая форма"

DoCmd.OpenForm strNewFormName
Application.Forms(strNewFormName).InitialFormName=Me.Name

3) Разновидность предыдущего (несколько проще технически). Вместо свойства в открываемой форме заранее объявляем метод с одним строковым параметром, и передаём через него имя вызывающей формы:

strNewFormName="Открываемая форма"

DoCmd.OpenForm strNewFormName
Application.Forms(strNewFormName).PassInitialFormName(Me.Name)

4) Заранее создаём в открываемой форме несвязанное поле (например, с именем InitialFormName) и делаем его скрытым (InitialFormName.Visible=False), чтобы в него записать имя вызывающей формы. Тогда соответствующий код в вызывающей форме будет выглядеть так:

strNewFormName="Открываемая форма"

DoCmd.OpenForm strNewFormName

Application.Forms(strNewFormName).Controls(InitialFormName).Value=Me.Name




P.S. Общий раздел по формам
Автор: Тимур Рахимов от 12.01.2004 2:06:16 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Как опред...
ПоискПоиск  Список форумовСписок форумов  
right