Подсчет экземпляров значения параметра в форме доступа - PullRequest
0 голосов
/ 25 января 2011

Я хотел бы отобразить в нижнем колонтитуле формы Microsoft Access счетчик определенного значения поля («Категория»), который я пытался использовать

=Sum(IIf([Category]="S",1,0))

в качестве элемента управленияисточник для текстового элемента управления в нижнем колонтитуле, но это не удается.Я не могу понять, почему я не могу выполнить этот расчет для этой комбинации управления / поля.Я подозреваю, что это связано с тем, что «Категория» не является источником управления для какого-либо элемента управления, даже если он доступен во втором столбце моего поля со списком.

Вместо этого я выполнил подсчет в поле «Устройство»и функция sum работает правильно, поэтому я почти уверен, что мой общий синтаксис и ссылки не полностью нарушены.Оба базовых значения являются текстовыми полями.

Мне бы хотелось немного помочь с тем, как я могу получить второй параметр запроса с помощью функции Sum?

Особенности:

ComboBox
Имя - "lstAppliance".Связанный столбец: 1, источник строки:

SELECT qryApplianceDetails.Appliance, qryApplianceDetails.Category FROM qryApplianceDetails;

Текстовое поле Имя: "txtCategory", Источник управления:

=Appliance.Column(1)

В случае, если это не яснодостаточно, то, что я хотел бы видеть, выглядит примерно так:


Заголовок формы: Appliance, Category


Детали формы

Грузовик, S
Грузовик, L
Автомобиль, S
Велосипед, M
Дом, L
Планета, S


Форма нижнего колонтитула
Количество элементов "S": 3


С этим источником в нижнем колонтитуле:

=Sum(IIf([Appliance]="Truck",1,0))

Отображается "2", каквы ожидаете, но:

=Sum(IIf([Category]="S",1,0))

Отображает «#error» вместо «3», как я ожидал.

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Я бы попробовал что-то попроще, но не уверен, будет ли это слишком просто для того, что вам нужно.

Используйте это выражение в качестве источника управления для txtCategory:

=DCount("*", "qryApplianceDetails", "Category='S'")

Тогда вдобавьте следующее:

Me.txtCategory.Requery
.
1 голос
/ 27 января 2011

Что касается вопроса использования поля в источнике записей формы в выражении (или в коде VBA), начиная с A2000, все стало более сложным.Это ненадежно, если поле, которое вы используете, не использовалось в качестве ControlSource элемента управления в вашей форме.Обходной путь - создать невидимый элемент управления с полем в качестве его ControlSource.

Другой способ обойти эту проблему - создать элемент управления с этим ControlSource:

  =Val(IIf([Category]="S", 1, 0))

...затем Sum () для этого элемента управления.

Мне не нравится идея использования DCount (), так как это требует попадания в базу данных для данных, которые уже находятся в форме.Во-вторых, если это находится в подчиненной форме, DCount () необходимо будет фильтровать не только по значению категории, но и по любому полю связи между подчиненной формой и ее родителем.Это настолько суетливо, что я бы сказал, что лучше пойти с чем-то, что может быть получено из набора записей, уже загруженного в форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...