25.11.2019, 19:28 | #1 |
Участник
|
Временные таблицы в SSRS отчетах
Скорее всего известный факт, но вдруг кто не знал
Вот такой код заполнит временную таблицу, но отчет ничего не покажет: X++: class goaSsrsReport1 extends SrsReportDataProviderPreProcessTempDB { GoaTmpTable goaTmpTable; [SRSReportDataSetAttribute(tablestr(GoaTmpTable ))] public GoaTmpTable getGoaTmpTable() { select goaTmpTable; return goaTmpTable; } public void processReport() { goaTmpTable = this.populateTmp(); } GoaTmpTable populateTmp() { GoaTmpTable locGoaTmpTable; ..... return locGoaTmpTable; } } X++: class goaSsrsReport1 extends SrsReportDataProviderPreProcessTempDB { GoaTmpTable goaTmpTable; [SRSReportDataSetAttribute(tablestr(GoaTmpTable ))] public GoaTmpTable getGoaTmpTable() { select goaTmpTable; return goaTmpTable; } public void processReport() { this.populateTmp(goaTmpTable); } void populateTmp(GoaTmpTable _GoaTmpTable ) { ..... ////inserting into _GoaTmpTable } } А такая конструкция, типа goaTmpTable = this.populateTmp(), создаёт новый экземпляр временной таблицы и связь goaTmpTable с SSRS теряется. |
|
|
За это сообщение автора поблагодарили: Logger (1), dech (2). |
26.11.2019, 09:04 | #2 |
Участник
|
Спасибо.
Возникает вопрос такой: зачем переменной класса присваивать значение метода, если можно с ней работать в том же методе и ничего не присваивать, вернув void? Это шо, эстетизьм?
__________________
// no comments |
|
26.11.2019, 11:11 | #3 |
Участник
|
Цитата:
На самом деле, в проекте я использовал статический метод расширенного мною класса SysQuery, который возвращает таблицу со значениями фильтра для отчета: SysQuery::GOAFilterToTable(this.parmQuery(),tmpmpSysQuery); |
|