|
|
|
| Что-то я не понимаю...
Я ее объявил (As Variant) в модуле формы, потом присвоил значение...
Потом вышел из формы...
Потом открываю другую форму (при загрузке проверяю значение этой переменной).
А значение то не запомнилось. Возвращает пустоту...
Где я накосячил? | |
|
| |
|
|
|
|
Я ее объявил (As Variant) в модуле формы
|
Глобальные переменные необходимо объявлять не в модуле класса, и обязательно Public | |
|
| |
|
|
|
| Расскажите подробнее, пожалуйста.
Где её объявить (нужен отдельный модуль?) и как ей присваивать значение?
У меня значение присваивается по результату действий на форме (в модуле которой я ее и объявил). | |
|
| |
|
|
|
| Глобальный модуль, это тот, который виден во вкладке "Модули" окна базы данных, и не описывает класс.
Различий в присвоении значений переменным разной области видимости нет.
Объявлять ее в отдельном модуле или нет зависит от Вас. Необходимо помнить, что обращаясь первый раз к модулю, мы загружаем весь модуль в память. И если в одном модуле с объявленной глобальной переменной будет много функций\процедур, которые нам в ближайшее время не понадобятся, мы напрасно расходуем системные ресурсы. | |
|
| |
|
|
|
| Т.е. нужно создать отдельный модуль и там объявить эту переменную?
И тогда, если я в модуле формы присваиваю переменной значение, то оно будет доступно всегда и везде? | |
|
| |
|
|
|
| 1. Да, только это не должен быть модуль класса.
2. Да, в текущем сеансе работы с приложением. За исключением варианта, когда вследствии возникновении необработанной ошибки, значение переменной может "скинуться". | |
|
| |
|
|
|
| Спасибо.
Буду разбираться. | |
|
| |
|
|
|
| ПОдскажите еще для конкретного примера путь решения...
Нужно взять значение поля таблицы, отобрав по условию и присвоить переменной.
Как правильно это сделать? Запросом не получается. | |
|
| |
|
|
|
| вариант 1 (проще)
см Help по функции Dlookup
вариант 2 (чуть сложнее, но с перспективой на более широкое использование)
cм Help по Recordset
уже отвечал | |
|
| |
|
|
|
| Точно...
Как раз Dlookup мне в прошлый раз и помог...
Спасибо ) | |
|
| |
|
|
|
| а причем здесь объявление типа данных Variant и объявление видимости переменной?
объявите вашу переменную в глобальном модуле как
Public varValue as Variant
|
| |
|
| |
|
|
|
| Глобальный модуль - это где? :)
Честно - я пока в таких понятиях плаваю... | |
|
| |
|
|
|
| На вкладке проекта "Модули" - общие модули, они же "глобальные"
Есть одна грабля: если по ходу работы выскочит вигвам - все глобальные переменные помрут. Потому ловчее и надежнее либо избегать глобальных переменных, либо хранить их в скрытых полях на форме (свойство поля: Вывод на экран - Нет), которая постоянно загружена при работе проекта. | |
|
| |
|
|
|
| надежнее CurrentProject.Properties не встречал
CurrentProject.Properties.Add cORgns, Nz(strRegions, "") '--туда
'--обратно
Public Function getBDProperty(param$)
If IsBDProperty(param) = True Then getBDProperty = CurrentProject.Properties.Item(param)
End Function
Public Function IsBDProperty(strPNam As String) As Boolean
Dim lngCount As Long
Dim i As Long
IsBDProperty = False
If Len(Nz(strPNam, "")) = 0 Then Exit Function
lngCount = CurrentProject.Properties.Count
For i = 0 To lngCount - 1
If CurrentProject.Properties.Item(i).name = strPNam Then
IsBDProperty = True
Exit Function
End If
Next i
End Function
|
| |
|
| |