895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
1

Ссылка на публичную переменную из модуля формы

18.03.2016, 12:11. Показов 1451. Ответов 9
Метки нет (Все метки)

Добрый день всем.
Получил я тут от нашего вышестоящего начальства одну базу, со строгим указанием "использовать только Access 2003". Смысла сносить ради нее 2010 не вижу ни малейшего, потому решил пользовать в нем.
Так вот, там при открытии одной формы выдается запрос "Введите значение параметра [forms]![spisok].[poisk]". Ок, лезу смотреть, откуда оно появляется.
Там в запросе - источнике данных для формы - в одном из полей стоит условие Like [forms]![spisok].[poisk] & "*"
Соответственно иду в эту форму spisok, ищу в ней поле poisk. Его там нет. Потом узнаю, что это - не поле, это - публичная переменная, объявленная в модуле этой формы, и, мол, "в 2003 все работает, ставьте 2003".
Соответственно, вопрос, как с этим бороться, кто виноват и что делать).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2016, 12:11
Ответы с готовыми решениями:

Ссылка на объектную переменную из другого модуля проэкта
Всем доброе время суток ! Первым макросом создаётся таблица с помощью кода:...

Класс со ссылкой на публичную переменную
Здравствуйте, мне необходимо переслать переменную из основного потока в дочерний. Для этого , я...

Почему публичную переменную не видно в других классах
Д.д. следующий возник вопрос. Почему в данном коде возникает ошибка в строке 15. "Элемент R1 не...

Как создать публичную переменную в классе javascript?
Мне нужно создать класс, но по какой то причине не могу понять как сделать публичные переменные....

9
Модератор
Эксперт MS Access
10304 / 4211 / 684
Регистрация: 07.08.2010
Сообщений: 11,903
Записей в блоге: 4
18.03.2016, 12:15 2
Цитата Сообщение от Kkarn Посмотреть сообщение
публичная переменная, объявленная в модуле этой формы
их объявляют в общем модуле
1
546 / 273 / 50
Регистрация: 03.04.2015
Сообщений: 926
18.03.2016, 12:17 3
Можно проверять версию и в зависимости от неё подставлять код.
0
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
18.03.2016, 12:18 4
Лучший ответ Сообщение было отмечено Kkarn как решение

Решение

Цитата Сообщение от Kkarn Посмотреть сообщение
Соответственно, вопрос, как с этим бороться, кто виноват и что делать).
Сделайте на форме скрытое поле с таким именем и удалите переменную из модуля формы )))

Хотя я не понимаю, почему это в 2010 не работает. В 2007 вроде срабатывало. Пойду проверю на всякий ))
1
Эксперт MS Access
26720 / 14400 / 3190
Регистрация: 28.04.2012
Сообщений: 15,782
18.03.2016, 12:20 5
Kkarn, вместо прямого обращения к переменной сделайте публичную функцию выдающую значение этой переменной. В запросе обращайтесь к этой функции. И да, конечно переменная объявляется в общем модуле.
1
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
18.03.2016, 12:31 6
Проверила. Из модулей видна (только переменную в модуле формы описывать надо не Dim, а Public), а из запросов не видна.
Вложения
Тип файла: rar Проба.rar (29.4 Кб, 9 просмотров)
1
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
18.03.2016, 14:13  [ТС] 7
Спасибо всем за участие в обсуждении).
Беда в том, что базу эту делаю не я, ее прислали "сверху", и возможны дальнейшие изменения и доработки... И каждый раз вносить это исправление я вряд ли смогу, тем более что я не знаю, вдруг и в других формах и т.д. использовано что-то подобное...
То есть надо понимать так, что в 2003 аксе действительно работает такой метод обращения к переменным, а в новых - уже не работает? Забавно...
0
Эксперт MS Access
26720 / 14400 / 3190
Регистрация: 28.04.2012
Сообщений: 15,782
18.03.2016, 14:36 8
Лучший ответ Сообщение было отмечено Kkarn как решение

Решение

Цитата Сообщение от Kkarn Посмотреть сообщение
надо понимать так, что в 2003 аксе действительно работает такой метод обращения к переменным, а в новых - уже не работает? Забавно...
В сохраненных запросах ссылка на переменную уровня формы никогда не была возможна. Ни в какой версии. Но если задавать RowSource подформы динамически, то в строке можно использовать публичную переменную уровня формы. Это можно сделать и в 2010. Типа такого
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Option Compare Database
Option Explicit
 
Public N
 
Private Sub Кнопка1_Click()
    Dim s
    N = 1
    s = "select * from Таблица where Поле=forms!f1.N"
    Me.Подформа.Form.RecordSource = s
End Sub
Использовать переменную в начальном рекордсорсе никак не удастся, переменные еще не сформировались к моменту открытия
1
895 / 285 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
18.03.2016, 14:47  [ТС] 9
Цитата Сообщение от mobile Посмотреть сообщение
Использовать переменную в начальном рекордсорсе никак не удастся, переменные еще не сформировались к моменту открытия
То есть, если у меня имеется база, в которой переменная объявлена в модуле формы, и в запросе она идет условием отбора записей для этой же формы - мне нет смысла ставить там 2003, оно все равно не заработает? Я правильно понимаю?

Добавлено через 4 минуты
Цитата Сообщение от texnik-san Посмотреть сообщение
Сделайте на форме скрытое поле с таким именем и удалите переменную из модуля формы )))
Вот это вот сделал - вроде бы работает) Спасибо большое)
0
546 / 273 / 50
Регистрация: 03.04.2015
Сообщений: 926
18.03.2016, 19:20 10
Цитата Сообщение от Kkarn Посмотреть сообщение
ее прислали "сверху", и возможны дальнейшие изменения и доработки... И каждый раз вносить это исправление я вряд ли смогу
зачем вообще её прислали в таком разе?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2016, 19:20

Вызвать процедуру модуля объекта из модуля формы
Добрый день! Подскажите, есть модуль формы документа, из которого вызывается процедура...

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

Проблемы ученика / Видимость реквизитов формы из модуля формы
Изучаю 1С по книге Радченко, Хрусталева "Практическое пособие разработчика 8.3" - вроде все понятно...

Ссылка на переменную
Здравствуйте форумчане! Не знаю как точно сформулировать вопрос, примерно так: Допустим есть 2...

Ссылка на переменную?
Задача простая , но не знаю как решить , гугление тоже ничего не дало (вроде нужно ref...

Ссылка на переменную
Я создал функцию A, которая вызывает ф-ю B, которая в свою очередь создает переменную X и...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.