powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS. Как получить следуюшую запись в датасете.
10 сообщений из 10, страница 1 из 1
SSRS. Как получить следуюшую запись в датасете.
    #38841705
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реализовать это в процедуре или SQL запросе возможности нет.
Нужно использовать инструментарий SSRS.

Есть ли возможность в коде отчета "пройтись" по датасету и выбрать следующую запись ?
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38841727
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_human, Гипотетически? Пожалуй... Непонятно только, что же является признаком следующей записи...
Варианты 1. Lookup, LookupSet, MultyLookup
2. Через опу и кастом код...
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38841746
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser,

Допустим, что сортировка указана SQL коде.
Возможно, SSRS хранит и отображает данные из датасета не меняя сортировку, если это не сделано явно, например в табликсе или группах и т.п.

Пробовал добавить вычисляемое поле в датасет в котором есть поле что указывает порядок 1,2,3 ... Пишет ошибки
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38841757
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В датасет не получится... придется в самом тельце отчета это делать.
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38841790
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser,

Ок, а если нет поля с идентификатором, а просто набор текстовых данных в полях.
Ф-ия RowNumber() и как-то нумерует, но LookUp требует в качестве параметров поля датасета, а не выражения.
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38841873
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавляем CustomCode:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Shared map AS New System.Collections.Hashtable()
Private Shared last_val as Integer = 0

  Public Function GetID(ByVal someval As Object) As Integer
        If map.ContainsKey(someval) Then
            Return map(someval)
        End If

        last_val += 1

        map.Add(someval, last_val)

        Return last_val
End Function



Добавляем вычисляемое поле FakeID:
Код: vbnet
1.
=Code.GetID(Fields!LineName.Value)


В отчете используем LookUp:
Код: vbnet
1.
=LookUp(Fields!FakeID.Value + 1, Fields!FakeID.Value, Fields!ID.Value , "DataSetLines")



P.S.: так лучше не делать...
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38841928
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser,

Работает. Спасибо.

buserP.S.: так лучше не делать...
Будет тормозить на большом обьеме данных ?
Или SSRS и так глючный, не нужно его доламывать ? :)
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38842178
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_humanБудет тормозить на большом обьеме данных ? Будет...
_humanИли SSRS и так глючный, не нужно его доламывать ? :) он не глючный, он местами убог, но только местами...
Кормите его хорошо препарированными данными... используйте как можно меньше кастом кода... да и выражений... не забывайте, что это таки голимый asp.net а страницы это просто html, не мучайте его излишним форматированием, графики - вообще "тормоз коммунизма"... и будет вам счастье...
Неплохая книжка Microsoft SQL Server 2008 R2 Unleashed
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38842199
_user89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser,

глюки тоже есть... В прошлом году штук пять точно насчитал, но постоянные отвлекаловки и загруз на работе помешали список составить. Пока назову парочку.

1. Это стандартная ситуация, когда хранимка, запущенная откуда угодно, выполняется 2 сек, а Reporting её за полчаса не может отработать. Никаких сложных группировок нет, никого кастомного кода, вычисляемых полей, матрицы, подотчетов и т.д. Причем возникает, когда ни на какой из серверов нет нагрузок, профайлер блокировки не показывает.
Просто генерится вечно и всё. У нас таких два отчета, лекарство для всех работает 100%.
- в тексте хранимки оставляем только одну команду типа set nocount on, остальной текст комментируем
- запускаем отчет, чтобы отработала эта хранимка
- снимаем комментарии и запускаем хранимку на обычное выполнение
- запускаем отчет и через 2 сек. он удачно выводится на экран, экономисты счастливы
Замечено, что если просто удалить хранимку, а потом воссоздать, то не помогает. Надо именно, чтобы отчет отработал set nocount on
Возможно есть другое решение, но это - очень быстрое и не разу не подводило.


2. Глюк в IIF , если хотим обойти деление на ноль. Очевидное решение не работает.
Код: vbnet
1.
=iif(Fields!Revenue.Value=0, 0, Fields!Cost.Value/Fields!Revenue.Value)


В гугле нашел решение, оно работает
Код: vbnet
1.
2.
In general, you want a pattern like this to avoid division by zero:
=iif(B=0, 0, A / iif(B=0, 1, B))
...
Рейтинг: 0 / 0
SSRS. Как получить следуюшую запись в датасете.
    #38842220
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_user89,
1. по поводу iif это специфика его работы - всегда вычисляются обе части true и false (документировано - да, но не очевидно)
2. второе - тоже просто... и к ssrs не имеет отношения... это либо различие в параметрах соединения (set опции - скорее всего set arithabort) решается переписыванием процедуры, либо не оптимальный план для переданных параметров - решается либо через OPTIMIZE FOR, RECOMPILE или еще парой нехитрых трюков (googl'ится по словам parameter sniffing, либо поиском по sql.ru :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS. Как получить следуюшую запись в датасете.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]