Показать сумму результатов запроса на основе основной формы в текстовом поле - PullRequest
0 голосов
/ 10 апреля 2020

Я создал базовую c базу данных в Access 2013 для управления проектами. В нем я установил основную таблицу с именем Project-properties, в которой идентификатор проекта хранится в качестве уникального идентификатора, а также другие поля для свойств проекта. Эта таблица связана через соединение 1: n с другой таблицей с именем Invoices, в которой хранятся все счета-фактуры, соответствующие уникальному проекту.

Затем я создал форму, основанную на Project-properties. В этой форме я хочу отобразить текстовое поле, показывающее сумму всех счетов, соответствующих выбранному проекту.

Представьте, что у меня есть 10 счетов, распределенных по 4 проектам, по 10 000 долларов США каждый, в результате чего получается 100 000 долларов США. То, что я хочу показать в форме, это только сумма счетов-фактур, соответствующих, скажем, ID проекта 01. В таблице Invoices только 3 предложения соответствуют этому идентификатору проекта с $ 10k каждый, поэтому вышеупомянутое текстовое поле должно отображать $ 30k.

Я пробовал с =Dsum('InvoiceSum';'Invoice'), но я получаю только сумму всех проектов $ 100 тыс.

1 Ответ

0 голосов
/ 10 апреля 2020

DSum (и связанные с ним функции поиска домена) имеют третий аргумент, позволяющий указать фильтр.

Если поле проекта является строкой, вы должны использовать что-то вроде:

=DSum("InvoiceSum","Invoice","ProjectID='ID01'")

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

Dim strProject As String
strProject="ID01"
=DSum("InvoiceSum","Invoice","ProjectID='" & strProject & "'")

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

=DSum("InvoiceSum","Invoice","ProjectID=" & ProjectID)

С уважением,

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