FileMaker - Как вычислить поле, ссылающееся на две таблицы? - PullRequest
1 голос
/ 05 декабря 2011

Hiy парни,

Допустим, у меня есть эти три таблицы *:

ClownOrders
------------
_pk_order_id
status

ClownOrderLines
----------------
_fk_order_id
_fk_clown_car_id
amount

ClownCars
---------------
_pk_clown_car_id

Я хочу предоставить вычисляемый столбец в таблице "ClownCars", который показывает общую сумму для всехзаказы на этот автомобиль, где статус заказа не "отменен".

Пока мысли

Я создал новое вычисляемое поле в "ClownCars" с именем zz_g_canceled, которое простосодержит константу «отменен».

Затем я создал новое вычисляемое поле в «ClownOrderLines» с именем c_orderstatus, которое называется ClownOrders: status.

Затем я создал новое вхождение таблицы «ClownOrderLines» под названием «OpenClownOrderLines» и связал его с «ClownCars» по следующим критериям:

ClownOrderLines._fk_clown_car_id = ClownCars._pk_derc_ ClownCars._pk_derines._low_derines._clow_derines._clow.derc.= ClownCars.zz_g_canceled.

Наконец, я добавил это вычисляемое поле в ClownCars с именем totalOrdered, которое является суммой (OpenClownOrderLines :: amount)

Но новый столбец "totalOrdered" всегда показывает "?"сейчас.

* предмет изменен, чтобы лучше удерживать ваш интерес

1 Ответ

3 голосов
/ 06 декабря 2011

Нельзя использовать вычисленные поля без сохранения в нижней части отношения.

В этом случае вы пытаетесь посмотреть на вхождение таблицы OpenClownOrderLines из ClownCars с OpenClownOrderLines :: c_orderstatus в отношении.

Вы можете сделать c_orderstatus сохраненным значением (текстовое поле или хранимый расчет), но тогда нужно будет соблюдать осторожность при обновлении любых строк заказа при каждом изменении статуса заказа.

(Например, если статусизменения вносятся в сценарий, вы можете просто включить его в сценарий, но это может привести к тому, что вы забудете, если когда-нибудь установите статус другим способом.)

Лучше всего, чтобы таблица строк заказа вычисляла сумму, считая еекак ноль, если заказ был отменен.

Тогда таблица автомобилей может безопасно суммировать все строки заказа, зная, что любые отмененные не добавятся к общей сумме:

ClownOrderLines::c_amount_if_open = If ( ClownOrders::status ≠ 'Cancelled' ; amount ; 0 )

ClownCars::totalOrdered = Sum ( ClownOrderLines::c_amount_if_open )
...