Сохранение и загрузка отчетов программно.

Обсуждение Stimulsoft Reports.NET
Ответить
Xptr
Сообщения: 17
Зарегистрирован: 14 авг 2006, 04:42
Откуда: Россия

Сохранение и загрузка отчетов программно.

Сообщение Xptr »

Добрый добрый.

Поясните пожайлуста такую ситуацию:

Вот такой код:

MemoryStream ms = new MemoryStream();
StiDesigner.DontAskSaveReport = true;

StiReport report = new StiReport();
report.Design();
//report.SavePackedReport(ms);
report.Save(ms);

StiReport reportNew = new StiReport();
//reportNew.LoadPackedReport(ms);
reportNew.Load(ms);
reportNew.Design();



При использовании методов типа Save и Load, при вызове мотода Load, поучаем ошибку: Root element is missing.

Если используем методы типа SavePackedReport и LoadPackedReport все гуд. Ошибка? или я не совсем понял логику работы и назначение методов??

А вообще можно как нить в демо версии добавить пункт меню или еще что либо в дизайнер отчетов для сохранения отчета в БД??? А

В полной версии можно все, т.к. она поставляется вместе с исходниками.. ;))) а как сделать что то на подобе в демо, что бы посмотреть как все будет работать.

Потому как такой вариант использования с StiDesigner.DontAskSaveReport = true;
Когда мы не спрашиваем о сохранении а после сохранения по любому сохраняем отчет не очень хорош, (мало ли что за эксперименты производились с отчетом и результаты которых не нужно сохранять:)


Спасибо вам за качественные и понятные ответы по существу :)
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Сохранение и загрузка отчетов программно.

Сообщение Vital »

Xptr писал(а):Добрый добрый.

Поясните пожайлуста такую ситуацию:

Вот такой код:

MemoryStream ms = new MemoryStream();
StiDesigner.DontAskSaveReport = true;

StiReport report = new StiReport();
report.Design();
//report.SavePackedReport(ms);
report.Save(ms);

StiReport reportNew = new StiReport();
//reportNew.LoadPackedReport(ms);
reportNew.Load(ms);
reportNew.Design();



При использовании методов типа Save и Load, при вызове мотода Load, поучаем ошибку: Root element is missing.

Если используем методы типа SavePackedReport и LoadPackedReport все гуд. Ошибка? или я не совсем понял логику работы и назначение методов??
Добавьте следующую строку в Ваш код:

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

StiReport reportNew = new StiReport();

ms.Seek(0, SeekOrigin.Begin);
А вообще можно как нить в демо версии добавить пункт меню или еще что либо в дизайнер отчетов для сохранения отчета в БД??? А

В полной версии можно все, т.к. она поставляется вместе с исходниками.. ;))) а как сделать что то на подобе в демо, что бы посмотреть как все будет работать.

Потому как такой вариант использования с StiDesigner.DontAskSaveReport = true;
Когда мы не спрашиваем о сохранении а после сохранения по любому сохраняем отчет не очень хорош, (мало ли что за эксперименты производились с отчетом и результаты которых не нужно сохранять:)


Спасибо вам за качественные и понятные ответы по существу :)
Гораздо проще перехватить операции сохранения и загрузки отчетов. У класса StiDesigner есть
два статических события:

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

StiDesigner.LoadingReport += new StiLoadingObjectEventHandler(OnLoadReport);
StiDesigner.SavingReport += new StiSavingObjectEventHandler(OnSaveReport);


private static void OnSaveReport(object sender, StiSavingObjectEventArgs e)
{
	if (e.SaveAs)
	{
		e.Processed = false;
		return;
	}

	StiDesigner designer = sender as StiDesigner;
	StiReport report = designer.Report;

        //Saving		
}

private static void OnLoadReport(object sender, StiLoadingObjectEventArgs e)
{

	StiDesigner designer = sender as StiDesigner;
	StiReport report = designer.Report;

        //Loading


		
}
Спасибо.
Xptr
Сообщения: 17
Зарегистрирован: 14 авг 2006, 04:42
Откуда: Россия

Сохранение и загрузка отчетов программно.

Сообщение Xptr »

спасибо,

однако при использовании LoadPackedReport Seek для потока делать не надо ...

Упакованный отчет от не упакованого отличается только тем что запакован GZip'ом ???
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Сохранение и загрузка отчетов программно.

Сообщение Edward »

Xptr писал(а):спасибо,

однако при использовании LoadPackedReport Seek для потока делать не надо ...

Упакованный отчет от не упакованого отличается только тем что запакован GZip'ом ???
Да, отчет упакован zip-архиватором. Строки преобразованы в формате Base64.

Note: Если Вы переименуете отчет *.mrz в *.zip то внутри файла Вы обнаружите файл отчета.

Спасибо.
Ответить