Проблема, с которой вы сталкиваетесь, заключается в том, что, когда каждая итерация раздела сведений печатается в отчете, он знает только значение Max для SERIAL для строк, уже напечатанных в отчете.
Я предпочитаю использовать поле выражения SQL, чтобы обойти эту проблему.Это позволяет использовать запрос SQL для получения максимального значения SERIAL для сгруппированных данных до того, как все строки будут напечатаны в отчете.
Что-то подобное обычно работает для меня.
(
SELECT MAX("ORD_DETAIL"."ORD_DET_SEQNO")
FROM ORD_DETAIL
WHERE "ORD_DETAIL"."ORDERS_ID" = "ORDERS"."ID"
)
В моем примере у меня есть две таблицы, ORDERS
и ORD_DETAIL
.ORD_DETAIL.ORD_DET_SEQNO
содержит порядковые номера строк деталей заказа.Мои данные сгруппированы по ORDERS.ID
для итерации по каждому ордеру, и в следующем поле формулы будет напечатан вывод для каждой строки подробностей, который указывает ее последовательность из максимального значения всех порядковых номеров для этого ордера.1014 * В этой формуле %Max
- это имя поля выражения SQL в приведенном выше примере.
Если в ваших данных нет точки, где сбрасывается Серийный номер, то ваше поле выражения SQL будет выглядеть следующим образомthis.
(
SELECT MAX(Serial)
FROM VW_Sizes
)
Если вам требуется сброс в определенных точках, просто добавьте предложение WHERE, которое ссылается на table.column, который используется для группировки набора значений SERIAL.