Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Atanor
Member

Откуда:
Сообщений: 25
Не могу понять, как проделать простейшую вещь - передать строковый параметр Param из модуля формы MyForma_1 в модуль формы MyForma_2 того же проекта. В обоих модулях он обьявлен как Public.

Для изложения сути проблемы пишу максимально упрощённо:

Итак, в модуле формы MyForma_1 имеется процедура

Public Param As String
Public Sub Proc1()
.......

Param = ”aa”
.......

End Sub

и в модуле формы MyForma_2 имеется процедура

Public Param As String
Public Sub Proc2()
.......

Msgbox Param
.......

End Sub

У меня параметр Param определяется в процедуре Proc1() и должен передаваться в процедуру Proc2().

КАК ДОБИТЬСЯ, чтобы значение параметра Param правильно передавалось в процедуру Proc2() ? У меня Param получается равным пустой строке в Proc2().


Не помогает даже создание обычного модуля c процедурой:

Public Param As String
Public Sub Proc(Param)
End Sub


Не помогает также вызов этой процедуры Call Proc(Param)
в процедуре Sub Proc2() перед строкой Msgbox String .
23 мар 07, 11:31    [3932499]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
property let/get/set - почитать справку
23 мар 07, 11:32    [3932513]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Старый ворчун
Member

Откуда:
Сообщений: 1653
Публичные переменные и процедуры объектного модуля являются по сути свойствами и методами этого объекта. Поэтому при их использовании необходимо указывать сам объект:
Call Forms!MyForma_2.Proc2(Param)
23 мар 07, 11:35    [3932543]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Диам
Member

Откуда:
Сообщений: 1460
объявить только ОДНУ переменную в обычном модуле и делай с ней что хочешь.
Или объявить ОДНУ переменную var1 в какой-либо одной форме (forma1) с помощью
public var1
. Из второй формы читать ее как msgbox forms!forma1.var1
23 мар 07, 11:38    [3932574]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Dionisiu
Member

Откуда: Крым
Сообщений: 151
возможно, глупый вопрос к автору, но всё же: а форма1 в этот момент открыта? параметр чем-либо инициирован?
23 мар 07, 12:08    [3932840]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Atanor
Member

Откуда:
Сообщений: 25
Dionisiu
возможно, глупый вопрос к автору, но всё же: а форма1 в этот момент открыта? параметр чем-либо инициирован?


Да, открыты обе формы. Параметр инициирован присвоением ему значения.
23 мар 07, 12:49    [3933227]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
klen_
Member

Откуда:
Сообщений: 2404
Набери слово OpenArgs
выдели его и нажми F1
должно помочь

Если не поможет, то объяви в Модуле1, например,
Global trpr As String
и через неё передаваё параметры, но лучше OpenArgs
23 мар 07, 12:57    [3933301]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Atanor
Member

Откуда:
Сообщений: 25
Диам
объявить только ОДНУ переменную в обычном модуле и делай с ней что хочешь.
Или объявить ОДНУ переменную var1 в какой-либо одной форме (forma1) с помощью
public var1
. Из второй формы читать ее как msgbox forms!forma1.var1

Ссылаясь в процедуре Sub Proc2() на параметр как

Msgbox Forms!MyForma_1.Param

выдаётся сообщение
"Сant find the form 'MyForma_1' referred to in a macro expression or Visual Basic code."

Притом это сообщение выдаётся даже в процедуре Sub Proc1() - там, где этому параметру присваивается значение:

Public Param As String
Public Sub Proc1()
.......

Param = ”aa”
Msgbox Forms!MyForma_1.Param ' выдаётся то же сообщение
.......

End Sub
23 мар 07, 12:59    [3933324]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Dionisiu
Member

Откуда: Крым
Сообщений: 151
вот почему-то всегда был абсолютно уверен, что обращение Forms!MyForma_1.Param - это обращение к контролу Param на форме Forms!MyForma_1, но никак не к переменной.

Автору - попробуйте использовать глобальную переменную
23 мар 07, 15:06    [3934166]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
Dionisiu
вот почему-то всегда был абсолютно уверен, что обращение Forms!MyForma_1.Param - это обращение к контролу Param на форме Forms!MyForma_1, но никак не к переменной.


значит всегда ошибался.

если контрол с таким именем то контролу если ПУБЛИЧНАЯ переменная то перменной.
ошибка может быть если форма не открыта в "нормальном" режиме
23 мар 07, 15:30    [3934377]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
George-III
Member

