Сделать службы отчетов 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.

(Обратите внимание, что это не изменяет отчеты, созданные мастером отчетов.)