2015-10-23 5 views
0

У меня есть следующие один-ко-многим сценарий:Crystal Reports - получить первый, второй и третий появление значения linkedTable

Одна запись -> Для -> Многие Notes (из типов X, Y и Z)

На странице каждой записи мне нужно включить только первые 3 Примечания типа X в хронологическом порядке.

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

ответ

1

Просто расширение вашего решения.

  1. Сначала выберите только 3 записи, которые будут получены из базы данных.

  2. Теперь сортируйте либо по возрастанию, либо по убыванию во всех трех под-отчетах.

  3. Теперь в подпункте 1 подавляйте 2 и 3 записи таким же образом во втором подзаголовке, подавляя 1 и 3 записи, а в подпункте 3 подавляйте 1 и 2 записи.

Вы можете подавить записи, поместив специальное поле Record Number и подавить условие будет

if recordnumber = 1 
then true 
else false 

Точно так же для второго и третьих записей.

+0

Мне нравится, как просто это решение - особенно учитывая, что нетехнические люди могут обновить отчет в будущем. Этот ответ работает очень хорошо. У Шонта есть точка зрения о производительности, особенно если учесть, что я не нашел способа сделать кристалл-инструмент с (nolock), пределом, смещением или диапазоном. В моем случае это фактически позволило мне удалить ссылки на таблицу с низкой производительностью (заметки) и быть более избирательным в том, как подзаголовки выбирают записи. Я бы порекомендовал любого пользователя с проблемой, аналогичной моей оценке производительности, и выбрал решение, наиболее подходящее для их среды, и – TaterJuice

1
{@ResetCounter} // Place this in the group/page header where you want to restart the counter 
global numbervar counter := 0; 

Place this in the section suppression formula 
global numbervar counter; 
counter := counter + 1; 
counter > 3; // if true then suppress 

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

+0

. Этот ответ работает как решение, но может оказаться трудным в будущем, если нетехническому человеку необходимо обновить отчет. И ваш ответ, и Siva были протестированы как рабочие решения. Спасибо! – TaterJuice

+1

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

+0

Хорошая точка, и правда. Одна из многих причин, по которой я хочу использовать ограничения, смещение или диапазон в отчетах. Я тестировал оба метода, но другой разрешил мне полностью удалить таблицу примечаний из основного отчета, будучи более избирательным в вытягивании данных из этой (огромной) таблицы. Мне повезло, что я получил 2 очень подходящих ответа. Хотелось бы отметить как таковые :-) – TaterJuice

Смежные вопросы