Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Получить значение из поля со списком


Автор: tempUser 19.4.2011, 22:05
Привет всем.
Вроде тривиальная задача, но что-то не получается.
На форме имеется поле со списком и кнопка. Пользователь выбирает из списка какое-то значение. По нажатии на кнопку выполняется запрос, в который должно подставляться значение из поля со списком. Но почему-то запрос ничего не выбирает.
Та же самая операция прекрасно работает, если вместо поля со списком использовать обычное поле.
Предполагаю, что могу неправильно обращаться к выбранному значению поля со списком.
Код
[Forms]![MAIN_FORM]![titleList]
]
Возможно мало указать на titleList, а нужно еще указывать на конкретный элемент в нем... Но это только мое предположение.
Помогите разобраться, пожалуйста.

Автор: Akina 19.4.2011, 22:39
Вы указали само поле со списком (элемент управления), в то время как надо было указать конкретное его свойство 
Код

[Forms]![MAIN_FORM]![titleList].Text

Автор: tempUser 19.4.2011, 22:44
Прошу прощения, забыл написать... данный код я использую не в vba, а в конструкторе запросов в условии отбора.
Код
[Forms]![MAIN_FORM]![titleList].Text

Это не помогло.

Автор: Akina 20.4.2011, 10:47
Цитата(tempUser @  19.4.2011,  23:44 Найти цитируемый пост)
данный код я использую не в vba, а в конструкторе запросов в условии отбора.

Я написАл именно для конструктора запросов.
Если не работает - значит, либо текстовая часть не заполнена (что странно после выбора), либо форма не открыта (или закрыта) на момент выполнения запроса.
В общем, читайте закреплённую тему и выкладывайте макет проблемы.

Добавлено через 44 секунды
Ещё возможно, что в поле со списком несколько колонок... возможно, скрытых.

Автор: tempUser 20.4.2011, 21:38
Да, дело было в том, что в списке были еще колонки.
Спасибо, Akina.
А как посмотреть какие столбцы скрыты и сделать их видимыми. 
А то теперь не отображаются значения списка, но если ткнуть наугад и нажать на кнопку, то запрос отрабатывает правильно.

Автор: bopoha 20.4.2011, 23:30
Я очень не рекомендую использовать ссылки на поля форм напрямую из запросов. Что-нибудь потом поменять становится проблемой.

Используйте запрос с параметрами.
Выполнить его можно так:
Код

dim qry as DAO.QueryDef

set qry = CurrentDb.QueryDefs("query_name")
qry.Parameters("prmTitle") = Me.[titleList]
qry.Execute or OpenRecordset()


Если пользователю нужно посмотреть результат, то еще лучше воспользоваться формой и открывать ее с нужным фильтром.

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


Цитата(Akina @  19.4.2011,  22:39 Найти цитируемый пост)
Вы указали само поле со списком (элемент управления), в то время как надо было указать конкретное его свойство 


Это делать не обязательно. У элементов управления типа поле, список и т.п. есть свойство по умолчанию Value.

Автор: Akina 21.4.2011, 07:38
Цитата(bopoha @  21.4.2011,  00:30 Найти цитируемый пост)
Это делать не обязательно. У элементов управления типа поле, список и т.п. есть свойство по умолчанию Value. 

Для многоколоночного списка, как правило, нужно получить не Value (вернее Text), а соответствующий ему ID из скрытой колонки.

Автор: zlato 27.10.2015, 22:05
Akina, здравствуйте,

в этой "старой" теме напоминает о себе Дмитрий (zlato), которому Вы в другой теме посоветовали работать со списками учащихся, в том числе с медицинскими полисами, не в Excel, а Access. Я начал делать это.

Возникла такая проблема.
Я хочу, чтобы при выборе на форме значения из поля со списком ("После обновления") выполнялся макрос, открывающий запрос, в котором для отбора используется выбранное значение.
Создал запрос с условием отбора (ссылка на поле) и  макрос, его открывающий.
Но при этом запрос с _выбранным_значением_ не выполняется, а открывается результат его (запроса) предыдущего выполнения.

В макросе сразу же запустить, выполнить запрос почему-то нельзя.

Что можно сделать?

Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)