Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 05.02.2022
Сообщений: 32

Как в форме Access в коде VBA воспользоваться значением переменой из другой формы

28.03.2024, 02:27. Показов 2677. Ответов 30

Студворк — интернет-сервис помощи студентам
Здравствуйте!

В Access имеются две формы - "Форма1" и "Форма 2".
В "Форма1" в коде VBA переменной "x1" присвоено значение 123456789

Подскажите, как в "Форма2" в коде VBA можно считать (для расчетов) значение переменной "x1" присвоенное в коде VBA в "Форма1"

Желательно бы фрагмет кода VBA на "Форма1" и "Форма2"
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2024, 02:27
Ответы с готовыми решениями:

Как воспользоваться переменными одной формы из другой?
Вообщем проблема в том,что в одной форме я объявляю переменные rgb,ver а в другой хочу считать их значение.Вот само объявление! public...

Создание Windows приложений. Воспользоваться данными одной формы в другой
Само задание Создать меню с командами input, Calc, About. При выборе команды About открывается окно с информацией о разработчике. При...

Как внести данные из другой таблицы в форму VBA access
Такой вопрос, у меня есть форма по таблице "Склад", в "поле общая длина магистраль" нужно провести вычисления из абсолютно другой...

30
Эксперт MS Access
 Аватар для Eugene-LS
13236 / 5918 / 1522
Регистрация: 05.10.2016
Сообщений: 16,573
29.03.2024, 07:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от AlbertBE Посмотреть сообщение
если нужно передать например значения сразу нескольких трех перменных ddd1, ddd2, ddd3
В форме 1:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim ddd1, ddd2, ddd3
Dim sOpenArgs As String
 
    ddd1 = "Отвари потихоньку калитку!"
    ddd2 = "(в подсоленной воде)"
    ddd3 = "При температуре не выше 726-ти град. !"
    
' Сборка и запуск
    sOpenArgs = ddd1 & ";" & ddd2 & ";" & ddd3
    DoCmd.OpenForm "Форма 2", , , , , , sOpenArgs
В форме 2:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Form_Load()
Dim vArr As Variant, iVal As Integer
 
    vArr = Split(Me.OpenArgs, ";")
 
    For iVal = 0 To UBound(vArr)
        If iVal < 2 Then
            MsgBox vArr(iVal), vbInformation, "Рецепт:"
        Else
            MsgBox vArr(iVal), vbExclamation, "Внимание!"
        End If
    Next
End Sub
0
1 / 1 / 0
Регистрация: 05.02.2022
Сообщений: 32
29.03.2024, 08:41  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
может еще что-то забыли?
вопросы появляются по мере из появления
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
29.03.2024, 09:01
Цитата Сообщение от AlbertBE Посмотреть сообщение
Но как быть если нужно передать например значения сразу нескольких трех перменных ddd1, ddd2, ddd3
Если после открытия второй формы первая форма остаётся открытой, то ничего никуда передавать не надо.
Public переменные и так доступны во второй форме.

Если же первая форма закрывается после открытия второй формы, то нужно собрать эти три значения в строку OpenArgs через какой-то разделитель, например, |, а во второй форме разбить эту строку функцией Split.

Можно ещё объявить эти переменные в стандартном (общем) модуле.
Имеет смысл только, если первая форма закрывается.
И опять ничего передавать не понадобится.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
29.03.2024, 13:07
Цитата Сообщение от AlbertBE Посмотреть сообщение
вопросы появляются по мере из появления
абырвалг
0
598 / 404 / 51
Регистрация: 06.03.2022
Сообщений: 2,129
29.03.2024, 13:24
Цитата Сообщение от AlbertBE Посмотреть сообщение
Но как быть если нужно передать например значения сразу нескольких трех перменных
Если переменных не много(3 как Вы хотите) можно и так:OpenArgs="ЗначениеDdd1,ЗначениеDdd2,ЗначениеDdd3"
На открытии формы:
Visual Basic
1
2
3
4
a=Split(OpenArgs,",")
Me.ctl=a(0)
Me.ctl1=a(1)
Me.ctl2=a(2)
0
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
29.03.2024, 16:28
Вариант без OpenArgs, публичных и глобальных переменных, записей в таблицы и т.п.,
применим в мульти инстансных реализациях форм
и изменяющихся во времени значениях переменных первой формы:
Вложения
Тип файла: zip GetVariablesValues.zip (14.4 Кб, 13 просмотров)
1
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
29.03.2024, 16:36
Jamaica,