Откуда:
Сообщений: 3689
barrabas
property let/get/set - почитать справку

я пользуюсь этим методом и не видел ничего лучше и проще, научил кстати автор данного цитирования... Спасибо barrabas
23 мар 07, 16:04    [3934645]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Atanor
Member

Откуда:
Сообщений: 25
George-III
barrabas
property let/get/set - почитать справку

я пользуюсь этим методом и не видел ничего лучше и проще, научил кстати автор данного цитирования... Спасибо barrabas

Посмотрел справку и не понял, как Let/Set связаны с передачей параметров в другой модуль (а на Get справка вообще ничего не показывает).
Подскажите, пожалуйста, поточнее.
23 мар 07, 17:29    [3935275]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Atanor
Member

Откуда:
Сообщений: 25
Dionisiu
Автору - попробуйте использовать глобальную переменную

Определяю глобальную переменную как
Global Param As String
в обычном модуле, но это не помогает.
При попытке дать это определение также в модуле формы
редактор VBA эту команду воспринимает как синтактическую ошибку.
23 мар 07, 17:32    [3935295]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Старый ворчун
Member

Откуда:
Сообщений: 1653
Atanor
Ссылаясь в процедуре Sub Proc2() на параметр как

Msgbox Forms!MyForma_1.Param

выдаётся сообщение
"Сant find the form 'MyForma_1' referred to in a macro expression or Visual Basic code."

Значит форма не открыта или имеет имя отличное от MyForma_1...
23 мар 07, 18:01    [3935474]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Atanor
Member

Откуда:
Сообщений: 25
Старый ворчун
Значит форма не открыта или имеет имя отличное от MyForma_1...

Форма как раз открыта и имя формы тоже правильное.
Поэтому непонятно, почему даже в процедуре, где параметру присваивается значение, не работает ссылка на параметр при указании полного пути: Forms!MyForma_1.Param, тогда как ссылка Me.Param работает правильно.
23 мар 07, 18:15    [3935548]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Старый ворчун
Member

Откуда:
Сообщений: 1653
Atanor
Старый ворчун
Значит форма не открыта или имеет имя отличное от MyForma_1...

Форма как раз открыта и имя формы тоже правильное.
Поэтому непонятно, почему даже в процедуре, где параметру присваивается значение, не работает ссылка на параметр при указании полного пути: Forms!MyForma_1.Param, тогда как ссылка Me.Param работает правильно.

приложите пример, скажу почему
23 мар 07, 23:41    [3936184]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Atanor
Member

Откуда:
Сообщений: 25
приложите пример, скажу почему

Привожу два варианта процедуры Proc1() модуля формы MyForma_1:

Option Compare Database
Public Param As String

Public Sub Proc1()
.......

Param = ”aa”
MsgBox Me.Param
.......

End Sub

Этот вариант правильно выдаёт значение Param, но нижеследующий выдаёт сообщение "Сant find the form 'MyForma_1' referred to in a macro expression or Visual Basic code."

Option Compare Database
Public Param As String

Public Sub Proc1()
.......

Param = ”aa”
MsgBox Forms!MyForma_1.Param

.......

End Sub


Форма MyForma_1 у меня открыта в табличном (Datasheet) формате - может в этом причина?
26 мар 07, 13:57    [3940030]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Dionisiu
Member

Откуда: Крым
Сообщений: 151
а попробуйте
MsgBox Forms!MyForma_1!Param
(восклицание вместо точки)
чем Билл не шутит, может, поможет.
26 мар 07, 15:31    [3940679]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Старый ворчун
Member

Откуда:
Сообщений: 1653
Atanor
приложите пример, скажу почему

Привожу два варианта процедуры Proc1() модуля формы MyForma_1:

Вам трудно сделать пример и приложить? Из того, что вы написали, я не вижу, действительно ли у вас форма называется "MyForma_1", каким образом и из какого события вызывается Proc1...
26 мар 07, 15:49    [3940826]     Ответить | Цитировать Сообщить модератору
 Re: Как передать параметр с одного модуля формы в другой модуль формы?  [new]
Atanor
Member

Откуда:
Сообщений: 25
Старый ворчун
Вам трудно сделать пример и приложить?

Вообще-то сложновато. Здесь я давал короткие и простые названия, но реальные модули моих форм содержат комменты, длинные имена форм и переменных не на рус. и не на англ. языках, и со стороны будет не так быстро разобраться. Спасибо за готовность помочь, но я ещё попробую кое-какие другие варианты.
26 мар 07, 18:14    [3941867]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить