Stored Proc (возвращающие набор данных) и Fastreport

отредактировано 13:57 Раздел: FastReport .NET
Доброго всем дня!

Есть процедура на MS SQL, возвращает Select...

Вставляю её в SqlDataSource, в гриде возвращаемый ею курсор видно нормально. Если же добавляю этот SqlDataSource в DataSources WebReport'a при создании отчёта выдаётся ошибка:
"
Сведения об исключении: System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.

Ошибка источника:

Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.
"

Подскажите кто сталкивался, не могу я чтоли использовать такой SqlDataSource в FastReport? Или как это побороть?

Комментарии

  • отредактировано 13:57
    Здравствуйте,

    Проверил на последней версии. С тестовой процедурой все работает. Как воспроизвести ошибку?
  • отредактировано April 2010
    AlexTZ написал: »
    Здравствуйте,

    Проверил на последней версии. С тестовой процедурой все работает. Как воспроизвести ошибку?

    У меня FastRep 1.2.47. VS2008. MS SQL Server 2008.

    Создаю ASPX-проект. На ASP-форму кидаю SqlDataSource, прописываю ConnectionString, ProviderName="System.Data.SqlClient", SelectCommandType="StoredProcedure", SelectCommand="GetSomthing". Процедура возвращает набор данных. Добавляю на форму WebReport, загружаю в него файл FRX, правой кнопкой на отчёте -> "Select Data Source" -> ставлю галочку на своём Datasource. В самом отчёте даже могу не использовать данные из этого ДатаСорса. Далее запускаю проект и при загрузке вышеуказанная ошибка.

    Если же вешать не процедуру а Таблицу, работает нормально, данные вытягиваются в полном объёме.

    Ещё момент, пытался набор данных добавить в самом отчёте, добавил Connection, добавил команду "exec GetSomthing", отобразились поля таблицы, которая возвращается из процедуры. Когда я использую их в отчёте, почему-то используется только первая строка из набора, остальных не видит, но и ошибку не вываливает.
  • отредактировано 13:57
    Попробуйте на последней версии FastReport.Net. Возможно, проблема решится.
    Что касается печати только одной строки: скорее всего, бэнд "Данные" не подключен к источнику данных.
  • отредактировано April 2010
    AlexTZ написал: »
    Что касается печати только одной строки: скорее всего, бэнд "Данные" не подключен к источнику данных.
    Да, действительно, не был подключен источник данных, спасибо!
    AlexTZ написал: »
    Попробуйте на последней версии FastReport.Net. Возможно, проблема решится.
    На последней версии к сожалению то же самое....
  • отредактировано 13:57
    Проверил еще раз. Можете привести стек ошибки?
  • отредактировано 13:57
    AlexTZ написал: »
    Проверил еще раз. Можете привести стек ошибки?

    Трассировка стека:


    [NullReferenceException: В экземпляре объекта не задана ссылка на объект.]
    FastReport.Data.Dictionary.kTwjGt3xr(IEnumerable , String , Int32 , Boolean ) +61
    FastReport.Report.QdI6CMhwL(IEnumerable , String ) +179
    FastReport.Report.v3IDO4251(IEnumerable ) +48
    System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +31
    FastReport.Report.RegisterDataAsp(IDataSource data, String name) +138
    FastReport.Web.WebReport.SfGmmVjnE(Report ) +283
    FastReport.Web.WebReport.MRxc0rGHM() +497
    FastReport.Web.WebReport.OnLoad(EventArgs e) +109
    System.Web.UI.Control.LoadRecursive() +50
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
  • отредактировано 13:57
    Очевидно, ошибка как-то зависит от самой процедуры. На простой процедуре у меня работает нормально:
    PROCEDURE dbo.StoredProcedure1 
        
        (
        @parameter1 varchar
        )
        
    AS
        
    select * from DVDs
    where Title = @parameter1
        
    RETURN
    

    Не могли бы Вы прислать мне проект, демонстрирующий ошибку? tz@fast-report.com
  • отредактировано 13:57
    Excitant написал: »
    Доброго всем дня!

    Есть процедура на MS SQL, возвращает Select...

    Вставляю её в SqlDataSource, в гриде возвращаемый ею курсор видно нормально. Если же добавляю этот SqlDataSource в DataSources WebReport'a при создании отчёта выдаётся ошибка:
    "
    Сведения об исключении: System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.

    Ошибка источника:
    "
    Подскажите кто сталкивался, не могу я чтоли использовать такой SqlDataSource в FastReport? Или как это побороть?

    Проблема оказывается в следующем, в процедуре есть параметр, который по идее может быть нулловым, но если с SqlDataSource значение параметра по умолчанию мы не указываем, то как раз и возникает эта ошибка. Если же я передам туда что угодно (параметр varchar(60)), ошибки не возникает. Получается если ничего не указано в качестве значения по умолчания, null туда не подставляется!? Надеюсь понятно объяснил ситуацию...
  • отредактировано 13:57
    Да, если не указать значение параметра, то ошибка воспроизводится. Добавлю соответствующую проверку в следующем билде.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.