У меня есть два решения, над которыми я работаю, чтобы решить эту проблему ...
Попытка # 1
У меня есть поле со списком в форме доступа с двумя опциями, «Все» и «Все образцы». Образец - это выборка записей из моей таблицы, которые помечены для просмотра с помощью sample_record_id (текстовое поле) для идентификации с ненулевым положительным числом. «Все» и «Все образцы» находятся в моем источнике строк. Мой комбинированный список называется myFilters.
Afterupdate, этот VBA работает:
Private Sub myFilters_AfterUpdate()
Debug.Print myFilters.Value
If myFilters.Value = "All Sample" Then
Me.FilterOn = True
DoCmd.ApplyFilter , "sample_record_id <> '0'"
Else
Me.FilterOn = False
End If
End Sub
Все записи имеют запись для sample_record_id.
Я ожидал, что мои выборочные записи будут заполняться при выборе «Все выборки», а все записи будут заполняться в противном случае. Фактически, все записи заполняются, когда выбрано «Все», но когда выбран «Весь образец», появляется диалоговое окно «Ввод значения параметров» с текстом «sample_record_id» с пробелом для ввода текста.
Интересно, когда я переключаю IF и ELSE:
If myFilters.Value = "All" Then
Me.FilterOn = False
Else
Me.FilterOn = True
DoCmd.ApplyFilter , "sample_record_id <> '0'"
... ни выбор не работает должным образом.
Попытка # 2
Я также попробовал следующий VBA:
Private Sub myFilters_AfterUpdate()
DoCmd.SetWarnings False
strSQL = "SELECT * FROM invoice_summary WHERE sample_record_id <> '0';"
Debug.Print strSQL
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
End Sub
Я ожидал, что это сделает то же самое, что и предыдущий код, но независимо от того, какой выбор я выберу, появляется ошибка отладки, говорящая: «Для действия RunSQL требуется аргумент, состоящий из оператора SQL».
Отладка strSQL возвращает: SELECT * FROM invoice_summary WHERE sample_record_id <> '0';
Я пробовал с и без;
Оператор sql работает в стандартном запросе.
Есть ли способ заставить любой из этих работать?