А первая форма при этом должна быть открыта?
Спрашиваю, так как сейчас с телефона и не могу посмотреть.
0
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
29.03.2024, 16:46
Цитата Сообщение от Capi Посмотреть сообщение
А первая форма при этом должна быть открыта?
Там два варианта реализации,
один из них (закомментированный) предполагает злой случай с закрытой первой формой.
0
Эксперт MS Access
 Аватар для Eugene-LS
13236 / 5918 / 1522
Регистрация: 05.10.2016
Сообщений: 16,573
29.03.2024, 16:50
Цитата Сообщение от Jamaica Посмотреть сообщение
Вариант без OpenArgs, публичных и глобальных переменных, записей в таблицы и т.п.
Во!!! - Субклассинг в ход уже пошел ...
...
Ожидаем решений через API и облачное хранилище ...
Кликните здесь для просмотра всего текста
0
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
29.03.2024, 20:36
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Ожидаем решений через ... облачное хранилище ...

По "многочисленным просьбам телезрителей",
простенькое решение с "домашним хранилищем".
Вложения
Тип файла: zip GetVariablesValues3.zip (21.6 Кб, 9 просмотров)
0
1 / 1 / 0
Регистрация: 05.02.2022
Сообщений: 32
30.03.2024, 07:56  [ТС]
Всем спасибо за помощь!
Внимательно изучил все рекомендации (буквально неделю назад начал самостоятельно изучать access и VBA, до этого с модулями не сталкивался).

В итоге в модуле создал глобальные переменные ddd1, ddd2, ddd3 , вот так получилось и работает:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'1) создал модуль  Module1
 
Option Compare Database
Public ddd1
Public ddd2
Public ddd3
 
'2) Форма1 "Тест1"
Option Compare Database
 
Private Sub Кнопка_Click()
  ddd1 = 111111111
  ddd2 = 222222222
  ddd3 = 333333333
  DoCmd.OpenForm "Тест2"
End Sub
 
'2) Форма2 "Тест2"
Option Compare Database
Private Sub Form_Load()
 
MsgBox "Значения ddd1,ddd2,ddd3: " & ddd1 & ", " & ddd2 & ", " & ddd3
  
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2024, 07:56

Как в VBA-коде установить обработчик события для подчинённой формы?
Привет, друзья! Конкретно меня интересует событие BeforeUpdate для подчинённой формы (Subform). Форма из себя представляет...

Как закрыть все открытые формы по нажатию кнопки на форме VBA?
Здравствуйте, хотелось бы что бы по нажатию кнопки на форме1, закрывались все остальные формы в том числе и форма1 и открывалась форма0,...

Как из одной формы запустить Sub в другой форме?
Уважаемые, у меня такая ситуация: есть две формы, на одной я создал Sub с именем Refr, т.е. у меня следующий код: Public Sub Refr()...

Как отразить на форме последнюю запись с другой формы
Добрый день! сразу скажу, что Акцесс на уровне чайника, языков не знаю. Есть форма Трудовой договор, где можно выбрать сотрудника из уже...

При создании таблицы Access средствами VBA база блокируется (как полноценно создать таблицу access через vba)
Добрый день очень прошу помочь в решении задачи! Аналогичные вопросы поднимались на форумах и есть примеры кодов, но в этих примерах...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru