Итоги доступа динамически обновляются на основе текстовых полей - PullRequest
0 голосов
/ 02 апреля 2020

Все,

У меня возникли некоторые проблемы с итогами при использовании функции DSUM.

У меня есть форма Main и подчиненная форма (подробности). Подформа отображается в виде таблицы внутри главной формы.

Подформа содержит OppL_ID (PK, autonumber), Opp_ID (FK, присутствует несколько раз), Product, Unit, Unit unit Price. Теперь я хочу рассчитать общий доход за Opp_ID в главной форме. В основной форме выбран Opp_ID, несколько строк с продуктами показаны в подчиненной форме, связанной с этим Opp_ID. Если пользователь вводит данные в представление таблицы, доход должен быть снова рассчитан напрямую.

Сначала я пытаюсь заставить формулу работать в нижнем колонтитуле подчиненной формы. Но я не могу получить правильную сумму дохода. Теперь я добавил в запрос подчиненной формы Выручка: [Единицы] * [Цена за единицу]. Это отображает доход на уникальную строку. Я хочу доход по Opp_ID, поэтому я попробовал функцию DSUM.

То, что я пытался:

  1. Для суммирования дохода по Opp_ID я использовал формулу: DSUM ([Units] * [Цена за единицу]; "Qry_lines"; "[Opp_ID] =" & [Opp_ID])
  2. Вместо этого я также использовал имена элементов управления: DSUM ([txt_Units] * [txt_Unit Price]; "Qry_lines"; " [Opp_ID] = "& [Opp_ID])
  3. Я также пытался сослаться на поле Доход: DSUM ([Доход];" Qry_lines ";" [Opp_ID] = "& [Opp_ID])

Все формулы заканчиваются в результате:

Пример:

Opp_ID 51 состоит из двух строк с продуктами A и B, Строка продукта A = Единицы 1 Цена за единицу 20 Линия продукта B = Единицы 2 цена за единицу 30.

Результат: Если я стою на A, общий доход составит 40, а на линии продукта B 120.

Я ожидаю только одна цифра: 1 * 20 + 2 * 30 = 80

Похоже, это рассчитанный доход умноженный на количество строк? Что я делаю не так?

Я также пытался создать запрос суммы и сослаться на него, например:

Выберите Qry_lines.Opp_ID, Sum (Qry_lines.Revenue) в качестве SumofRevenue FROM Qry_lines Group by Qry_lines.Opp_ID.

Теперь я получаю правильную цифру для Opp_ID. Только я не могу сослаться на это в моей форме? Может быть, с Dlookup?

Я думаю, что я близко, но я не могу это сделать. Пожалуйста, помогите:)

1 Ответ

1 голос
/ 06 апреля 2020

Обратите внимание:

Используйте выражение агрегатной функции домена DLookup () в текстовом поле для ссылки на агрегатный запрос.

Фиксация изменений записи в таблице с кодом в событии AfterUpdate элемента управления. Одним из способов является If Me.Dirty Then Me.Dirty = False

. В том же случае используйте команду Refre sh или Requery или Recal c в главной форме.

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