Crystal Reports с использованием нескольких результатов хранимой процедуры

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

Мы попытались вернуть два результата запроса: один — набор данных, из которого я сделаю отчет (который включает параметры запроса), другой — строку параметров запроса. Crystal видит только первый набор данных и это очень старое обсуждение (http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=42462) говорит, что это не сработает. Но это было более 5 лет назад, и я надеюсь, что все изменилось.

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

Итак, если у меня есть в конце моего хранимого процесса:

SELECT * FROM [#ResultSet]
select @SearchCriteria as SearchCriteria

Я хотел бы иметь возможность отображать SearchCriteria, даже если в #ResultSet ничего нет. Можно ли это сделать с этой версией Кристалла? Есть ли другой способ сделать это?


person thursdaysgeek    schedule 03.10.2011    source источник


Ответы (2)


Если, как указано в первом ответе, результаты одной процедуры имеют такое же количество столбцов другой процедуры (включая тип), в этом случае вы можете ОБЪЕДИНИТЬ результаты или ОБЪЕДИНИТЬ ВСЕ результаты (если вы хотите дубликаты), чтобы получить ОДИН результирующий набор.

Если типы или столбцы не совпадают, вы не можете этого сделать. Единственный другой вариант, который вы можете сделать, это объединить все соответствующие данные во временную таблицу, а затем вернуть результаты из этой временной таблицы (SELECT * FROM #temp)

person JonH    schedule 03.10.2011
comment
Мы взяли эту идею и доработали ее: если есть результаты, вернуть результаты (включая строку критериев поиска); если результатов нет, вернуть результаты, объединенные с кучей значений NULL, и строкой критериев поиска (одна запись). - person thursdaysgeek; 03.10.2011

Как вы в настоящее время можете отображать параметры, когда результаты находятся?

Вы не упомянули, как используете Crystal Report в своей среде.

Как правило, я выполнял отображение критериев, передавая параметры в отчет Crystal Report в качестве параметров отчета, а затем используя их в полях. Это предполагает, что вы каким-то образом вызываете его из клиентского приложения.

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

person Cade Roux    schedule 03.10.2011
comment
Существует около дюжины параметров, которые могут быть отправлены, а те, которые выбраны, собираются в строку, помещаются в каждую запись результата и отображаются в верхней части отчета. Не элегантно, но работает и избавляет нас от необходимости собирать струну в Crystal. - person thursdaysgeek; 03.10.2011
comment
@thursdaysgeek В этом случае просто ОБЪЕДИНИТЕ результаты со строкой всех значений NULL и столбцом параметров. Добавьте столбец индикатора типа селектора строк, чтобы указать, является ли это строкой результата или просто строкой параметра. Затем в отчете можно выбрать строки данных, которые будут находиться в области данных, и строки параметров, которые будут использоваться в области параметров. - person Cade Roux; 04.10.2011