Вопросы по Fastreport.net

2456

Комментарии

  • отредактировано 18:59
    Небольшой вопрос по TreeView. Элементы ListView, ComboBox поддерживают в инспекторе выбор колонок. В TreeView нечто подобное планируется?
  • отредактировано 18:59
    Каких колонок, не понял? Если имеется в виду DataColumn, то ListViewControl и TreeViewControl их не поддерживают. Эти контролы надо заполнять из кода.
  • отредактировано 18:59
    AlexTZ написал: »
    Каких колонок, не понял? Если имеется в виду DataColumn, то ListViewControl и TreeViewControl их не поддерживают. Эти контролы надо заполнять из кода.
    Спасибо понятно
  • Dracula_DISDracula_DIS Москва
    отредактировано September 2008
    Можно ли каким ни будь способом вывести таблицу внутри таблицы? при этом связать ее данные с данными выводящимися в первой таблице.
    Как пример, есть таблица с перечислением продуктов и связанная таблица с поставщиками этого продукта.
    Для каждого продукта вывести в одной строке его название и перечислить поставщиков с логотипами (картинка)

    Вопрос уже разрешился.
    Для тех кто будет интересоваться как:
    Рисуем таблицу из двух колонок и двух строк, обеденяем ячейки в первой колонке, туда заносим данные о продукте, во второй колонке во второй строке данные о поставщике.
    при выводе продукта делаем PrintRow(0); при выводе постащиков PrintRow(1);
  • отредактировано 18:59
    Внутрь ячейки таблицы можно положить любой объект, кроме
    - таблицы
    - матрицы
    - вложенного отчета.
  • отредактировано 18:59
    написал: »
    С загрузкой понятною. Хотелось бы при интеграции дизайнера и выборе элемента меню Save перехватывать событие и выполнять сохранение. Пока не нашёл.
    Пока никак невозможно?
  • отредактировано 18:59
    Уже возможно. Скачайте свежий билд и справку к нему. Смотрите справку по методам FastReport.Design.Designer.SetCustomOpenDialog, SetCustomSaveDialog.
  • отредактировано 18:59
    Поправляю сам себя: в последней сборке цеплять свои обработчики на save/load нужно иначе. Используйте новый компонент EnvironmentSettings (он есть в Visual Studio Toolbox) и его события - CustomOpenDialog, CustomSaveDialog, CustomOpenReport, CustomSaveReport. Примеры использования есть в справке.
  • отредактировано October 2008
    У меня есть вопрос, я недавно скачал ваш генератор отчётов под .NET демку последнюю версию!!!Почему возникает ошибка при использовании стандартного DataSet. Для ясности напишу подробнее: в общем беру стандартный компонент DataSet, создаю в нём таблицу со столбцами потом, кидаю компонент fastreport, в настройках указывают источник DataSet и нужную мне таблицу, открывается дизайнер, всё нормально таблица видна, я кидаю столбцы на Bend Dаta, делаю просмотр вроде как всё нормально, потом компилирую программу всё без ошибок, но когда требуется показать отчёт возникает ошибка такого характера: "В экземпляре объекта не задана ссылка на объект" в этом месте где вызываю report1.Show()!!!!((((( Пожалуйста поясните как из стандартного DataSet вывести данные очень нужно.....буду очень признателен
  • отредактировано 18:59
    Здравствуйте,

    Я делаю так, и у меня работает:
    - создаю датасет в студийном мастере;
    - на форму кладу DataSet, при этом студия предлагает подключить его к типизированному датасету, созданному мастером;
    - кладу Report, выбираю Design Report. В окне подключения выбираю подключение к таблице датасета;
    - делаю дизайн отчета. Уже в дизайнере есть возможность запустить отчет (FastReport заполняет типизированный датасет автоматически с помощью reflection);
    - чтобы показать отчет в runtime, пишу обработчик кнопки ОК:
    using WindowsApplication1.NWINDDataSetTableAdapters;
    
        private void button1_Click(object sender, EventArgs e)
        {
          // заполняю таблицу типизированного датасета
          CategoriesTableAdapter adapter = new CategoriesTableAdapter();
          adapter.Fill(nwindDataSet1.Categories);
          // показываю отчет
          report1.Show();
        }
    

  • отредактировано 18:59
    Спасибо, всё уже разобрался работает будем продолжать изучать....
  • Dracula_DISDracula_DIS Москва
    отредактировано 18:59
    Как из скрипта сказать таблице чтоб она начала новую страницу?
  • отредактировано 18:59
    Ответ простой - никак. Таблица (а также матрица) разбивается на страницы автоматически, этим процессом управлять нельзя.
  • Dracula_DISDracula_DIS Москва
    отредактировано 18:59
    Всеже хотелось иметь этот инструмент. При печати таблиц с использованием ДатаБэнда все получается отлично до тех пор пока не пытаемя печатать таблицу на двух листах по ширине. Дата бенд тут не подходит т.к. нет корректной разбивки на две страницы. а если юзать SplitBigPages то невозможно отобразить номер страницы. Поэтому юзаем таблицу. но нужна возможнасть а-ля Start New Page у DataBend....
  • отредактировано 18:59
    Попробую добавить.
  • отредактировано 18:59
    Добавил метод TableObject.PageBreak(). Будет доступен в ночной сборке. Пример использования в отчете Table/Handle Page Breaks.
  • отредактировано 18:59
    Dracula_DIS написал: »
    При печати таблиц с использованием ДатаБэнда все получается отлично до тех пор пока не пытаемя печатать таблицу на двух листах по ширине. Дата бенд тут не подходит т.к. нет корректной разбивки на две страницы. а если юзать SplitBigPages то невозможно отобразить номер страницы. Поэтому юзаем таблицу.

    Таблицу используете только для этого? Не очень удобно... Могу сделать режим, при котором можно обойтись дата-бэндом.
  • отредактировано 18:59
    Здравствуйте,

    Можно в демке пример (или в приват) как создать свой Connection (на C#) по аналогии с MsSqlDataConnection.

    С уважением, Andy.
  • отредактировано 18:59
    Здравствуйте,

    Вас интересует создание собственных типов connection? Эта часть документации еще не готова; я постараюсь описать процесс максимально подробно и добавлю в class reference manual.
    К какой БД Вы хотите подключаться?
  • отредактировано 18:59
    AlexTZ написал: »
    К какой БД Вы хотите подключаться?

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

    С уважением, Andy.
  • отредактировано October 2008
    Боюсь, такое сделать проблематично. Фастрепортовский Connection (класс DataConnectionBase) сильно завязан на использование DataSet. Все, что можно менять - собственно объект DbConnection, который подключается к базе, и DbDataAdapter, который возвращает результат запроса (заполняет им таблицу DataSet).
  • отредактировано 18:59
    AlexTZ написал: »
    ... Все, что можно менять - собственно объект DbConnection ...

    Я так понимаю, что фастрепортовский Connection создает соответствующий DbConnection и DataAdapter и использует их.
    Если так, то нужно писать свой DbConnection и DataAdapter и соответствующий фастрепортовский Connection.
  • отредактировано 18:59
    Я могу несколько упростить задачу, чтобы можно было обойтись без подключений и адаптеров. Но требование использовать объект DataTable для данных - обязательно.
  • отредактировано 18:59
    AlexTZ написал: »
    Я могу несколько упростить задачу, чтобы можно было обойтись без подключений и адаптеров. Но требование использовать объект DataTable для данных - обязательно.

    DataTable нам не мешает (пока :) ).
    Можно кинуть кусок кода, хотя бы схематически, как надо будет писать свой код без подключений и адаптеров.

    P.S.
    А когда будет упрощена задача?
  • отредактировано 18:59
    Сегодня в полночь будет выложен свежий билд. Я сейчас набросаю кусочек документации с примерами.
  • Dracula_DISDracula_DIS Москва
    отредактировано 18:59
    AlexTZ написал: »
    Таблицу используете только для этого? Не очень удобно... Могу сделать режим, при котором можно обойтись дата-бэндом.

    Да таблица только для этого
  • отредактировано 18:59
    Скоро не обещаю - придется повозиться.
  • Сергей ЛукьяновСергей Лукьянов Санкт-Петербург
    отредактировано 18:59
    Здравствуйте!

    У меня стоит задача организовать формирование пакета документов в одном репорте, т.е. сформировать одну/несколько страниц одного отчета, следующие страницы - другой отчет, а за ними, если это необходимо, несколько страницы первого отчета (с другими данными) и т.д.

    Таким образом я хочу иметь возможность в один репорт набить разные шаблоны, а потом, каким-то образом управлять, какие шаблоны в каком порядке должны формироваться в отчеты и выводиться на печать.

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

    Для реализации задуманного подходят сабрепорты, но есть одна загвостка - я не могу репорту сказать: "Сейчас выводи subreport1, теперь subreport2, а теперь снова выведи мне subreport1". Или могу???

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

  • отредактировано October 2008
    Здравствуйте,

    В настоящий момент сделать это можно, используя разные отчеты и управляя порядком их печати программно. Например, так:

    report1.Load("отчет1.frx");
    report1.Prepare();
    report1.Load("отчет2.frx");
    report1.Prepare(true);
    report1.Load("отчет1.frx");
    report1.Prepare(true);
    report1.ShowPrepared();

    Этот код построит первый отчет, добавит к нему второй, потом опять первый.

    В ближайшем будущем появятся события ManualBuild у страницы отчета и самого отчета - можно будет управлять этим процессом в скрипте отчета.
  • отредактировано October 2008
    AlexTZ написал: »
    Поправляю сам себя: в последней сборке цеплять свои обработчики на save/load нужно иначе. Используйте новый компонент EnvironmentSettings (он есть в Visual Studio Toolbox) и его события - CustomOpenDialog, CustomSaveDialog, CustomOpenReport, CustomSaveReport. Примеры использования есть в справке.

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