У меня есть две формы доступа к Microsoft: одна называется «Счет», а другая - «Оплата». У них обоих есть поле «Общая сумма» в обеих формах. Я пытаюсь связать общую сумму счета с общей суммой платежа.
Я пробовал в источнике управления общей суммой платежа: = Forms! Bill! [Total Amount]
но это, похоже, не работает. В режиме просмотра "Дизайн" отображается "# Имя?" в текстовом поле.
Как бы ты это сделал?





Является ли какая-либо из форм подчиненной? Если это так, вам нужно сослаться на элемент управления подчиненной формы или родительское свойство:
Me.Parent.[Total order]
Me.[Subform Control name Here].form.[Total order]
Обратите внимание, что имя элемента управления подчиненной формы не всегда совпадает с именем содержащейся в нем формы.
Обновлено: либо опустите меня, либо используйте Form! FormName в элементе управления.
РЕДАКТИРОВАТЬ2: Обратите внимание, что обычный способ ссылки на формы, подчиненные формы и элементы управления - это либо удар (!), Либо точка (.). круглые скобки и кавычки используются редко. Это можно увидеть как на сайте Microsoft Access MVP (http://www.mvps.org/access/forms/frm0031.htm), так и на собственном сайте Microsoft (http://support.microsoft.com/kb/209099), как упомянул Нокс.
Если нет, пробовали ли вы построитель выражений? Это поможет убедиться, что у вас есть правильные имена.
Кроме того, лучше избегать пробелов в именах полей и элементов управления, это сэкономит вам много работы. Также лучше всего переименовать элементы управления, чтобы они не имели того же имени, что и содержащиеся в них поля, например txtOrderTotal.
Ответ Remou работает только в коде - однако похоже, что вы определяете источник управления текстового поля, поэтому попробуйте следующее:
=Forms("Bill")![Total order]
Хотя часть моего ответа «Я» подходит только для кода, комментарии о подчиненных формах относятся к источникам управления. Необязательно использовать Формы («Счет»). Forms! Bill подходит для загруженной формы.
Мое любимое решение - всегда возвращаться к наборам записей и вычислять соответствующие итоги, поскольку вы не являетесь всегда уверен, итоги на уровне формы обновляются правильно (всегда может быть отложенное обновление элемента управления / набора записей по любой причине). После этого у вас есть возможность использовать DSUM и связанные с ним функции!
Пример:
dsum(Forms("Bill").recordsource, "unitPrice*lineQuantity")
Конечно, у вас могут быть более сложные решения, такие как определение временного набора записей для получения общей суммы по счету.
Dim rs as DAO.recordset, _
myBillNumber as variant, _
myBillAmount as variant
set rs = currentDb.openRecordset(_
"SELECT billNumber, sum(unitPrice*lineQuantity) as totalPrice FROM " & _
Forms("Bill").recordset.name " GROUP BY billNumber")
myBillNumber = rs.fields(0)
myBillAmount = rs.fields(1)
Это может показаться сложным, но как только вы привыкнете к нему, вы никогда не будете колебаться, и у вас никогда не будет проблем, с которыми вы сталкиваетесь сейчас.
Рему ответил правильно; может быть полезно просмотреть документацию Microsoft относительно ссылки на элемент управления: support.microsoft.com/kb/209099