vitvikt Ответов: 2

Динамическая замена источника данных в отчете FastReport на языке Си #


Как динамически изменить источник данных в отчете FastReport с таблицами из базы данных в набор данных?
Приведен пример динамического создания отчета с нуля. Но это, естественно, требует предписания всех полей.
Проще визуально создать файл отчета с источником из базы данных. А затем измените источник на набор данных.
Попробовать это:
Report report = new Report();
	report.Load(ss);							//I load a file of the report
        report.Dictionary.Clear();						//I delete an old source of data
        report.Dictionary.RegisterData(ds.Tables[nTab], имя таблицы, true); 	//I register new
        report.RegisterData(ds);
        // add report page
        ReportPage page = new ReportPage();
        report.Pages.Add(page);
        page.CreateUniqueName();

        // create title band
        DataBand dataBand = new DataBand();
        page.Bands.Clear();
        page.Bands.Add(dataBand);
        dataBand.CreateUniqueName();							
        dataBand.DataSource = report.GetDataSource(имя таблицы);		//I set the table for
 
        dataBand.Height = Units.Centimeters * 0.5f;
        report.Show();



Отображает только одну строку.

CPallini

Пожалуйста, позаботьтесь о переводе вашего текста на английский язык.

m@dhu

В переводе на английский язык.

CPallini

Очень хорошо (жаль, что я не могу проголосовать за вас!). Не могли бы Вы перевести и название (я могу только догадываться...).

m@dhu

- Спасибо, сэр. Обновленный.

[no name]

Если вы очистите весь словарь...вы потеряли все данные из отчета (итоги, параметры, функции...).

2 Ответов

Рейтинг:
2

Christian Graus

Если FastReport-это библиотека, вам нужно спросить их, как ее использовать.


Рейтинг:
2

Member 2785104

Полоса данных не подключена к источнику данных. Добавьте последнюю строку для подключения полосы данных к источнику данных:

report.Load(ss);							
report.Dictionary.Clear();						
report.Dictionary.RegisterData(ds.Tables[nTab], имя таблицы, true); 	
report.RegisterData(ds);
((DataBand)report.FindObject("Data1")).DataSource = report.Dictionary.DataSources[0];


"Data1" - это имя диапазона данных вашего отчета.