У меня есть запрос в Access Db, который подсчитывает количество наблюдений, которые соответствуют определенным критериям, как это определено двумя списками. Запрос работает отлично, и я могу получить результат запроса для отображения и обновления в реальном времени с помощью comboboxes с использованием подформ, но подчиненные формы являются крайне уродливым способом представления одного числа.Установить текстовое поле, равное запросу
Я хотел бы использовать текстовое поле для отображения этого единственного числа из запроса вместо подзаголовка. Я попытался ввести SQL запроса в источник управления и значение по умолчанию, но не добился успеха.
После прочтения форума я могу написать функцию, а затем установить источник управления, равный этой функции.
Вот мой VBA:
Public Function AdultCount()
Dim rs As Recordset
Set rs=CurrentDb.OpenRecordset("Select Count([name]) as [# Vars] from Masterdb where ((masterdb.year=[forms]![Masterform]![NavigationSubform].[form]![year]) and (masterdb.recipient=[forms]![Masterform]![NavigationSubform].[form]![recipient]) and (masterdb.group="adult"))")
AdultVar=rs!Result
rs.Close
Set rs=Nothing
End Function
я получаю «ошибка компиляции: ожидаемый: список разделитель или)» и выдвигает на первый план «для взрослых» в конце моего SQL запроса.
Я не знаю, почему это не работает. Кто-нибудь знает, почему я получаю эту ошибку, и скажите, могу ли я поступать правильно, чтобы получить то, что я хочу?
редактировать:
теперь у меня
Dim strSQL AS String
strSQL = "Select Count([name]) as [# Vars] from Masterdb where [year] = " & Me.NavigationSubform.year.value & " and [recipient] = " & Me.NavigationSubform.recipient.value & " and [group]='adult'"
Set rs=CurrentDb.OpenRecordset(strSQL)
AdultVar=rs![# Vars].Value
rs.Close
Set rs=Nothing
End Function
Но текстовое поле читает "#name?"
Любые идеи?
Я сделал это, и ошибка исчезла, но в текстовом поле отображается только «Имя?». вместо данных, которые я хочу. Я попробую другое решение, которое вы предоставили. – Carl
Здесь: 'AdultVar = rs! Result' В набор записей не входит поле с именем * Result *. Попробуйте 'AdultVar = rs! [# Vars] .Value' вместо этого. – HansUp