Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как из одной формы вызвать процедуру в другой открытой или закрытой форме?
 
 автор: Сергей   (13.10.2006 в 06:28)
 
 

Как из одной формы вызвать процедуру в другой открытой или закрытой форме?
Access97, 2000

  Ответить  
 
 автор: Ирча   (13.10.2006 в 06:57)   личное сообщение
 
 

В ДругойФорме сделать процедуру Public
Вызывать ее

Call Form_ДругаяФорма.Кнопка0_Click

  Ответить  
 
 автор: ГлазастыйМышь   (13.10.2006 в 08:02)   личное сообщение
 
 

если форма закрыта, то вызвать процедуру не получится. Предварительно будет необходимо открыть

  Ответить  
 
 автор: zes   (13.10.2006 в 08:29)   личное сообщение
 
 

>если форма закрыта, то вызвать процедуру не получится.
>Предварительно будет необходимо открыть

в принципе открывать форму нет необходимости)

  Ответить  
 
 автор: ГлазастыйМышь   (13.10.2006 в 09:11)   личное сообщение
 
 

ну как минимум объявить переменную As Form
Пример, допустим есть форма "frmDeclarant" в ней процедура q

Public Function prom1()
Dim frm As Form
On Error GoTo Err_Debug

Set frm = New Form_frmDeclarant
Call frm.q("sdfgg")

Exit_Here:
Set frm = Nothing
Exit Function
Err_Debug:
Resume Exit_Here
End Function

  Ответить  
 
 автор: osmor   (13.10.2006 в 09:14)   личное сообщение
 
 

Ну так
Set frm = New Form_frmDeclarant
это и есть создание экземпляра формы т.е. открытие

  Ответить  
 
 автор: Ирча   (13.10.2006 в 09:15)   личное сообщение
 
 

ХЗ... на 2000 давно не работала... на 2003 мой код нормально пашет при закрытой форме. Проверила

  Ответить  
 
 автор: osmor   (13.10.2006 в 09:31)   личное сообщение
 
 

На самом деле при таком вызове
call Forms_ДругаяФормы.myFunction

экземпляр формы все равно создается.
Это можно увидеть посмотре в этот момент коллекцию Forms.
т.е. работать будет, но если говорить глобально:
"Фунцкию можно вызвать только у открытой формы"

  Ответить  
 
 автор: Ирча   (13.10.2006 в 09:35)   личное сообщение
 
 

БО СПО.... не знала

  Ответить  
 
 автор: Serge Gavrilov   (13.10.2006 в 12:05)   личное сообщение
 
 

>На самом деле при таком вызове
>call Forms_ДругаяФормы.myFunction
>
>экземпляр формы все равно создается.

Конечно, и, естественно,будут выполнены процедуры на открытие/загрузку формы (если они есть).

  Ответить  
 
 автор: dvs   (27.11.2006 в 15:43)   личное сообщение
 
 

А у меня почему-то не создаётся

  Ответить  
 
 автор: Serge Gavrilov   (27.11.2006 в 15:48)   личное сообщение
 
 

а, может, вы просто этого не замечаете?

  Ответить  
 
 автор: dvs   (28.11.2006 в 08:42)   личное сообщение
 
 

Сейчас поэксперементировал. Результат такой. Если форма уже запущена, запускается ещё один экземпляр (невидимый), но только один. Если нет, то опять же запускается один невидимый экземпляр.
Если же вызов идет из основной формы к подчинённой, то никаких новых экземпляров не создаётся. Так было и у меня вчера, поэтому я и не видел новых форм.

  Ответить  
 
 автор: KrukVN   (24.10.2006 в 13:01)   личное сообщение
12 Кб.
 
 

>ХЗ... на 2000 давно не работала... на 2003 мой код нормально
>пашет при закрытой форме. Проверила
А если потом загрузить эту самую форму, то закрывать ее нужно уже два раза, т.е. нужно чтобы docmd.close acform сработал два раза, чтоб форма наконец-таки закрылась. Проверял :)
Поэтому вызов функций из закрытых форм, делать наверное не нуна, лучш не ленится и перенести ее в модуль
Попробуйте в приведенном примере:
- запустить из модуля процедуру в форме;
- открыть саму форму;
- закрыть форму по кнопке 'закрыть'

  Ответить  
 
 автор: Аноним   (24.10.2006 в 12:26)
 
 

Перенеси функцию в модуль и не мучайся.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList