Страница 2 из 3
вопрос по StiReport.GetReportFromAssembly
Добавлено: 15 июн 2009, 04:10
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;
вопрос по StiReport.GetReportFromAssembly
Добавлено: 16 июн 2009, 10:06
Andrew
Здравствуйте,
Код похоже правильный. Пришлите пожалуйста, sample project для анализа на
support@stimulsoft.com
Спасибо.
вопрос по StiReport.GetReportFromAssembly
Добавлено: 17 июн 2009, 05:53
t0lik
Andrew писал(а):Код похоже правильный. Пришлите пожалуйста, sample project для анализа на
support@stimulsoft.com
Отправил.
вопрос по StiReport.GetReportFromAssembly
Добавлено: 19 июн 2009, 06:48
Ivan
Здравствуйте.
Причина проблемы: по умолчанию отчет создается с единицами измерения дюйм или сантиметр (в зависимости от региональных настроек).
В вашем отчете указана единица измерения миллиметр.
При добавлении подотчетов в главный отчет единицы измерения должны автоматически пересчитываться.
Но первый подотчет компилируется в сборку, и для него конвертация не происходит.
Поэтому в вашем случае все размеры первого подотчета воспринимаются как в сантиметрах, т.е. в десять раз больше.
Соответственно для решения проблемы достаточно после создания главного отчета установить у него такую же единицу измерения, как и в подотчетах.
Для устранения проблемы вам достаточно добавить всего одну строку кода сразу после создания главного отчета:
Код: Выделить всё
StiReport masterReport = new StiReport();
masterReport.ReportUnit = StiReportUnitType.Millimeters;
Спасибо.
вопрос по StiReport.GetReportFromAssembly
Добавлено: 19 июн 2009, 08:15
t0lik
Ivan писал(а):Для устранения проблемы вам достаточно добавить всего одну строку кода сразу после создания главного отчета:
Код: Выделить всё
StiReport masterReport = new StiReport();
masterReport.ReportUnit = StiReportUnitType.Millimeters;
К сожалению рецепт не помог (см. описание в почте).
вопрос по StiReport.GetReportFromAssembly
Добавлено: 23 июн 2009, 06:54
t0lik
t0lik писал(а):К сожалению рецепт не помог (см. описание в почте).
По последнем письму есть какие то исправления? Теперь уже получается GetReportFromAssembly ни причем, а вот когда в отчет (пустой) подотчеты добавляются - тут глюк печати получается (см. последнее письмо с тестовым проектом).
К сожалению мне никак не удалось заставить отдельные отчеты (даже если экземпляр StiReport один и тот же) не запрашивать при печати для каждой страницы источник бумаги, в отличие от мастер-отчета с подотчетами.
вопрос по StiReport.GetReportFromAssembly
Добавлено: 24 июн 2009, 12:58
Ivan
Здравствуйте.
t0lik писал(а):По последнем письму есть какие то исправления? Теперь уже получается GetReportFromAssembly ни причем, а вот когда в отчет (пустой) подотчеты добавляются - тут глюк печати получается (см. последнее письмо с тестовым проектом).
Причину проблемы нашли и устранили.
Исправление будет включено в следующий предрелизный билд от 29 Июня.
Спасибо.
вопрос по StiReport.GetReportFromAssembly
Добавлено: 24 июн 2009, 13:16
t0lik
Ivan писал(а):Причину проблемы нашли и устранили.
Исправление будет включено в следующий предрелизный билд от 29 Июня.
Отлично, как только выйдет - проверю.
вопрос по StiReport.GetReportFromAssembly
Добавлено: 01 июл 2009, 06:59
t0lik
t0lik писал(а):Отлично, как только выйдет - проверю.
Проверил. Теперь мастер-отчет все нормально выводит из подотчетов.
Но теперь другая проблема - если первый подотчет скомпилировать в DLL, а остальные подотчеты загружать уже из нее.
то при печати только первый подотчет печатается нормально, а остальные - без данных.
вопрос по StiReport.GetReportFromAssembly
Добавлено: 01 июл 2009, 07:03
t0lik
t0lik писал(а):Но теперь другая проблема - если первый подотчет скомпилировать в DLL, а остальные подотчеты загружать уже из нее.
то при печати только первый подотчет печатается нормально, а остальные - без данных.
Но есть ньюанс. Если рендерить подотчеты каждый отдельно, а потом и мастер-отчет отрендерить , то тогда все нормально.