#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:
Если вы хотите получить итоговое значение из подчиненной формы, а ваша подчиненная форма синхронизирована с основной, будет намного эффективнее выполнить процедуру таким образом:
- создайте текстовое поле txtTotalPoints
= sum(Points)
в нижнем колонтитуле вашей подчиненной формы - обратитесь к этому элементу управления из вашей основной формы: txtMainResult
=subform!form!txtTotalPoints
- Скрыть txtTotalPoints (или сам нижний колонтитул)
Обычно это будет намного быстрее.
Ответ №2:
Насколько я знаю, функции домена, такие как DSum, DLookup, DCount и т.д., Используются для поиска и возврата значений из таблицы. Первым аргументом является поле, вторым — таблица, а третьим — критерии или оператор WHERE, который гарантирует, что вы получите правильный набор записей. Ваш первый аргумент относится к полю формы. Я думаю, что это неверно. Ваш первый элемент в вашем операторе WHERE также является полем формы. Я думаю, что это также неверно. Вместо этого вам нужно попробовать что-то вроде этого:
=DSum("POINTS","ATTENDANCE","[EMPLOYEE NO] = " amp; [subform].Form![EMPLOYEE NO])