2016-03-01 4 views
1

У меня есть таблица, которая содержит все недели года (с использованием нумерации клиента, так что неделя 1 в июне) и даты начала. Существует форма, в которой они могут выбрать, на какую неделю они хотят посмотреть, поэтому я использовал ComboBox, который захватывает все номера недели, для которых они ввели данные в таблице WeeklyHours, используя Формат SELECT (WeeklyHours.Week, «0») AS Expr1 FROM WeeklyHours GROUP BY WeeklyHours.Week;Доступ - введите значение параметра Ошибка

Этот комбинированный текст затем должен использоваться в качестве фильтра недели для нескольких запросов, которые я создал, используя значение combobox в качестве критериев соответствия. Проблема в том, что когда форма закрыта, эти запросы не могут выполняться и дают мне ошибку «Введите значение параметра» для значения combobox.

Чтобы исправить это, я попытался создать новую таблицу под названием SelectedWeek с одной записью с именем Week_Number. Затем есть некоторый код AfterUpdate, который сохраняет выбранное значение combobox в поле Week_Number в SelectedWeek.

Затем я изменил запросы, чтобы указать [SelectedWeek]! [Week_Number], чтобы запросы всегда использовались независимо от последней выбранной недели. Тем не менее, я продолжаю получать ошибку значения параметра ввода для SelectedWeek! Week_Number, и я не могу понять, почему. Любая помощь будет оценена по достоинству.

Спасибо, Joel

ответ

0

Причина пользователю предлагается для параметра Value (кстати, это не ошибка) в обоих случаях двигатель Access SQL не может видеть либо ссылки значения. В первом случае форма закрывается, а во втором случае столбец неправильно привязан к поиску.

В первом сценарии просто держите форму открытой, какой пользователь выбирает значение из combobox при запуске других запросов. В противном случае, все содержимое формы не отозвано, так как он закрыт из памяти:

SELECT * FROM TableName WHERE weeknumber = Forms!FormName!WeekNumber 

Во втором случае использует DLookUp() часть функций семьи домена.

SELECT * FROM TableName WHERE weeknumber = DLookUp("Week_Number", "SelectedWeek") 

И действительно, функции домена может быть обобщено подзапросов в SQL:

SELECT * FROM TableName 
WHERE weeknumber IN (SELECT Week_Number FROM SelectedWeek) 

Даже больше, вы можете запустить кросс присоединиться запрос (таблицы, разделенные запятыми в FROM пункте) двух таблиц и избегать поиска. Ниже предполагается SelectedWeek является одной строки, из одного столбца таблицы, но с условием WHERE, длина обрабатывается, и вы можете явно объявить столбцы в обеих таблицах:

SELECT * 
FROM TableName, SelectedWeek 
WHERE TableName.weeknumber = SelectedWeek.Week_Number 
+0

Это подействовало. Большое спасибо. Я очень разбираюсь в VBA в Excel, но сейчас я пытаюсь изучить SQL. Ваши объяснения были очень полезными и информативными, и я очень благодарен. –

+0

Можете ли вы объяснить немного больше о выравнивании столбца к поиску? Я не понимаю, что это означает/означает. –

+0

Отлично, слышать. Пожалуйста, примите ответ, если он решит вашу проблему, которая также подтверждает разрешение. Для объяснения взгляните на ссылку, которую я добавляю в пост, краткий учебник 'DLookUp()'. В основном, ваша предыдущая ссылка 'SelectedWeek! Week_Number' будет работать только в том случае, если SelectedWeek была объединенной таблицей в запросе. Поскольку это не так, вы должны выполнить внешний поиск таблицы. – Parfait

Смежные вопросы