DSum возвращает количество строк вместо общего значения

#ms-access #ms-access-2007 #ms-access-2003

#ms-access #ms-access-2007 #ms-access-2003

Вопрос:

У меня есть следующий код, прикрепленный к текстовому полю в форме:

 =DSum("[subform].Form![POINTS]","ATTENDANCE","[subform].Form![EMPLOYEE NO] = [EMPLOYEE NO]")
  

В идеале это дало бы общее количество баллов, набранных сотрудником, которого мы в данный момент ищем. Однако то, что я получаю, — это общая сумма строк в моей таблице.

Есть ли у кого-нибудь идеи о том, как я мог бы получить общую сумму значений вместо количества строк?

Спасибо

Ответ №1:

Если вы хотите получить итоговое значение из подчиненной формы, а ваша подчиненная форма синхронизирована с основной, будет намного эффективнее выполнить процедуру таким образом:

  1. создайте текстовое поле txtTotalPoints = sum(Points) в нижнем колонтитуле вашей подчиненной формы
  2. обратитесь к этому элементу управления из вашей основной формы: txtMainResult =subform!form!txtTotalPoints
  3. Скрыть txtTotalPoints (или сам нижний колонтитул)

Обычно это будет намного быстрее.

Ответ №2:

Насколько я знаю, функции домена, такие как DSum, DLookup, DCount и т.д., Используются для поиска и возврата значений из таблицы. Первым аргументом является поле, вторым — таблица, а третьим — критерии или оператор WHERE, который гарантирует, что вы получите правильный набор записей. Ваш первый аргумент относится к полю формы. Я думаю, что это неверно. Ваш первый элемент в вашем операторе WHERE также является полем формы. Я думаю, что это также неверно. Вместо этого вам нужно попробовать что-то вроде этого:

 =DSum("POINTS","ATTENDANCE","[EMPLOYEE NO] = " amp; [subform].Form![EMPLOYEE NO])