Пустой отчет при использовании мастера отчетов VS2008 и хранимой процедуры - PullRequest
0 голосов
/ 16 июля 2009

Я использую VS2008, пишу приложение на C # .NET. У меня есть сервер базы данных SQL Server 2005 с базой данных, которая содержит несколько хранимых процедур. Я хочу показать данные хранимой процедуры в отчете.

Итак, в качестве теста я создал новый проект VS2008 C # на основе типа проекта «Отчетность -> Приложение отчетов».

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

Когда я запустил приложение, в окне просмотра отчетов появилось «Отчет 1» вверху, но больше ничего. Была только одна страница.

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

Так почему же система отчетов не работает с хранимыми процедурами, но работает нормально с таблицами или представлениями? Хранимая процедура работает, если я выполняю ее в SQL Management Studio, и ей не нужны параметры.

Ответы [ 2 ]

2 голосов
/ 17 июля 2009

Я исправил это, не используя мастера.

  1. Создание нового приложения WinForms
  2. Вручную добавьте набор данных, щелкнув правой кнопкой мыши решение в обозревателе решений
  3. Добавьте TableAdapter вручную, дважды щелкнув xsd-файл DataSet в обозревателе решений, затем щелкнув правой кнопкой мыши пустую область и выбрав «Add-Table Adapter ...»
  4. Подключение к БД
  5. Выберите «Использовать существующие хранимые процедуры»
  6. Назначьте требуемую хранимую процедуру и завершите работу мастера
  7. Добавить отчет в решение вручную
  8. Дважды щелкните по нему, затем перейдите в «Данные-> Показать источники данных»
  9. Перетащите обязательные поля в отчет
  10. Поместите Microsoft.Reporting.WinForms.ReportViewer в основную форму
  11. Используйте всплывающий треугольник умных задач, чтобы связать требуемый отчет

Вы можете использовать мастер отчетов, доступный под умными задачами в элементе управления ReportViewer, вместо шагов 8 и 9, если вы хотите создавать табличные отчеты и т. Д.

0 голосов
/ 16 июля 2009

Я помню, что некоторое время назад у меня была проблема с использованием VS 2003 (Crystal Reports) и SQL Server 2000, когда разработчик отчетов не смог определить поля, возвращаемые хранимой процедурой, и в результате создал пустой отчет. В этом случае причина была в том, что хранимая процедура выбрала свои результаты из табличной переменной, определенной в SP.

Вы проверили, так ли это?

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

Тогда я решил создать своего рода SP-оболочку и выполнить все вычисления в табличной функции. Затем SP выбирает данные из этой функции (SELECT a, b, c FROM dbo.MyFunc (@param)), что позволяет разработчику отчета получать список полей. Мне нужен был SP, так как дизайнер не поддерживал параметризованные SELECT-запросы. Этот обходной путь был реализован в небольшом приложении, и я не уверен, как или если этот подход влияет на производительность в более широком масштабе.

...