Metrika

28 апреля 2011 г.

Разбиение отчета в SSRS на страницы через параметр отчета

При выводе отчета в Web SSRS автоматически разбивает его на страницы, но есть возможность управлять этим процессом через параметр отчета. Все нижеследующее относиться к SQL Server 2008 R2. Я раньше делал это на SQL Server 2005 таким же способом, но какие то детали могут отличаться.

Для того, что бы разбить отчет на страницы через параметр, надо создать параметр типа Int, в моем случае он будет означать количество строк на станице. Далее создаем группу и в значение группировки вставляем выражение:
=Ceiling(RowNumber(Nothing)/Parameters!rows_per_page.Value)
В таблицу добавиться поле, что бы оно не мешалось, я делаю его ширину нулевой.

Далее, в свойствах группы, в разделе Page Breaks ставим галку Between each instance of a group. После этого я запустил отчет и он мне выдал ошибку, суть которой в том, что у таблицы выражение сортировки использует функцию RowNumber, а такого не может быть. После некоторых попыток избавиться от этого пришел к такому решению - для таблицы и для группы (на всякий случай) установил значения сортировки на первом попавшемся поле, а потом сбросил эти значения. Видимо при создании группы, выражение группировки автоматом попало в выражение сортировки (Мелкомягким привет!). 

Далее на кнопке строки отчета, которая появляется слева от самой таблицы при попадании таблицы в фокус ввода, тыкаем правой кнопкой и выбираем пункт Tablix Properties. На вкладке General нужно поставить галку Keep together on one page if possible, иначе могут появиться странности, например у меня при значении 50 строк на страницу выдавало каждые несколько страниц по 3-4 записи. Видимо автоматическое разбиение на страницы создается  без учета других разбиений.

Единственное чего я не смог сделать, так это оставить названия колонок на каждой странице. В окне Tablix Properties есть галка Repeat header rows on each page, но что-то ее установка ни к чему не привела.

К стати, здесь про разбиение на странице кратко написано: http://msdn.microsoft.com/en-us/library/ms157328.aspx , раздел Page Breaks.

Значок "замка" на папке или файле в Windows Server 2008 R2

Иногда в Windows Server 2008 R2, а так же в Windows 7, можно увидеть в эксплорере значок "замка" на папке или файле. Это знак того, что к папке (файлу) ограничен доступ пользователей, т.е. можо разрешить доступ, например, только себе. С одной стороны штука полезная, но с другой, может и напрячь, особенно если о ней не знать.
Я хотел к SQL Server приаттачить базу, которая лежала в папке с таким ограничением и SQL Server просто не видел файл внутри папки. Решение оказалось простым, надо было дать доступ к папке и самому файлу пользователю, из под которого был запущен SQL Server. В моем случае NETWORK SERVICE.
Как так получилось, что на папке оказался "замок", точно не знаю, я деаттачил базу, потом хотел расшарить папку для того, что бы перелить файл на другой сервер. Потом шару снял и появился замок и обратно приаттачить базу не вышло :))

1 апреля 2011 г.

Проверка правильности JSON

Вот здесь: http://json.org/ внизу страницы перечислены различные утилиты для работы с JSON. Мне понравилась утилита проверки правильности JSON-кода написанная на C#: JSON_checker.

Кстати, о том, зачем я начал проверять JSON. Сначала я использовал в проекте www.asvix.ru jQuery 1.3.2 и когда я делал вызов метода:
$.getJSON(url, callback);
То callback-функция нормально вызывалась после получения ответа с сервера. У меня с сервера возвращался не очень корректный ответ в виде JSON, примерно такой: {x:"50",y:"100"}.
После перехода на jQuery 1.5 колбэки перестали работать, т.е. сама callback-функция работала, если ее вызвать на прямую, но из getJSON она не вызывалась. Проблема оказалась в том, что JSON был некорректен. Исправил на сервере, что бы возвращало правильно: {"x":"50","y":"100"} и все заработало.