Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C# Создание отчетов, без DataSet, DataTable, Bindingsource 
:(
    Опции темы
BufO
Дата 26.5.2011, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.5.2011

Репутация: нет
Всего: нет



Итак вопрос: возможно ли создание отчета без DataSet, DataTable, Bindingsource ?
Возможно ли отчет сделать просто по заполненному DataGridView ? Если "да", то как ? ReportView настойчиво требует источник данных.
СУБД - встраиваемая Firebird.
PM MAIL   Вверх
jonie
Дата 26.5.2011, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



BufO, ну "источник" это не обязательно DataTable... хоть List<T> туда пихайте. Пример: http://aspalliance.com/762_Binding_the_Rep...ric_Collections

"Заполненый DataGridView" очевидно, заполняется "чем-то". Вот это "что-то" и пихайте как источник данных


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
BufO
Дата 27.5.2011, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.5.2011

Репутация: нет
Всего: нет



Цитата(jonie)
BufO, ну "источник" это не обязательно DataTable... хоть List<T> туда пихайте. Пример: http://aspalliance.com/762_Binding_the_Rep...ric_Collections

Спасибо за пример...только не совсем разобрался  smile 
А для List<T> класс писать придется.  И как можно запихнуть его в источник данных. 
Цитата(jonie)
Вот это "что-то" и пихайте как источник данных

Это "что-то" есть класс "FbConnection" и заполнение грида происходит следующим образом:
Код

            fb.CommandText = "select * и т.д.";
            using (FbDataReader reader = fb.ExecuteReader())
            {
                while (reader.Read())
                {
                   // заполнение датагрида
                }

            }

PM MAIL   Вверх
jonie
Дата 27.5.2011, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



Цитата

Код

 while (reader.Read())
                {
                   // заполнение датагрида
                }

вот вместо "заполнение грида" делайте так:
1) объявие класс, который будет является "элементов таблицы (строкой)"
Код

class MyRow
{
//перечислите тут "колонки", которые вам надо вытянуть в отчет из IDataReader-а
 public int Id {get;set;}
 public string Data {get;set;}
 public double OtherData {get;set;}
....
}


2) в коде где у вас комментарий заполняйте НЕ грид, а List<MyRow> и его же устанавливайте как источник данных для DataGridView:
Код

List<MyRow> table = new List<MyRow>();
while(reader.Read()) {
 MyRow row = new MyRow() { Id = (int)reader["id"], Data = (string)reader["data"], OtherData = (double)reader["other_data_field"] };

 table.Add(row);
}

grid.DataSource = table; //отображаем в гриде. Предварительно в гриде стоит настроить колонки, согласно полям в MyRow классе


ну и далее вам для отчета можно использовать тот же набор данных: 
Код

var dataForReport = grid.DataSource as List<MyRow>;


типа того...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
BufO
Дата 28.5.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.5.2011

Репутация: нет
Всего: нет



Премного благодарен! Спасибо большое!  smile  
А есть ли какой-нибудь готовый классец/dll-ка чтоб этот источник или на крайняк List<t> в Excel экспортировать ? Прогуглив я не нашел ничего подходящего.
PM MAIL   Вверх
jonie
Дата 28.5.2011, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



BufO, экспортируйте в XML и его же откройте в экселе. XML оно и удобнее и универсальнее... 
если же нужны израты чисто экселевские начните гуглить про OpenXML SDK


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
BufO
Дата 28.5.2011, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.5.2011

Репутация: нет
Всего: нет



Цитата(jonie)
экспортируйте в XML и его же откройте в экселе. XML оно и удобнее и универсальнее...

Сериализация / дисериализация ?
Цитата(jonie)
если же нужны израты чисто экселевские начните гуглить про OpenXML SDK

неее, нужно просто данные вывести и все
PM MAIL   Вверх
VirusUZ
  Дата 22.6.2011, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 9.4.2010
Где: Узбекистан, Навои й обл.

Репутация: нет
Всего: -2



Код

select 'First name=' +t.name+ ' Last name=' +t.lname from table t
Код



--------------------
Virus
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.