Из статьи Добавление вспомогательных отчетов, поиск итоговых сумм и общее количество (в основной отчет) :
Crystal Reports - это приложение для бизнес-аналитики, используемое для проектирования и генерировать отчеты из широкого спектра источников данных. Sub Reports - это дочерние отчеты основного отчета, которые могут быть встроены в основной отчет. Суб-отчеты очень полезны для составления отчетов.
Добавление вспомогательных отчетов находит общую и общую сумму каждого дополнительного отчета в основном отчете
Основной отчет
Sub Report 1
Sub Total: sum (LabTotal)
Sub Report 2
Sub Total: sum (ItemTotal)
Grand Всего
Под-отчеты являются очень полезной опцией в отчете о кристаллах. Предположим, мы хотим найти
Добавление отчета Crystal
- Добавить новый элемент-> Отчет Crystal
- Если мы хотим создать Crystal Report, выберите наш собственный формат «Как пустой отчет» из галереи Crystal report
- Щелкните правой кнопкой мыши по «полям базы данных» в полях базы данных и выберите таблицы из базы данных, затем создайте ссылки (если необходимо)
- вправо Нажмите «Подробности» и добавьте дополнительный отчет.
- Повторите то же самое, что мы сделали в основном отчете, и перетащите необходимые поля в дополнительный подраздел отчета детали
Например: мы создаем отчет о труде, общий объем рабочей силы можно рассчитать как
В поле формулы - имя LabTotal
WhilePrintingRecords; Shared NumberVar LabTotal: = Sum ({PC_LABOUR_DETAILS.Total})
({PC_LABOUR_DETAILS) - таблица Total --- field
и добавлена сумма LabTotal в поле подгонки
Если у нас есть еще один дополнительный отчет, чтобы добавить ион на главную страницу, снова щелкните правой кнопкой мыши на разделе «Подробности» и добавьте новый раздел -> Подробности (b) И повторите шаги 4 и 5. Здесь мы добавляем второй суб-отчет по материалу и субтоталю материалов можно окупить как
В поле формулы -name ItemTotal
WhilePrintingRecords; Shared NumberVar ItemTotal: = Sum {PC_MATERIAL_DETAILS.Total})
({PC_MATERIAL_DETAILS) -table Total - поле
и добавляет сумму ItemTotal в поле sub total
Основной отчет
Чтобы найти общее количество обоих подписок
В поле Название формулы - GrandTotal
WhilePrintingRecords; Общий элемент NumberVar ItemTotal; Общий NumberVar LabTotal; NumberVar TotalAmount; TotalAmount: = ItemTotal + LabTotal; TotalAmount
blockquote>
Это в основном результат произвольной постоянной в источниках GCC.
GCC имеет внутренний параметр, который контролирует, сколько раз цикл предварительно развернут во время оптимизации:
/* The maximum number of iterations of a loop the brute force algorithm
for analysis of # of iterations of the loop tries to evaluate. */
DEFPARAM(PARAM_MAX_ITERATIONS_TO_TRACK,
"max-iterations-to-track",
"Bound on the number of iterations the brute force #"
" of iterations analysis algorithm evaluates.",
1000, 0, 0)
Это используется для анализа циклов, если GCC не имеет специальной логики для выполнения какого-либо алгебраического преобразования. чтобы получить количество итераций.
Если вы измените этот параметр на другое значение, переключение с результата на другой произойдет при другом магическом значении. С вашим исходным значением 998 я получаю это:
$ gcc -O3 -fwrapv -S -o- --param max-iterations-to-track=997 t.c | grep jl
jl .L3
$ gcc -O3 -fwrapv -S -o- --param max-iterations-to-track=998 t.c | grep jl
jl .L3
$ gcc -O3 -fwrapv -S -o- --param max-iterations-to-track=999 t.c | grep jl
$ gcc -O3 -fwrapv -S -o- --param max-iterations-to-track=1000 t.c | grep jl
Эти параметры являются внутренней деталью реализации и могут изменить значение в любое время или полностью исчезнуть.
(Используемая мной версия компилятора, основанная на GCC 6.3, не использует эти векторные инструкции для неоптимизированного случая, но представляет собой последовательность с условным переходом jl
, и точка отсечки немного отличается, предположительно из-за другие оптимизации.)