У меня есть данные в строках, как это для идентификатора 1Кристальный отчет; Объединение строк данных в одно значение
ID1 a1
ID1 б2
ID1 с3
ID1 d4
id1 e5
Мне нравится комбинировать его как «a1b2c3d4e5» в одном значении для id1. Заранее спасибо.
У меня есть данные в строках, как это для идентификатора 1Кристальный отчет; Объединение строк данных в одно значение
ID1 a1
ID1 б2
ID1 с3
ID1 d4
id1 e5
Мне нравится комбинировать его как «a1b2c3d4e5» в одном значении для id1. Заранее спасибо.
Это будет зависеть от типа данных для столбцов a1-e5 и того, что вы пытаетесь сделать с единственным значением.
Если вы просто пытаетесь отобразить это значение, вы можете создать формулу, которая использует функцию Crystal ToText(), чтобы сначала преобразовать их в строки, а затем объединить их вместе, используя «+».
ToText({id1.a1}) + ToText({id1.b2}) + ToText({id1.c3}) + ToText({id1.d4}) + ToText({id1.e5})
Вы могли бы сделать то же самое на стороне СУБД, а также.
Если вы можете предоставить дополнительную информацию, мы сможем предложить лучшее решение.
Итак, вы хотите объединить данные из нескольких строк в одну строку для отображения? Crystal Reports действительно не построен для такого рода вещей. Даже если бы вы могли, я бы все же предложил сделать эту серверную сторону сначала, а затем подавать ее в Crystal.
Это не будет слишком сложно, простой цикл данных на выбранном вами языке. Но Crystal создан для отображения и форматирования данных с помощью достойного (но не обширного) набора инструментов для обработки данных. Я не думаю, что это лучший способ.
Спасибо за ваш комментарий. У меня нет доступа к серверу, и я пытался создать массив или матрицу для хранения данных, а затем отобразить их. Но это не удалось. Спасибо за помощь. – Helen
Массив в Crystal звучит так, будто он может сделать трюк за то, что вы хотите сделать ... Какая у вас проблема с этим? Вы можете группировать заказчиком, инициализировать массив и numbervar, чтобы отслеживать размер в заголовке и динамически увеличивать массив (используя REDIM PRESERVE) с каждым новым продуктом, с которым вы сталкиваетесь в деталях. В нижнем колонтитуле у вас будет массив каждого продукта, который клиент приобрел. – Ryan
Один из подходов - метод «3 формулы». Вы настраиваете формулу инициализации в каждом заголовке, с директивой времени оценки «WhilePrintingRecords». Этот подход был единственным, доступным для выполнения текущих итогов в «добрые дни» до того, как были доступны объекты RunningTotal.
Например:
В заголовке группы: - есть формула @InitiliseRT
WhilePrintingRecords;
StringVar ConcatenatedID;
If Not InRepeatedGroupHeader Then
ConcatenatedID := "";
В Подробности Раздел: - есть формула @UpdateRT
WhilePrintingRecords;
StringVar ConcatenatedID := ConcatenatedID + id1;
Наконец, в Нижняя колонка группы вы можете увидеть результат: - Формула @ShowRT
WhilePrintingRecords;
StringVar ConcatenatedID;
Это должно дать вам окончательную строку «a1b2c3d4e5».
Если вам нужно, вы можете добавить дополнительные формулы для дополнительных групп, по одной переменной для каждой группы (например, ConcatenatedIDGroup1, ConcatenatedIDGroup2). Ключ состоит в том, чтобы всегда получать имя справа между группами и инициализировать переменную в заголовке группы.
Существуют ограничения использования этих формул.Встроенные сводные функции (Sum, Max, Count, ...) или RunningTotals не могут их использовать, и вы не можете группировать их.
Я следил за вашим примером, но он не работает, когда на нескольких страницах. Пожалуйста, помогите или поделитесь некоторыми материалами, потому что он работает достаточно хорошо, когда отчет только на одну страницу. – rickyProgrammer
Я забыл о проблеме с несколькими страницами. Я обновил код для @InitialiseRT, чтобы включить проверку для InRepeatedGroupHeader. При первой распечатке страницы это будет false, а строка опустеет. Для любых последующих страниц InRepeatedGroupHeader является истинным, и строка будет оставлена в покое. Имейте в виду, что я не тестировал это, я просто ухожу с моей памяти, так как у меня больше не установлен Crystal. –
Я на самом деле закончил проблему на нескольких страницах, поставив формулу инициализации в нижней части группы. – rickyProgrammer
Я почти поддержал ваш ответ, но потом понял, что это не ее вопрос. Если бы это было так, вы ответили на это отлично. – PowerUser
Да, я считал, что, но сделал предположение, что это был snafu семантики и что более вероятно, что id1 был строкой/записью. – Ryan
Спасибо, что ответили на мой вопрос. Id1 - это идентификатор клиента, этот custome купил продукты a1, b2, c3 в разное время и т. Д. Мне нравится знать, какой клиент, купивший a1, также купил d4. большое спасибо – Helen