Как наследовать отчёт из кода?

Question: Как наследовать отчёт из кода?

Answer:

  1. Создайте новый отчёт:
Report report = new Report();
 
  1. Добавьте событие CustomLoadEventHandler для загрузки базового отчёта:
report.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport);
 
  1. Загрузите наследуемый отчёт:
report.Load("InheritReport.frx");
 
  1. Удалите CustomLoadEventHandler:
report.LoadBaseReport -= new CustomLoadEventHandler(FReport_LoadBaseReport);
 
  1. Теперь Вы можете показать отчёт или открыть его в дизайнере. Он будет содержать как тот, что наследуется, так и тот, который наследует базовый отчёт:
report.Show();
 

Также нужно создать событие для загрузки базового отчёта:

private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e) { // e.FileName contains the name of base report. It may be the file name, or an ID in the database, // it depends on how you load the main report e.Report.Load("C:\\Users\\InheritReport\\bin\\Debug\\Title2.frx"); }
 

И полный код:

public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Report report = new Report(); report.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport); report.Load("InheritReport.frx"); report.LoadBaseReport -= new CustomLoadEventHandler(FReport_LoadBaseReport); report.Show(); } private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e) { // e.FileName contains the name of base report. It may be the file name, or an ID in the database, // it depends on how you load the main report e.Report.Load("C:\\Users\\InheritReport\\bin\\Debug\\Title2.frx"); } }
 

Если Вы хотите загрузить отчёт из базы данных, замените метод Load() на LoadFromString().