Раскрывающийся в Access 2007 запрос параметров - PullRequest
4 голосов
/ 19 мая 2010

Я хочу, чтобы запрос параметра Access запрашивал у пользователя значение (в данном случае это местоположение). Когда я набираю [Enter location] в поле «Критерии», все работает нормально: я получаю диалоговое окно (Введите значение параметра) с текстовым полем и моим текстом (Введите местоположение). Все идет нормально. Это работает (результат также).

Но теперь я хочу выпадающий список / выпадающий список (вместо текстового поля), чтобы пользователь мог выбрать местоположение. Я сделал форму и набрал Forms![Form1]![CmbLocation] в поле Критерии.

Как это: http://office.microsoft.com/en-us/access/HA011170771033.aspx

Но я все еще получаю текстовое поле (со ссылкой в ​​виде текстовой метки).

Что я делаю не так? Кто-нибудь есть совет?

Ответы [ 2 ]

3 голосов
/ 20 мая 2010

В дополнение к предложению Альберта, вы можете захотеть сделать эту работу внутри самого запроса, чтобы он был «загружаемым». Для этого вам нужно написать функцию, которая возвращает значение, выбранное в поле со списком в форме. Это было бы что-то вроде этого:

  Public Function ReturnMyCriterion() As Variant
    DoCmd.OpenForm "dlgGetCriterion", , , , , acDialog 
    With Forms!dlgGetCriterion
      If .Tag <> "Cancel" Then
         ReturnMyCriterion = Nz(!cmbMyCombo, "*")
      End If
    Else
      ReturnMyCriterion = "*"
    End With
    Close acForm, "dlgGetCriterion"
  End Function

(при открытии формы с помощью переключателя acDialog код приостанавливается до тех пор, пока форма открыта или видима; чтобы получить значение из поля со списком, необходимо установить для свойства .Visible формы значение False. сделайте это в событии AfterUpdate поля со списком или в кнопке OK. Также нужно, чтобы кнопка «Отмена» установила для свойства .Tag формы значение «Отмена», а затем для свойства формы .Visible было установлено значение False; относительно стандартный подход к работе с диалоговыми формами в Access).

Тогда вы бы сделали критерий в вашем запросе:

  Like ReturnMyCriterion()

То есть, если вы хотите вернуть все записи, если в поле со списком не выбрано значение.

2 голосов
/ 19 мая 2010

Если вы удалили параметр из вашего запроса, а затем повторно набрали в приведенной выше форме выражение в построителе запросов, то он должен работать.

Итак, в конструкторе запросов в разделе критериев просто введите

[forms]![form1]![Combo4]

Убедитесь, что у вас есть правильное имя формы и управляющее имя поля со списком.

Вам не нужно вводить что-либо еще в построитель запросов. Как указано, удалите старую подсказку параметра, которую вы имели ранее в построителе запросов.

Теперь откройте форму, выберите поле со списком и попробуйте открыть запрос, он должен открыться без каких-либо подсказок. Обратите внимание, что этот подход означает, что форма должна быть открыта, и в поле со списком будет выбрано значение ДО ТОГО, как вы попытаетесь запустить запрос. Итак, если вы основываете отчет на этом запросе, нажмите кнопку, чтобы запустить отчет в той же форме, что и отчет со списком. Это в значительной степени гарантирует, что форма будет открыта до того, как вы попытаетесь запустить запрос или отчет, основанный на этом запросе

...