Гость
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / FastReport .Net: ERROR: Object reference not set to an instance of an object. / 2 сообщений из 2, страница 1 из 1
10.01.2014, 12:37
    #38521739
Anton Fateev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport .Net: ERROR: Object reference not set to an instance of an object.
Доброго времени суток, коллеги.
Столкнулся со странным поведением FastReport .Net

Есть Aspx проект. Подключил к нему длл-ки фастрепорта и создал саму страницу.

ReportView.aspx:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ReportView.aspx.cs" Inherits="FastReports.ReportView" EnableSessionState="false" %>
<%@ Register assembly="FastReport.Web" namespace="FastReport.Web" tagprefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head runat="server">
    <title></title>
</head>

<body>
    <form id="form1" runat="server" OnLoad="ProcessOnLoad">
    <div id="main">
            <cc1:WebReport ID="WebReport1" runat="server" BackColor="White" 
            BorderWidth="0px" Height="100%" 
            onstartreport="WebReportStartReport" Width="100%" BorderColor="White" />
    </div>
    </form>
</body>
</html>



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

Это всё хорошо и даже работает.

Но вот незадача, если в сам отчёт добавить или таблицу, или код для обработки, то моментально ловим ошибку в компоненте FastReport.WebReport следующего содержания:
ERROR: Object reference not set to an instance of an object.
at FastReport.Code.AssemblyDescriptor.InitField(String name, Object c) at FastReport.Code.AssemblyDescriptor.InitFields() at FastReport.Code.AssemblyDescriptor.InternalCompile() at FastReport.Report.PreparePhase1() at FastReport.Web.Handlers.WebExport.GetReportHTML(StringBuilder sb, WebReport webReport, HttpContext context) at FastReport.Web.Handlers.WebExport.SendReport(HttpContext context)

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

Заранее спасибо за помощь.

В техподдержку писал, но они что-то пока молчат.
...
Рейтинг: 0 / 0
15.01.2014, 15:58
    #38527156
Anton Fateev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport .Net: ERROR: Object reference not set to an instance of an object.
Что-то тех. поддержку fastreport'а не слышно и не видно. У них там видимо "всесезонная" спячка. Так мне никто и не ответил на поставленный вопрос.
Что ж, не беда.
Я нашёл причину такого поведения и напишу её здесь.
Дело в том, что у меня не стандартная ситуация и выборка данных происходит через ORM. Т.е. прямого доступа к БД отчёт не имеет. По этому я решил создавать отчёт вручную(базовые элементы и связь с источниками данных). Благо fastreport это позволяет.
Так вот, когда создаёшь из кода какие-либо элементы для отчёта, то их нужно именовать. Для этого существует специальный метод в библиотеке fastreport'а - CreateUniqueName().
Пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
...
var report = new Report();

var page = new ReportPage();

page.CreateUniqueName();

page.TopMargin = 10.0f;
page.LeftMargin = 10.0f;
page.RightMargin = 10.0f;
page.BottomMargin = 10.0f;

page.ReportTitle = new ReportTitleBand();

page.ReportTitle.CreateUniqueName();

page.ReportTitle.Height = 2.5f * Units.Centimeters;
...



И вот вся загвоздка именно в этой функции. Она, то ли не работает, то ли работает, но как-то не так. В общем она не именует элементы и оставляет их свойство Name незаполненным. И это не критично пока вы не начинаете использовать таблицы или внутренний язык fastreport'а.
Приходится заполнять это свойство вручную. И тут кроется ещё одна засада. Никогда не используйте пробел в именах элементов. Да и пожалуй спец.знаки тоже не надо. Тут я не уверен. Не проверял. Иначе вылетит точно такая же ошибка.

За сим - всё. Надеюсь кому-нибудь пригодится.
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / FastReport .Net: ERROR: Object reference not set to an instance of an object. / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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