C#
небольшой вопрос
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
Просмотров дофига, а толку нифига. :(
Немного расскажу о проблеме:
Можно создать коннект к БД и отдать его, в качестве источника данных, генератору отчётов.
Как быть, если DataSet я делаю руками?
Немного расскажу о проблеме:
Можно создать коннект к БД и отдать его, в качестве источника данных, генератору отчётов.
Как быть, если DataSet я делаю руками?
- John Prick
- Сообщения: 9237
- Зарегистрирован: 12 янв 2006, 19:30
- Благодарил (а): 406 раз
- Поблагодарили: 305 раз
- Контактная информация:
Re: C#
Я только сам язык знаю в пределах начального уровня. Все эти базы данных и генераторы отчётов -
-
- моБильщик
- Сообщения: 6899
- Зарегистрирован: 13 мар 2007, 16:09
- Настоящее имя: Сережа
- Откуда: йух Смоленска
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: C#
Я fast report использовал, и было это в 2013 году, так что сорри
Fast Report сам мог dataset делать внутри отчета, там очень удобно, можно код писать на до-диез
Fast Report сам мог dataset делать внутри отчета, там очень удобно, можно код писать на до-диез
https://www.drive2.ru/users/tequila7000
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
Я крякнутый FastReport найти не могу. :([TEQUILA] писал(а):Я fast report использовал, и было это в 2013 году, так что сорри
Fast Report сам мог dataset делать внутри отчета, там очень удобно, можно код писать на до-диез
На Дельфях его использовал, очень хороший генератор отчётов.
Re: C#
Ну например так:
Код: Выделить всё
var ds = new DataSet();
//тут заполняешь дата сет
DataTable dTable = ds.Tables[0];
var report = new ReportViewer();
var rds = new ReportDataSource("dataSetTable", dTable);
report.LocalReport.DataSources.Add(rds);
report.DataBind();
report.LocalReport.Refresh();
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
Loncaster,
Имя шаблона назначаю в ReportViewer, потом делаю вот так
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("dataSetTable", ds0.Tables["row"]));
Явной ругани нет, всё запускается, но пока не могу понять.
В rdlc создал текстовое поле и нужно выводить туда ds0.Tables["row"].Rows[dataGridView0.CurrentCell.RowIndex]["field4"]
не знаю как.
И ещё, в отчёте будут подчинённые ds1-ds7.
Их нужно выводить в отчёт отдельными таблицами.
Это ведь через tablix? И как до него достучаться?
Имя шаблона назначаю в ReportViewer, потом делаю вот так
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("dataSetTable", ds0.Tables["row"]));
Явной ругани нет, всё запускается, но пока не могу понять.
В rdlc создал текстовое поле и нужно выводить туда ds0.Tables["row"].Rows[dataGridView0.CurrentCell.RowIndex]["field4"]
не знаю как.
И ещё, в отчёте будут подчинённые ds1-ds7.
Их нужно выводить в отчёт отдельными таблицами.
Это ведь через tablix? И как до него достучаться?
Re: C#
Уже плохо помню, но вроде в таком случае значения полям присваиваются через параметры, типа:
Погугли, на все эти вопросы ответы точно есть в интернете. Я уже лет 5 с отчетами не работал.
Код: Выделить всё
var rParam = new ReportParameter("param1", dt.Rows[0]["Field"]);
report.LocalReport.SetParameters(rParam);
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
Loncaster, Гуглю.
В том-то и дело, что везде написано, что нельзя из кода достучаться до компонентов отчёта.
А мне бы в идеале d0-d7 DataSet.
Передавать их в отчёт как DataSource, а в отчёт отображать.
Т.к. элемент отчёта что-то типа карточки, т.е. в d0 основная информация: ФИО, возраст и т.п.
d1-d7 это подчинённые DataSet, в которых таблицы для каждого ФИО.
В том-то и дело, что везде написано, что нельзя из кода достучаться до компонентов отчёта.
А мне бы в идеале d0-d7 DataSet.
Передавать их в отчёт как DataSource, а в отчёт отображать.
Т.к. элемент отчёта что-то типа карточки, т.е. в d0 основная информация: ФИО, возраст и т.п.
d1-d7 это подчинённые DataSet, в которых таблицы для каждого ФИО.
Re: C#
Ну вот как я выше написал, задаешь параметр в коде, а в компоненте отчета прописываешь его имя (в свойствах должно быть или через мастер).
А если быть точнее, вот как: http://www.codeproject.com/Questions/60 ... ReportView
А если быть точнее, вот как: http://www.codeproject.com/Questions/60 ... ReportView
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
Loncaster, Только это реально для конечного числа параметров.
А у меня в один отчёт будет выводиться, условно, ФИО, а чуть ниже 7 таблиц с разным (фиксированным у каждой таблицы количеством колонок) и разным, у всех, количеством строк.
Вот эти таблицы непонятно как передать. :)
В отчёте можно создать Набор данных, но я не вижу там мои DataSet, которые создал в Form1.
А у меня в один отчёт будет выводиться, условно, ФИО, а чуть ниже 7 таблиц с разным (фиксированным у каждой таблицы количеством колонок) и разным, у всех, количеством строк.
Вот эти таблицы непонятно как передать. :)
В отчёте можно создать Набор данных, но я не вижу там мои DataSet, которые создал в Form1.
Re: C#
Создай DataSet в отчете через мастер, а обращайся (изменяй) к нему в коде.TheBest писал(а):Loncaster, Только это реально для конечного числа параметров.
А у меня в один отчёт будет выводиться, условно, ФИО, а чуть ниже 7 таблиц с разным (фиксированным у каждой таблицы количеством колонок) и разным, у всех, количеством строк.
Вот эти таблицы непонятно как передать. :)
В отчёте можно создать Набор данных, но я не вижу там мои DataSet, которые создал в Form1.
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
Loncaster, В отчёте можно создать набор данных на основании источника данных.
В качестве источника данных он видит Form1, а там поля AcceptButton, BackColor и прочие малопригодные.
Мои ds0-ds7, созданные в Form1 он не видит.
В качестве источника данных он видит Form1, а там поля AcceptButton, BackColor и прочие малопригодные.
Мои ds0-ds7, созданные в Form1 он не видит.
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
Создал DataSet1 в проекте. Добавил в него DataTable1 и поля.
Поля этого DataSet можно использовать в отчёте.
Но когда перед вызовом отчёта я делаю
var rds = new DataSet1();
rds = ds0.Copy();
то обламываюсь с Не удается неявно преобразовать тип "System.Data.DataSet" в "E_print.DataSet1". Существует явное преобразование (возможно, пропущено приведение типов).
ds0 создавал как new DataSet()
Поля этого DataSet можно использовать в отчёте.
Но когда перед вызовом отчёта я делаю
var rds = new DataSet1();
rds = ds0.Copy();
то обламываюсь с Не удается неявно преобразовать тип "System.Data.DataSet" в "E_print.DataSet1". Существует явное преобразование (возможно, пропущено приведение типов).
ds0 создавал как new DataSet()
Re: C#
Написана ахинея.TheBest писал(а):var rds = new DataSet1();
Для замены объекта DataSet нужно написать так:
Код: Выделить всё
DataSet1 = ds0.Copy();
Re: C#
Тогда я хз что это за тип такой E_print.DataSet1 - даже не гуглится. Я думал ты создал объект с именем DataSet1 типа System.Data.DataSet.
Ты как его создал? В мастере (в дизайнере) или в коде ручками? Если в дизайнере то ищи его имя там же и пробуй явное преобразование, например если его имя dataSet1, то будет так: dataSet1 = (DataSet1)ds0.Copy();
PS: без кода мало что понятно. Выкладывай хоть куски побольше или лучше скрины из студии.
Ты как его создал? В мастере (в дизайнере) или в коде ручками? Если в дизайнере то ищи его имя там же и пробуй явное преобразование, например если его имя dataSet1, то будет так: dataSet1 = (DataSet1)ds0.Copy();
PS: без кода мало что понятно. Выкладывай хоть куски побольше или лучше скрины из студии.
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
Loncaster, R_print - имя проекта.
DataSet1 создавал в мастере. Данные, Набор данных. Тип System.Data.DataSet.
ds0 создавал в коде.
public partial class Form1 : Form
{
DataSet ds0 = new DataSet();
DataSet1 создавал в мастере. Данные, Набор данных. Тип System.Data.DataSet.
ds0 создавал в коде.
public partial class Form1 : Form
{
DataSet ds0 = new DataSet();
- TheBest
- Сообщения: 13222
- Зарегистрирован: 08 фев 2005, 14:36
- Благодарил (а): 11 раз
- Поблагодарили: 8 раз
Re: C#
DataSet1 создавал в мастере. Данные, Набор данных. Тип System.Data.DataSet.Loncaster писал(а):Хорошо, а что тогда у тебя в проекте за класс DataSet1?TheBest писал(а):DataSet1..Тип System.Data.DataSet.
В Обозревателе решений на проекте правой кнопкой мыши, Добавить, Создать элемент. Данные, Набор данных.
Re: C#
DataSet1 - ну если это имя переменной типа System.Data.DataSet, то не должно быть таких ошибок, как ты выше писал. Ты либо создал новый тип (класс DataSet1), либо что-то не так говоришь. Советую почитать книги для начинающих, например начать с Троелсена Язык программирования C#. Без полного кода (*.cs, *designer.cs) я помочь не могу.