powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Один ко многим в строку?
9 сообщений из 9, страница 1 из 1
Один ко многим в строку?
    #33856513
Мужики!

В отчете есть связь один ко многим.
Допустим так:

Таблица: Продавцы
Таблица: Клиенты


У Продавцы.Иванов 20 клиетнов Клиенты.Имя (1...20)

Надо каким то образом сделать так:
Все Имена Клиентов продавца Иванова сохранить в строку через запятую и потом эту строку вставить в отчет (в таблицу).

Трахаюсь уже целый день.
Помогите создать формулу!
Плииз!
...
Рейтинг: 0 / 0
Один ко многим в строку?
    #33856817
Distort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну если можно юзать функции (SQL), то лучше сделать оную... то есть пиши:
Код: plaintext
select Продавцы.Имя, GetClientString(Продавцы.Код) from Продавцы
а если без SQL-функций, то можно через группы попробовать... т.е. в заголовке группы писать строку, рассчитываемую по RecordSet... но это, имхо, некрасиво будет...
...
Рейтинг: 0 / 0
Один ко многим в строку?
    #33857166
SQL запросы нельзя использовать (если бы можно было, то я хранимку написал бы и не мучился).
Все построено ТОЛЬКО на таблицах.
Можно использовать формулы.
Да вот только я не знаю как нарисовать такую формулу, чтобы в строку сгоняла столбец таблицы.

Буду крайне признателен за помощь.
Не помню указал ли я, но это все надо сделать в Crystal Report 10
...
Рейтинг: 0 / 0
Один ко многим в строку?
    #33857372
FantomGood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
формула
shared stringvar s;
s:= s +", " + {Клиенты.Имя};
s;
...
Рейтинг: 0 / 0
Один ко многим в строку?
    #33859113
проблема в том, что такой подход накапливает значение {Клиенты.Имя} и в каждой строке этих значений получается больше на одно.

но подход верен!

подскажите как доработать этот скрипт, чтобы {Клиенты.Имя} собиралось ТОЛЬКО для данного Продавца в даннйо строке отчета
...
Рейтинг: 0 / 0
Один ко многим в строку?
    #33861698
Мужики проблема еще актуальна!

Код: plaintext
1.
2.
3.
4.
Продавцы:              Клиенты:

 1 . Иванов                у Иванова  20  чел
 2 . Петров                у Петрова  10  чел
 3 . Сидоров              у Сидорова  0  чел

отчет должен иметь такой вид:

Код: plaintext
1.
2.
3.
4.
5.
---------------------------------------
№ п/п |   Продавец | Имена клиентов |
---------------------------------------
 1         | Иванов      | <список клиентов через запятую>
 2         | Петров      |<список клиентов через запятую>
 3         | Сидоров    |<список клиентов через запятую>
...
Рейтинг: 0 / 0
Один ко многим в строку?
    #33861788
FantomGood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для каждой новой группы надо сбрасывать занчение

создаем еще формулу которую добавляем в footer группы

shared stringvar s;
stringvar temp;
temp:=s;
if Nextisnull({dict_Main.OwnerID}) or Next ({dict_Main.OwnerID})<>{dict_Main.OwnerID} then s:="";
temp;
...
Рейтинг: 0 / 0
Один ко многим в строку?
    #33893075
Спасибо!
Но задача усложнилась:

Как теперь вывести не через запятую,
а в каждой новой строке (что то типа chr(10)+chr(13))

как перевести каретку программно?
...
Рейтинг: 0 / 0
Один ко многим в строку?
    #33894931
Отвечаю сам. Может кому-то это поможет.
Чтобы вставить "возврат каретки" и писать с новой строки надо сделать так в формуле:
stringvar strVar;
strVar:= strVar + {ИмяТаблицы.Имя поля} + ChrW(10)+ ChrW(13);
strVar;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Один ко многим в строку?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]