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

Работа с wizard: не вижу данных в режиме preview.

Добавлено: 15 окт 2006, 22:42
Evgeny
Добрый день,

я пытаюсь создать отчет и показать его пользователю в режиме design таким образом:

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

   StiReport report = new StiReport();
            Database db = DbManager.CreateDatabase();
            DbCommand dbCommand = db.GetSqlStringCommand("SELECT * FROM vw_AssociatesReport");

            DataSet dsAssociates = DbManager.ExecuteDataSet(dbCommand, null);

            report.RegData("Associates", dsAssociates);
            report.Dictionary.Synchronize();

            //create report with a wizard
            Stimulsoft.Report.Design.Wizards.StiStandardWizardService wizard =
                new Stimulsoft.Report.Design.Wizards.StiStandardWizardService();

            StiReport newReport = wizard.CreateReport(report);
            if (newReport != null) newReport.Design();
В режиме design все выглядит нормально, поля правильно привязаны к данным в таблице. Но при переключении отчета в режим preview я вижу только заголовок 'Report" и пустую страницу.

Однако, если я загружаю отчет из mrt файла и привязываю данные "вручную", то в режиме design все выглядит примерно так же, однако в режиме "preview" я могу увидеть отчет, содержащий все данные из моего view.

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

   StiReport report = new StiReport();
            Database db = DbManager.CreateDatabase();
            DbCommand dbCommand = db.GetSqlStringCommand("SELECT * FROM vw_AssociatesReport");

            DataSet dsAssociates = DbManager.ExecuteDataSet(dbCommand, null);

            report.RegData("Associates", dsAssociates);
            report.Dictionary.Synchronize();
            StiDataSource dataSource = report.Dictionary.DataSources[0];

            report.Load("..\\..\\AssociatesReport.mrt");

            //assign fields in the report to columns from the data
            StiDataBand dataBand = new StiDataBand();
            StiText associateName = new StiText();
		...    //other fields

            foreach (StiComponent component in report.Pages[0].Components)
            {
                switch (component.Name)
                {
                    case "DataBandAssociates":
                        dataBand = (StiDataBand)component;
                        dataBand.DataSourceName = dataSource.Name;
                        break;
                    default:
                        break;
                }
            }

            foreach (StiComponent component in dataBand.Components)
            {
                switch (component.Name)
                {
                    case "txtName":
                        associateName = (StiText)component;
                        associateName.Text = dataSource.Columns["AssociateName"].ToString();
                        associateName.Text.Value = "{" + dataSource.Name + ".AssociateName}";
                        break;
			
		...    //other fields

                    default:
                        break;
                }
            }
            report.Design();
В чем моя ошибка при работе с wizard?

Работа с wizard: не вижу данных в режиме preview.

Добавлено: 15 окт 2006, 23:58
Evgeny
Вроде разобрался - вылечилось добавлением
StiReport report = new StiReport();
Database db = DbManager.CreateDatabase();
DbCommand dbCommand = db.GetSqlStringCommand("SELECT * FROM vw_AssociatesReport");

DataSet dsAssociates = DbManager.ExecuteDataSet(dbCommand, null);

report.RegData("Associates", dsAssociates);
report.Dictionary.Synchronize();

//create report with a wizard
Stimulsoft.Report.Design.Wizards.StiStandardWizardService wizard =
new Stimulsoft.Report.Design.Wizards.StiStandardWizardService();

StiReport newReport = wizard.CreateReport(report);

newReport.RegData("Associates", dsAssociates);
newReport.Dictionary.Synchronize();

if (newReport != null) newReport.Design();
Это правильно или можно ещё проще?

Работа с wizard: не вижу данных в режиме preview.

Добавлено: 16 окт 2006, 19:26
Vital
Все верно. Можно использовать такой код:

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

newReport.RegData(report.Dictioanry.DataStore;
newReport.Dictionary.Synchronize();