Отчеты без соединения с БД

Обсуждение Stimulsoft Reports.NET
Ответить
Gost
Сообщения: 4
Зарегистрирован: 30 янв 2007, 11:18

Отчеты без соединения с БД

Сообщение Gost »

Здравствуйте! Ознакомился в Вашей системой, пока нравится. Только пока не понял одну вещь. Возможно ли создавать отчеты, не привязываясь к БД?
То есть есть класс, который передает в конструктор отчета datatable. Как отобразить эту таблицу в отчете? Возможно ли это?

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

Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Отчеты без соединения с БД

Сообщение Edward »

Gost писал(а):Здравствуйте! Ознакомился в Вашей системой, пока нравится. Только пока не понял одну вещь. Возможно ли создавать отчеты, не привязываясь к БД?
То есть есть класс, который передает в конструктор отчета datatable. Как отобразить эту таблицу в отчете? Возможно ли это?
Да, это возможно.
Поддерживаются все объекты ADO.Net из кода.

Для этого используйте метод отчета RegData.

Код: Выделить всё

report.RegData(string name, DataTable dataTable);
name - имя таблицы в Дизайнере.
dataTable - таблица из класса Вашего приложения.

После этого в Дизайнере StimulReport.Net Вы получаете доступ к dataTable из Вашего класса.

Спасибо.

Gost
Сообщения: 4
Зарегистрирован: 30 янв 2007, 11:18

Отчеты без соединения с БД

Сообщение Gost »

Попробовал. DataTable не видно из дизайнера StimulReport.
Вот такой код:

Код: Выделить всё

namespace testreport
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        static public DataTable GetTable()// для примера
        {
            DataTable dt = new DataTable();

            DataColumn dc1 = new DataColumn("#");
            dt.Columns.Add(dc1);
            DataColumn dc2 = new DataColumn("Name");
            dt.Columns.Add(dc2);

            for (int i = 0; i < 5; i++)
            {
                dt.Rows.Add("1","Peter");
                dt.Rows.Add("2","Alex");
                dt.Rows.Add("3","Jack");
            }

            return dt;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable dt = GetTable();
            stiReport1.RegData("exams", dt); // может, регистрировать надо в файле отчета?
            stiReport1.Compile();
            stiReport1.Show(this);
        }
    }
}
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Отчеты без соединения с БД

Сообщение Edward »

Ваш код абсолютно верный.
Если Вы дадите таблице название (к примеру MyTable)

Код: Выделить всё

DataTable dt = new DataTable("MyTable");
и замените

Код: Выделить всё

stiReport1.Show(this);
на

Код: Выделить всё

stiReport1.Design();
то

Вы увидите в runtime (!) в Дизайнере на закладке "Dictionary" DataSource, который и будет состоять из Вашей таблицы.

Спасибо.
Gost
Сообщения: 4
Зарегистрирован: 30 янв 2007, 11:18

Отчеты без соединения с БД

Сообщение Gost »

Спасибо, теперь понятно.

Еще вопрос возник:
на форме есть контрол StiPreviewControl. Как загрузить в него динамически репорт?

Делаю так:
preview.Report = myReport;

Но при этом он не отображается в preview.
Gost
Сообщения: 4
Зарегистрирован: 30 янв 2007, 11:18

Отчеты без соединения с БД

Сообщение Gost »

Все, разобрался.
Спасибо за помощь!
Небольшое пожелание: развивайте справку к своим компонентам, иначе из-за каждой мелочи приходится мучить Вас.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Отчеты без соединения с БД

Сообщение Edward »

Мы сейчас интенсивно занимаемся созданием новой справочной системы по StimulReport.Net.

Спасибо.
Ответить