Crystal Reports - объединить несколько строк в один ряд - PullRequest
1 голос
/ 30 сентября 2019

Пример:

RecordID ............ MemberName ........... SportID ......... Sport
1 .................. James ................. 1 ...............Hockey
1 .................. James ................. 2 ...............Football
2 .................. Jose .................. 5 ...............Basketball
3 .................. Jennifer .............. 2 ...............Football
3 .................. Jennifer .............. 4 ...............Dodgeball
4 .................. Jaqueline ............. 1 ...............Hockey
4 .................. Jaqueline ............. 3 ...............Baseball
4 .................. Jaqueline ............. 5 ...............Basketball
5 .................. John .................. 6 ...............Track

Привет всем, поэтому я пытаюсь создать отчет, который будет выводить одну страницу данных для определенного RecordID, в зависимости от того, какой RecordID я ввожу в поле параметра. Для этого я создал поле параметра для RecordID и группу для RecordID в отчете, и до сих пор данные выходили из других таблиц (где все расположено как «Имя», «Фамилия»). и т. д. для данного RecordID).

До сих пор все было хорошо, потому что данные для этой конкретной таблицы расположены иначе, чем для других.

Моя проблема в том, что отчет продолжает выводитьтолько один результат на страницу, а не все сразу;Итак, для примера с Джеймсом я получаю только флажок «Хоккей» на первой странице, а затем только флажок «Футбол» на второй странице и т. д.

Я хотел бы получить вывод изэта таблица должна выглядеть следующим образом (для RecordID = 1):

James:
[checkbox] Hockey.................. [empty checkbox] Dodgeball
[checkbox] Football................ [empty checkbox] Basketball
[empty checkbox] Baseball.......... [empty checkbox] Track

Вот как я делаю флажки (установлен шрифт Wingdings):

If {RecordID} = 1 Then

Chr(254)

Else

Chr(111)

Может кто-нибудь помочь мнес этим?

Редактировать Это решение, которое предпринял мой босс (в настоящее время не работает):

Для объявления переменной для каждого вида спорта

      Shared BooleanVar Hockey:=False;
Shared BooleanVar Football:=False;
Shared BooleanVar Basketball:=False;
Shared BooleanVar Baseball:=False;
Shared BooleanVar Basketball:=False;
Shared BooleanVar Track:=False;

Это для каждой переменной:

Shared BooleanVar Hockey; 
        If {SportID} = 1 Then 
        Sport=True 

и это для флажка:

Shared BooleanVar Hockey;
If Hockey = True Then
    Chr(254)

1 Ответ

0 голосов
/ 01 октября 2019

Если я понимаю, ваша структура выглядит следующим образом:

Группировать по RecordId Группировать по разделу SportId Details со всеми флажками

Итак, в отчете выберите RecordId 1, затем выберите SportId 1. Итак, данные в первом разделе подробностей:

RecordID ............ MemberName ........... SportID ......... Sport
1 .................. James ................. 1 ...............Hockey

Затем продолжите с RecordId 1 и выберите следующий SportId, то есть 2. Итак, данные в первом разделе подробностей:

RecordID ............ MemberName ........... SportID ......... Sport
1 .................. James ................. 2 ...............Football

Затем в отчете выберите следующий RecordId (2) и следующий SportId (5). Итак, данные в первом разделе подробностей:

RecordID ............ MemberName ........... SportID ......... Sport
2 .................. Jose .................. 5 ...............Basketball

Можете ли вы увидеть, что происходит сейчас? (если бы я вас понял).

Так всегда будет проверяться один вид спорта.

Я бы попробовал следующее решение. Это работает, вы знаете о спорте, я имею в виду, если у вас есть только эти 6 видов спорта.

  1. Только группа по RecordId. Удалите группу с помощью SportId.
  2. Поставьте флажки в нижнем колонтитуле группы.
  3. Подсчитайте вхождения каждого вида спорта. Используйте одно бегущее поле для каждого вида спорта. Не забудьте выполнить сброс при изменении RecordId.
  4. Используйте формулу, чтобы установить флажок для каждого вида спорта, когда счетчик этого вида спорта больше нуля.

Дайте мне знать, если вам нужна помощьс полями промежуточного итога или, если я неправильно понял проблему.

РЕДАКТИРОВАНИЕ: Как создать полные итоговые поля (шаг 3)

  1. В «Обозревателе полей» щелкните правой кнопкой мыши «ВыполнениеВсего полей ", а затем" Новый ... ".
  2. Дайте ему самое хорошее имя (да, имена важны): например," HockeyCounter ".
  3. Установите" Поле для суммирования "=«SportId».
  4. Установите «Тип сводки» = «Счет».
  5. Используйте кнопку формулы для установки «Оценки»:
    {YourTableName.SportID} = 1 //where 1 is the Hockey SportId
  6. Установите «Сброс» =«при смене группы», «группа № 1» (RecordId).
  7. Перетащите новое поле итоговой суммы в нижний колонтитул группы № 1.
  8. Повторите эти шаги для других видов спорта. (это будет скучно, извините).

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

...