Сделать службы отчетов SQL Server метрическими измерениями
Я недавно занимаюсь созданием и программированием отчетов с использованием служб отчетов SQL Server.
Одна вещь, которая меня сбивает с толку: я не могу найти простой способ сообщить BIDS (Business Intelligence Dev Studio, aka Visual Studio) использовать метрическую систему для измерения - вы знаете - миллиметры, сантиметры и т.д., а не дюймы и т.д.
Я пытался выяснить, есть ли эта настройка внутри Visual Studio (и если да: где это?), или это зависит от экземпляра служб Reporting, с которым мы сталкиваемся (и снова: если да, то где я могу изменить это???).
Должен быть способ изменить это! За исключением США, никто в мире все еще не измеряет дюймы..... c'mon - мир в целом уже давно принял метрическую систему! Не говорите мне, что Microsoft заставляет меня вернуться в темные времена.....
Ответы
Ответ 1
Для SSRS 2008 отредактируйте шаблон Report.rdl
в
<Visual_Studio_Install_dir>\Common7\IDE\PrivateAssemblies\ProjectItems\ReportProject
и добавьте следующую строку перед закрывающим тегом </Report>
:
<rd:ReportUnitType>Cm</rd:ReportUnitType>
По умолчанию все новые отчеты (созданные добавлением нового элемента → выберите отчет) будут использовать сантиметры. Однако, как заметил Эд, отчеты, созданные мастером отчетов, кажутся жестко закодированными для использования дюймов.
Что-то еще следует отметить, что все, что вы размещаете в этом Report.rdl
файле, будет использоваться при создании нового отчета, так что вы можете настроить размеры страниц по умолчанию, шрифты и т.д.
Ответ 2
Я знаю, что я воскрешаю длинный мертвый поток, но для тех, кто ищет, как это сделать в VS2010, файл RDL находится в несколько другом месте.
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\ProjectItems\ReportProject\Report.rdl
Я нахожусь в Великобритании, поэтому крайне неудобно постоянно переключаться с дюймов в сантиметр и с "en-US" на "en-GB". Я иногда забываю, а потом понимаю, когда в моей колонке с датой указывается 7-й день 31-го месяца. Почему в VS нет опции, чтобы сказать, что "en-GB" - это мой стандарт по умолчанию, а "cm" - мой блок измерения по умолчанию, который полностью находится за пределами меня. Microsoft предлагает свое программное обеспечение на всех основных языках с поддержкой многочисленных типов календаря, но затем они тянут что-то вроде этого, и, похоже, они предполагают, что все разработчики, использующие VS, базируются в США... </rant>
Я изменил файл Report.rdl следующим образом, который решает эту проблему, но, как упоминалось ранее, только если я не использую мастер. Я еще не нашел способ установки параметров по умолчанию в мастере. В папке рядом с Report.rdl есть файл с именем ReportWizard.wsz, но похоже, что он просто содержит указатели на различные объекты. Там может быть что-то, что мы можем использовать, но я не собираюсь задерживать дыхание.
95% отчетов, которые я пишу, имеют свойства страницы ландшафта A4, поля по 0,5 см со всех сторон и не имеют интерактивного размера, а также текстовое поле вверху для названия, поэтому я тоже их бросил. Вот весь файл Report.rdl, если вы хотите его скопировать или изменить.
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<Body>
<ReportItems>
<Textbox Name="TextBoxReportTitle">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Report Title</Value>
<Style>
<FontSize>20pt</FontSize>
<FontWeight>Bold</FontWeight>
<Color>SteelBlue</Color>
</Style>
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox1</rd:DefaultName>
<Height>0.9cm</Height>
<Width>28.7cm</Width>
<DataElementOutput>NoOutput</DataElementOutput>
<Style>
<Border>
<Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<Height>5cm</Height>
<Style />
</Body>
<Width>28.7cm</Width>
<Page>
<PageHeight>29.7cm</PageHeight>
<PageWidth>21cm</PageWidth>
<InteractiveHeight>0cm</InteractiveHeight>
<InteractiveWidth>0cm</InteractiveWidth>
<LeftMargin>0.5cm</LeftMargin>
<RightMargin>0.5cm</RightMargin>
<TopMargin>0.5cm</TopMargin>
<BottomMargin>0.5cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
<AutoRefresh>0</AutoRefresh>
<Language>en-GB</Language>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
</Report>
Если у вас есть несколько проектов отчетов по умолчанию, которые вы используете регулярно, очень легко создать новый шаблон. Просто составите быстрый отчет с основным видом, который вы хотите, и всеми настройками, установленными так же, как и у вас, и сохраните копию rdl в указанной выше папке. Я удалил тег <rd:ReportID>
, поскольку этот файл автоматически создается. Теперь, если вы добавите новый элемент в свой проект, ваш новый шаблон появится в списке в VS.
Ответ 3
Я нашел решение самостоятельно - вроде.
Когда создается новый отчет, я могу щелкнуть правой кнопкой мыши по поверхности дизайна отчета и выбрать "Свойства отчета". Там я могу выбрать между сантиметрами и сантиметрами для своих измерений.
Но я до сих пор не нашел способ сообщить Reporting Services, что я всегда хочу, чтобы система показателей по умолчанию...... любые дальнейшие советы были бы приветствуются!
Ответ 4
Я также обнаружил, что если у вас есть существующий отчет и вы хотите изменить эти параметры, вы можете щелкнуть пустое пространство NEXT в отчете, чтобы увидеть свойства отчета и изменить его с дюймов на дюйм и изменить размеры страниц и т.д.
Ответ 5
Используя BIDS 2005 (я не использовал версию 2008 года), вы можете определить измерения на любом устройстве, которое понимает разработчик, - допустимо в том же отчете, чтобы определить некоторые измерения в дюймах, некоторые в сантиметрах, некоторые в пикселях и т.д..
Если вы посмотрите на определение отчета, хранящегося в файле RDL (как XML), вы увидите, что значение хранится в единицах, которые вы предоставляете (вместо того, чтобы быть преобразованы в имперские измерения под капотом) - как в этом пример:
<InteractiveWidth>8.5in</InteractiveWidth>
<rd:GridSpacing>0.25cm</rd:GridSpacing>
Если значения в дюймах в шаблоне отчета по умолчанию беспокоят вас, вы можете их изменить - в SQL 2005 шаблон хранится по умолчанию в
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\ProjectItems\ReportProject\Report.rdl
Это место может немного отличаться для SQL 2008.
(Обратите внимание, что это не изменяет отчеты, созданные мастером отчетов.)