Страница 1 из 1

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

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

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

Спасибо.

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

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

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

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

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

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

Спасибо.


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

Добавлено: 30 янв 2007, 12:03
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);
        }
    }
}

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

Добавлено: 30 янв 2007, 12:49
Edward
Ваш код абсолютно верный.
Если Вы дадите таблице название (к примеру MyTable)

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

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

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

stiReport1.Show(this);
на

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

stiReport1.Design();
то

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

Спасибо.

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

Добавлено: 30 янв 2007, 18:28
Gost
Спасибо, теперь понятно.

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

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

Но при этом он не отображается в preview.

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

Добавлено: 30 янв 2007, 19:30
Gost
Все, разобрался.
Спасибо за помощь!
Небольшое пожелание: развивайте справку к своим компонентам, иначе из-за каждой мелочи приходится мучить Вас.

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

Добавлено: 31 янв 2007, 04:29
Edward
Мы сейчас интенсивно занимаемся созданием новой справочной системы по StimulReport.Net.

Спасибо.