Мы решили нашу проблему ... хотя и не самым идеальным способом.
Заголовок страницы («основного» отчета, а не вложенных отчетов), по-видимому, является только способом, чтобы последовательно иметь раздел заголовка.
Мы реализовали решение, основанное в значительной степени на этой публикации в блоге:
Сохранение состояния в службах отчетности 2008
Мы немного изменили пост в блоге, убрав из методов «id» и добавив GUID, чтобы значения отчета не смешивались, даже если пользователь запускает несколько копий отчета одновременно. (При использовании общих переменных помните, что они являются глобальными для отчета, выполняемого между экземплярами выполнения и пользователями на сервере отчетов, поэтому при их использовании необходимо соблюдать осторожность!)
В теле отчета у нас есть скрытый текстовый блок, который вызывает:
=Code.SetValue("xxx",Fields!Field1.Value) & Code.SetValue("yyy",Fields!Field2.Value)
и в заголовке страницы отчета мы ссылаемся на них (например):
=Code.GetValue("xxx")
Это работает, потому что тело вычисляется перед заголовком страницы, даже для страницы 1.
Тем не менее, в конце концов, это хак для чего-то, что должно быть в продукте Microsoft, учитывая, что они вложили годы разработки в этот продукт! Почему мы не можем иметь вложенные заголовки табликса и более простые в использовании заголовки, я не знаю ... опять же, это обновление отчета из программы начала 90-х, которая сделала все это без проблем. По крайней мере, предоставьте нам переменные отчета, которые можно получить и установить при обработке отчета!
В любом случае, все как есть ... мы проверили решение с общими переменными, и, похоже, оно работает очень хорошо. Мы собираемся запустить стресс-тесты, чтобы убедиться, что они реализованы правильно, я опубликую кое-что здесь, если мы обнаружим какие-либо дальнейшие проблемы.
(И если кто-нибудь знает какой-то другой способ получения согласованных строк заголовка на страницах, даже если есть строки подробностей с большой высотой, пожалуйста, поделитесь ...)