2016-12-20 18 views
0

В течение нескольких часов я стучал головой о стену (все еще не в буквальном смысле, но я скоро начну, если не найду решение). Для меня проблема, с которой я столкнулся, на самом деле не проблема, не может быть проблемой, потому что я успешно использую subreports в другом меню того же проекта Silverlight, над которым я работаю. Я даже не могу определить, что это такое - проблема, проблема, зло ... Crystal Reports иногда может быть ... ну, интересным. Включая тот факт, что я работал с CR всего на 2 недели (все еще учась во время работы), и ситуация просто замечательная. Так или иначе.Crystal Reports v13.0.2000.0 .: почему пункт «где» не работает в подзаголовке?

Прежде всего, я стараюсь в основном иметь две копии отчета на один документ. В команде «Отчеты» (через «Эксперт базы данных») у меня просто select * from Documents where {?filter}. Я предлагаю предложение where из C#, прежде чем я вызову метод ExportToDisk(). Существует <sdk:DataGrid></sdk:DataGrid>, где я беру все выделенные строки (docs), их RowID, чтобы быть точным, создайте предложение «in()», отнесите его в параметр фильтра фильтра, и он работает, как я ожидаю.

Я искал в Интернете, и самое лучшее, что я мог найти, это иметь «фиктивный» основной отчет с его разделом, разделенным на две части, и вставить мой отчет в качестве подзаголовка в эти части. Все идет нормально. Я сделал ссылку «link of params» (Изменить Subreport Links ...), как и в другом меню, и ... никаких данных. Показываются только метки. Я проверил 3 документа, которые нужно сообщить, и я получил 3 * 2 = 6 страниц, но все с пустыми полями.

Окончательного заключения после более чем через час тестирования: если у меня есть отчет и установить его команду с помощью Expert Database для select * from Documents where RowID = '<someGuid>' или select * from Documents where {?filter}, то я всегда получает все поля документов (например, клиент, код и т.д.) - в первом случае только одна страница для конкретного документа, во втором - одна страница на документ. Если я попытаюсь в качестве подзаголовка и выберем 2 документа из сетки, я получаю четыре «пустых» страницы - по два на док. Не нужно говорить, что если команда subreport: select * from Document where {?filter}, и я связываю фильтр с основным отчетом, он не работает.

К моему удивлению, кажется, что это работает! ... в одном конкретном случае: если я установил команду подзаголовка в select * from Documents where 1 = 1. В этом случае я могу сказать 2000 страниц для 1000 документов, которые у меня есть в таблице, - все со всеми полями, заполненными данными.

Так что это моя «проблема» !? Это так странно, что я даже не знаю, следует ли это назвать «проблемой» или чем-то еще. Любая помощь будет принята с благодарностью, спасибо!

Редактировать: Подвести итог: У меня есть основной отчет «фиктивный» с его набором команд select * from Documents where {?filter}. Я разделяю его раздел «Подробности» на две части, и я вставляю в каждую часть подрепортаж. Команда подзаголовка - select * from Documents where doc_RowID = '{?filter}', где RowID должен поступать из основного отчета по ссылке. Я пробовал в подзаголовке: select * from Documents where doc_RowID = '<someGuid>' и снова получаю только страницы с ярлыками. Он работает, если у меня есть 1 = 1 в подзаголовке.

В основном отчете я даже попытался сгруппировать docs по столбцу doc_RowID и поместить подзаголовок в раздел GroupHeader и GroupFooter. Нет успеха.

редактировать с сегодняшнего дня (21.12.2016): Я пытался установить командование подотчета, чтобы отфильтровать данные по некоторым полем левобережной присоединился docItems таблицы как ди, который показывает детали купили: where di.Price > 5. Когда я запускаю запрос с этим предложением where в SQL Server Management Studio, я получаю результат из 7 записей в 3 документах. В отчете я получаю 260 страниц, что означает, что он возвращает 130 документов в CR. WTF здесь происходит ...: O

edit3: Клиентский сервер SQL не работает, поэтому я решил продолжить тестирование на нашем сервере. Проблема исчезла. Это может показаться хорошей новостью, но в конечном итоге мне придется развернуть свою работу на своем сервере ...

ответ

0

Я нашел Волшебство для этого. Я называю это «Магия», потому что я не знаю, как именно это помогло в ситуации, и не помогло бы мне в следующий раз столкнуться с подобной проблемой. Надеюсь, этого не произойдет.

Прочитано this thread - там я нашел решение. Только в этом случае он становится мертвым, я отправлю его здесь:

  1. Открыть отчет в XI дизайнер CR.

  2. Выбрать базу данных -> Установить местоположение источника данных.

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

  4. После обновления закрыть окно Set Datasource Location.

  5. Перейдите в меню «База данных» и нажмите «Проверить базу данных» и нажмите «ОК».

  6. Предварительный просмотр отчета и сохранение отчета.