вопрос по StiReport.GetReportFromAssembly

Обсуждение Stimulsoft Reports.NET
t0lik
Сообщения: 75
Зарегистрирован: 24 окт 2008, 12:35
Откуда: SPb

вопрос по StiReport.GetReportFromAssembly

Сообщение t0lik »

Jan писал(а):Здравствуйте,

Покажите пожалуйста код, который приводит к такому случаю.

Спасибо.

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

            var tempFile = new FileInfo(Path.GetTempFileName());
            tempFile.Delete();
            StiReport masterReport = new StiReport();
            PrinterSettings printSettings=null;
            foreach (PrintData data in printData)
            {
                StiReport subReport;
                if (File.Exists(tempFile.FullName))
                    subReport = StiReport.GetReportFromAssembly(tempFile.FullName, true);
                else
                {
                    subReport = new StiReport();
                    subReport.Load(data.fileName);
                    subReport.Compile(tempFile.FullName);
                }
                subReport.EngineVersion = StiEngineVersion.EngineV2;
                if (!String.IsNullOrEmpty(data.Title))
                    engine.ReportName = data.Title;
                if (data.printerSettings != null)
                {
                    masterReport.PrinterSettings.Collate = data.printerSettings.Collate;
                    masterReport.PrinterSettings.Copies = data.printerSettings.Copies;
                    masterReport.PrinterSettings.PrinterName = data.printerSettings.PrinterName;
                }
                printSettings = data.printerSettings;
                subReport.RegData(data.DataSetName, data.DataSetName, data.data);
                if (subReport.NeedsCompiling && !subReport.IsCompiled)
                    subReport.Compile();

                subReport.PrinterSettings.ShowDialog = false;

                masterReport.SubReports.Add(subReport);
            }
            if (String.IsNullOrEmpty(printerSettings.PrinterName))
                CopyPrinterSettings(masterReport.PrinterSettings, printerSettings);
            else
                CopyPrinterSettings(printerSettings, masterReport.PrinterSettings);
            masterReport.PrinterSettings.ShowDialog = false;
            masterReport.Render(false);
            if(printSettings == null)
                printSettings = new PrinterSettings();
            printSettings.DefaultPageSettings.PaperSource = printSettings.PaperSources[1];
            var oldPaperSize = StiPrintProvider.PaperSizeForUsing;
            StiPrintProvider.PaperSizeForUsing = printSettings.DefaultPageSettings.PaperSize;
            StiPrintProvider.SetPaperSource = false;
            masterReport.Print(printSettings);
            StiPrintProvider.PaperSizeForUsing = oldPaperSize;
            StiPrintProvider.SetPaperSource = true;
Andrew
Сообщения: 586
Зарегистрирован: 09 июн 2006, 12:22

вопрос по StiReport.GetReportFromAssembly

Сообщение Andrew »

Здравствуйте,

Код похоже правильный. Пришлите пожалуйста, sample project для анализа на support@stimulsoft.com

Спасибо.
t0lik
Сообщения: 75
Зарегистрирован: 24 окт 2008, 12:35
Откуда: SPb

вопрос по StiReport.GetReportFromAssembly

Сообщение t0lik »

Andrew писал(а):Код похоже правильный. Пришлите пожалуйста, sample project для анализа на support@stimulsoft.com
Отправил.
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

вопрос по StiReport.GetReportFromAssembly

Сообщение Ivan »

Здравствуйте.

Причина проблемы: по умолчанию отчет создается с единицами измерения дюйм или сантиметр (в зависимости от региональных настроек).
В вашем отчете указана единица измерения миллиметр.
При добавлении подотчетов в главный отчет единицы измерения должны автоматически пересчитываться.
Но первый подотчет компилируется в сборку, и для него конвертация не происходит.
Поэтому в вашем случае все размеры первого подотчета воспринимаются как в сантиметрах, т.е. в десять раз больше.
Соответственно для решения проблемы достаточно после создания главного отчета установить у него такую же единицу измерения, как и в подотчетах.

Для устранения проблемы вам достаточно добавить всего одну строку кода сразу после создания главного отчета:

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

     StiReport masterReport = new StiReport();
     masterReport.ReportUnit = StiReportUnitType.Millimeters;
Спасибо.
t0lik
Сообщения: 75
Зарегистрирован: 24 окт 2008, 12:35
Откуда: SPb

вопрос по StiReport.GetReportFromAssembly

Сообщение t0lik »

Ivan писал(а):Для устранения проблемы вам достаточно добавить всего одну строку кода сразу после создания главного отчета:

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

     StiReport masterReport = new StiReport();
     masterReport.ReportUnit = StiReportUnitType.Millimeters;
К сожалению рецепт не помог (см. описание в почте).
t0lik
Сообщения: 75
Зарегистрирован: 24 окт 2008, 12:35
Откуда: SPb

вопрос по StiReport.GetReportFromAssembly

Сообщение t0lik »

t0lik писал(а):К сожалению рецепт не помог (см. описание в почте).
По последнем письму есть какие то исправления? Теперь уже получается GetReportFromAssembly ни причем, а вот когда в отчет (пустой) подотчеты добавляются - тут глюк печати получается (см. последнее письмо с тестовым проектом).
К сожалению мне никак не удалось заставить отдельные отчеты (даже если экземпляр StiReport один и тот же) не запрашивать при печати для каждой страницы источник бумаги, в отличие от мастер-отчета с подотчетами.
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

вопрос по StiReport.GetReportFromAssembly

Сообщение Ivan »

Здравствуйте.
t0lik писал(а):По последнем письму есть какие то исправления? Теперь уже получается GetReportFromAssembly ни причем, а вот когда в отчет (пустой) подотчеты добавляются - тут глюк печати получается (см. последнее письмо с тестовым проектом).
Причину проблемы нашли и устранили.
Исправление будет включено в следующий предрелизный билд от 29 Июня.

Спасибо.
t0lik
Сообщения: 75
Зарегистрирован: 24 окт 2008, 12:35
Откуда: SPb

вопрос по StiReport.GetReportFromAssembly

Сообщение t0lik »

Ivan писал(а):Причину проблемы нашли и устранили.
Исправление будет включено в следующий предрелизный билд от 29 Июня.
Отлично, как только выйдет - проверю.
t0lik
Сообщения: 75
Зарегистрирован: 24 окт 2008, 12:35
Откуда: SPb

вопрос по StiReport.GetReportFromAssembly

Сообщение t0lik »

t0lik писал(а):Отлично, как только выйдет - проверю.
Проверил. Теперь мастер-отчет все нормально выводит из подотчетов.
Но теперь другая проблема - если первый подотчет скомпилировать в DLL, а остальные подотчеты загружать уже из нее.
то при печати только первый подотчет печатается нормально, а остальные - без данных.
t0lik
Сообщения: 75
Зарегистрирован: 24 окт 2008, 12:35
Откуда: SPb

вопрос по StiReport.GetReportFromAssembly

Сообщение t0lik »

t0lik писал(а):Но теперь другая проблема - если первый подотчет скомпилировать в DLL, а остальные подотчеты загружать уже из нее.
то при печати только первый подотчет печатается нормально, а остальные - без данных.
Но есть ньюанс. Если рендерить подотчеты каждый отдельно, а потом и мастер-отчет отрендерить , то тогда все нормально.
Ответить