Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2010, 14:21   #1
Eвгений
 
Регистрация: 04.12.2010
Сообщений: 7
По умолчанию Выбор фильтра из поля со списком

Здравствуйте.

на форме, по нажатию клавиши, пытаюсь выполнить команду:

...
'stLinkCriteria = "[Страна] = Forms!Главная!ПолеС.Value"
stLinkCriteria = "[Страна] = Forms!Главная!Стр.Column(1)"

DoCmd.OpenForm stDocName, , , stLinkCriteria
...
т.е. открыть другую форму с фильтром, указанным в поле со списком

получаю сообщение
Неопределенная функция 'Forms!Главная!Стр.Column'
неправильно написал (1) ???
делаю обычное поле =Стр.Column(1) все проходит...
подскажите пожалуйста, где я ошибся...

Заранее спасибо.

Последний раз редактировалось Eвгений; 04.12.2010 в 20:52.
Eвгений вне форума Ответить с цитированием
Старый 04.12.2010, 18:14   #2
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от Eвгений Посмотреть сообщение
подскажите пожалуйста, где я ошибся....
Вот здесь:
Цитата:
Сообщение от Eвгений Посмотреть сообщение
Forms!Главная!Стр.Column(1)
Abrakadabra вне форума Ответить с цитированием
Старый 04.12.2010, 18:23   #3
Eвгений
 
Регистрация: 04.12.2010
Сообщений: 7
По умолчанию

хм... ну да, каков вопрос, таков ответ....
Eвгений вне форума Ответить с цитированием
Старый 04.12.2010, 18:27   #4
Eвгений
 
Регистрация: 04.12.2010
Сообщений: 7
По умолчанию

а в чем ошибка-то?
Eвгений вне форума Ответить с цитированием
Старый 04.12.2010, 22:20   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Eвгений.
"..в чем ошибка..?" - Ваша ошибка в логике построения условия отбора записей при открытии формы.
переменная stLinkCriteria должна содержать строчное выражение содержащее условие отбора по полю (полям) без предиката (слова) WHERE
в Вашем случае в поле [Страна] наверняка нет текста Forms!Главная!ПолеС.Value,
а значит сначала необходимо получить значение поля Forms!Главная!ПолеС.Value, и с этим значением формировать условие отбора:
Код:
Dim s$
s = Forms!Главная!ПолеС & ""
'текстовое значение, должно быть заключено в апострофы (кавычки)
s = "'" + s + "'"
stLinkCriteria = "[КодСтрана] = " + s
или "упрощенный" вариант:
Код:
stLinkCriteria = "[КодСтрана] = '" & Forms!Главная!ПолеС & "'"
но помните слова упрощенный и хороший не синонимы.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 05.12.2010, 01:28   #6
Eвгений
 
Регистрация: 04.12.2010
Сообщений: 7
По умолчанию

нет. "те же грабли, только в профиль"

при описании проблеммы, я немного поторопился и написал непонятно..
итак:
есть таблица (справочник) Страна(длинное целое - ключ и текстовое - название)
есть форма, в которой надо показать записи по какой-либо стране
есть другая форма.
на ней кнопка и поле со списком (источник строк -
SELECT Страна.КодСтрана, Страна.Страна FROM Страна ORDER BY [Страна] DESC

выбираю в этом поле Россию и по нажатию кнопки хочу, чтобы выполнился код:

Dim stDocName As String
Dim stLinkCriteria As String
Dim s As String

stDocName = "ОбщийПросмотр"
s = "Forms!Главная!ПолеСоСписком26.Colu mn(1)"
stLinkCriteria = "[Страна] = " + s
Надпись39 = stLinkCriteria ' посмотрим чего там в строке критерии
DoCmd.OpenForm stDocName, , , stLinkCriteria

вываливается ошибка run-time error 3085
неопределенная функция 'Forms!Главная!ПолеСоСписком26.Colu mn' в выражении
НО при этом в надписи39
: [КодСтрана] = Forms!Главная!ПолеСоСписком26.Colum n(0).
(0) нолик как-то потерялся
Опять же для проверки делаю на форме поле
в свойстве данные =ПолеСоСписком26.Column(1)
подправляю переменную s="Forms!Главная!ПолеС.Value" и все работает.....
а с полем со списком никак....
в чем проблемма?
Eвгений вне форума Ответить с цитированием
Старый 05.12.2010, 01:32   #7
Eвгений
 
Регистрация: 04.12.2010
Сообщений: 7
По умолчанию

примечание в слове column на самом деле пробелов нет!!!!!
Eвгений вне форума Ответить с цитированием
Старый 05.12.2010, 07:54   #8
Eвгений
 
Регистрация: 04.12.2010
Сообщений: 7
По умолчанию

Большое спасибо Teslenko_EA
разобрался...
Eвгений вне форума Ответить с цитированием
Старый 05.12.2010, 16:22   #9
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Eвгений.
информация по Column(x)
обращение к Column(x) - это обращение к столбцу данных контрола с индексом x (нумерация начинается с нуля). У элементов управления Список и ПолеСоСписком есть свойство Присоединенный столбец (BoundColumn), при выборе значения контролу присваивается(передается) значение присоединенного столбца
подобные конструкции абсолютно идентичны
Код:
v = Forms!Главная!ПолеС.Value
v = Forms!Главная!ПолеС
v = Forms!Главная!ПолеС.Column(x)  'x -номер присоединенного столбца -1
а подобная конструкция:
Код:
s = "Forms!Главная!ПолеСоСписком26.Colu mn(1)"
присваивает переменной текст содержащий имя контрола.
Евгений.
P.S.
выкладываемый код для удобочитаемости заключайтев тэги [соde]...[/соde]
все свои сообщения я подписываю в надежде, что обращаться ко мне будут по имени.
Teslenko_EA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Измененние цвета фона поля (поля со списком) при редактировании TimRus Microsoft Office Access 2 17.05.2010 21:56
Обновление поля со списком Fezdipekla Microsoft Office Access 5 17.04.2010 22:54
поля со списком linkin241 Microsoft Office Access 1 25.03.2010 22:51
Создение поля со списком. Не сохраняются данные. Olyachir Microsoft Office Access 1 02.05.2009 15:44