Использование хранимых процедур как источника данных
Re: Использование хранимых процедур как источника данных
Здравствуйте,
Странно, но не смогли на вашем примере воспроизвести проблему. Файл сохраняется каждые 5 минут.
Спасибо.
Странно, но не смогли на вашем примере воспроизвести проблему. Файл сохраняется каждые 5 минут.
Спасибо.
Re: Использование хранимых процедур как источника данных
Кажется понял в чем дело.
Если имя редактируемого файла передается в параметре командной строки, я открываю файл на редактирование так:
При этом автосохранение не работает. Если файл открыть через интерфейс Вашего редактора File -> Open, то автосохранение работает.
Что-то можно сделать, чтобы автосохранение работало и в случае, если отчет был загружен через Report.Load?
Команда File->Save работает в этом сценарии, свойство <ReportFile> задано в .mrt файле.
Еще могу похвастаться, прикрутил к Вашем движку поддержку считывания нескольких датасетов из хранимых процедур MS SQL Server.
Процедуры, возвращающие несколько наборов данных, я объявляю со свойством "ConnectOnStart" = false и инициализирую их из Report.BeforeRender примерно так:
И в связи с этим еще один вопрос.
Можно ли вызывать Dispose() у класса System.Data.DataSet, который я передал здесь в метод RegData() отчета?
Или же вызов метода Dispose() приведет проблемам с этим датасетом в отчете?
Другими словами, копирует ли метод RegData() переданный ему DataSet?
Если имя редактируемого файла передается в параметре командной строки, я открываю файл на редактирование так:
Код: Выделить всё
Report = new StiReport();
Report.Load(fileName);
Report.Design();
Что-то можно сделать, чтобы автосохранение работало и в случае, если отчет был загружен через Report.Load?
Команда File->Save работает в этом сценарии, свойство <ReportFile> задано в .mrt файле.
Еще могу похвастаться, прикрутил к Вашем движку поддержку считывания нескольких датасетов из хранимых процедур MS SQL Server.
Процедуры, возвращающие несколько наборов данных, я объявляю со свойством "ConnectOnStart" = false и инициализирую их из Report.BeforeRender примерно так:
Код: Выделить всё
void ReadDataFromStoredProc(StiReport report, StiSqlSource sp)
{
using (var dta = new SqlDataAdapter(CreateSqlCommand(sp)))
{
var ds = new DataSet {Locale = CultureInfo.CurrentUICulture};
var canDisposeDataset = true;
try
{
dta.Fill(ds);
report.RegData(sp.SqlCommand, ds);
canDisposeDataset = false;
}
finally
{
if (canDisposeDataset)
{
ds.Dispose();
}
}
}
}
Можно ли вызывать Dispose() у класса System.Data.DataSet, который я передал здесь в метод RegData() отчета?
Или же вызов метода Dispose() приведет проблемам с этим датасетом в отчете?
Другими словами, копирует ли метод RegData() переданный ему DataSet?
Re: Использование хранимых процедур как источника данных
Здравствуйте, Дмитрий.
DataSet можно диспоузить только после построения отчёта. Копия таблиц не создаётся.
По поводу автосохранения нам надо провести дополнительную проверку. Сообщим о результатах чуть позже.
Спасибо.
DataSet можно диспоузить только после построения отчёта. Копия таблиц не создаётся.
По поводу автосохранения нам надо провести дополнительную проверку. Сообщим о результатах чуть позже.
Спасибо.
Re: Использование хранимых процедур как источника данных
Здравствуйте.
Уточните, пожалуйста, момент "после построения отчёта" наступает
1) Для Reports.Web - после окончания выполнения метода
или после того, как отчет будет удален из кэша сервера(по таймауту)?
2) Для дизайнера Reports.Net я вызываю эту функцию (RegData) из события
StiOptions.Engine.GlobalEvents.ReportBeginRender
Это мне нужно для того, чтобы в Preview редактора были видны эти несколько наборов данных из одной ХП.
Что в данном случае можно считать моментом "после построения отчета"?
Симметричное событие StiOptions.Engine.GlobalEvents.ReportEndRender?
Спасибо.
Уточните, пожалуйста, момент "после построения отчёта" наступает
1) Для Reports.Web - после окончания выполнения метода
Код: Выделить всё
StiMvcViewer.GetReportSnapshotResult(HttpContext, report);
2) Для дизайнера Reports.Net я вызываю эту функцию (RegData) из события
StiOptions.Engine.GlobalEvents.ReportBeginRender
Это мне нужно для того, чтобы в Preview редактора были видны эти несколько наборов данных из одной ХП.
Что в данном случае можно считать моментом "после построения отчета"?
Симметричное событие StiOptions.Engine.GlobalEvents.ReportEndRender?
Спасибо.
Re: Использование хранимых процедур как источника данных
Здравствуйте.
1. Вы можете вызвать построение отчёта до метода StiMvcViewer.GetReportSnapshotResult:
2. Если вы будете использовать глобальное событие ReportEndRender, то могут возникнуть проблемы, если вы используете двойной проход. Это событие будет вызвано дважды и на втором проходе данных уже не будет. Во можете использовать следующее условие:
Спасибо.
1. Вы можете вызвать построение отчёта до метода StiMvcViewer.GetReportSnapshotResult:
Код: Выделить всё
report.Render();
...
// код удаления данных отчёта
...
StiMvcViewer.GetReportSnapshotResult(HttpContext, report);
Код: Выделить всё
NumberOfPass == StiNumberOfPass.SinglePass || IsSecondPass
Re: Использование хранимых процедур как источника данных
Здравствуйте, спасибо за ответ, сам бы я до такого не скоро дошел
По поводу проблем с автосохранением в такой программе:
нет новостей?
К слову сказать, вкладка Код в дизайнере, несмотря на опцию становится видна лишь при обнаружении ошибки в коде
Спасибо
По поводу проблем с автосохранением в такой программе:
Код: Выделить всё
[STAThread]
static void Main(string[] args)
{
StiOptions.Engine.HideExceptions = false;
StiOptions.Designer.CodeTabVisible = true;
StiOptions.Designer.PreviewReportVisible = true;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var r = new StiReport();
r.Load("d:/chart1.mrt");
r.Design();
}
К слову сказать, вкладка Код в дизайнере, несмотря на опцию
Код: Выделить всё
StiOptions.Designer.CodeTabVisible = true;
Спасибо
Re: Использование хранимых процедур как источника данных
Здравствуйте.
На данный момент мы вплотную заняты подготовкой нашего нового продукта -- Stimulsoft Reports.JS.
Дороботку с автосохранением имеем возможность сделать после релиза.
По поводу опции CodeTabVisible. Она скрывает возможность отображения вкладки Код. При её отключении в контекстном меню пункт убирается.
Спасибо.
На данный момент мы вплотную заняты подготовкой нашего нового продукта -- Stimulsoft Reports.JS.
Дороботку с автосохранением имеем возможность сделать после релиза.
По поводу опции CodeTabVisible. Она скрывает возможность отображения вкладки Код. При её отключении в контекстном меню пункт убирается.
Спасибо.