Ссылки в формах - PullRequest
       17

Ссылки в формах

1 голос
/ 08 ноября 2008

У меня есть две формы в Microsoft Access, одна называется Bill, а другая - Payment. У них обоих есть Общая сумма как поле в обеих формах. Я пытаюсь привязать общую сумму счета к общей сумме платежа.

Я попытался в источнике контроля общей суммы платежа: = Бланки! Счет!

но это, похоже, не работает. В представлении «Дизайн» написано «#Name?» в текстовом поле.

Как бы вы это сделали?

Ответы [ 3 ]

2 голосов
/ 08 ноября 2008

Является ли любая из форм подчиненной формой? Если это так, вам нужно сослаться на элемент управления подчиненной формы или родительское свойство:

Me.Parent.[Total order]
Me.[Subform Control name Here].form.[Total order]

Обратите внимание, что имя элемента управления Subform не всегда совпадает с формой.

РЕДАКТИРОВАТЬ: либо опустите меня или использовать Form! FormName в элементе управления.

РЕДАКТИРОВАТЬ 2: Обратите внимание, что обычный способ ссылки на формы, подчиненную форму и элементы управления с ударом (!) Или точкой (.). круглые скобки и цитаты используются редко. Это можно увидеть как на сайте Microsoft Access MVP (http://www.mvps.org/access/forms/frm0031.htm), так и на собственном сайте Microsoft (http://support.microsoft.com/kb/209099), как упомянул Knox.

Если нет, то пробовали ли вы построитель выражений? Это поможет убедиться, что у вас есть правильные имена.

Кроме того, лучше избегать пробелов в именах полей и элементов управления, это сэкономит вам много работы. Также лучше переименовать элементы управления, чтобы они не имели того же имени, что и поля, которые они содержат, например, txtOrderTotal.

0 голосов
/ 10 ноября 2008

Мое любимое решение - всегда возвращаться к наборам записей и вычислять соответствующие итоги, так как вы не всегда уверены , что итоги на уровне формы корректно обновляются (всегда могут быть ожидающее обновление элемента управления / записи по любой причине). Теперь у вас есть возможность использовать DSUM и связанные функции!

Exemple:

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)

Это может показаться сложным, но как только вы к нему привыкнете, вы без колебаний будете его использовать, и у вас никогда не будет проблем, с которыми вы сталкиваетесь сейчас.

0 голосов
/ 08 ноября 2008

Ответ Рему работает только в коде - однако похоже, что вы определяете источник управления текстового поля, попробуйте следующее:

=Forms("Bill")![Total order]
...