16

我刚刚开始使用 SQL Server Reporting Services 创建和编程报告。

一件事让我一头雾水:我似乎找不到一种简单的方法来告诉 BIDS(商业智能开发工作室,又名 Visual Studio)使用公制进行测量 - 你知道 - 毫米、厘米等。 , 而不是英寸等。

我试图弄清楚这是否是 Visual Studio 中的设置(如果是:它在哪里??),或者这是否取决于我们要反对的报告服务实例(同样:如果是,那么到底在哪里可以我改变那个???)。

一定有办法改变这一点!!除了美国,世界上没有人还在用英寸来衡量......来吧 - 全世界早就采用了公制!不要告诉我微软让我回到了黑暗时代......

4

5 回答 5

20

对于 SSRS 2008,编辑Report.rdl模板位于

<Visual_Studio_Install_dir>\Common7\IDE\PrivateAssemblies\ProjectItems\ReportProject

</Report>并在结束标记之前添加以下行:

<rd:ReportUnitType>Cm</rd:ReportUnitType>

这将默认所有新报告(由添加新项目 -> 选择报告创建)使用厘米。但是,正如 Ed 所指出的,报告向导创建的报告似乎是硬编码为使用英寸。

另外需要注意的是,您在该Report.rdl文件中放置的任何内容都将在创建新报告时使用,因此您可以设置默认页面大小、字体等...

于 2009-11-25T08:45:59.380 回答
8

我知道我正在复活一个长期死线,但对于那些在 VS2010 中寻找如何做到这一点的人来说,RDL 文件的位置略有不同。

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\ProjectItems\ReportProject\Report.rdl

我在英国,所以必须不断地从英寸切换到厘米,从“en-US”切换到“en-GB”,这非常烦人。我有时会忘记,然后才意识到我的日期栏说这是第 31 个月的第 7 天。为什么 VS 中没有选项可以说“en-GB”是我的默认语言环境,而“cm”是我的默认测量单位,这完全超出了我的范围。微软以所有主要语言提供他们的软件,支持多种日历类型,但随后他们推出了类似的东西,似乎他们假设所有使用 VS 的开发人员都位于美国......</rant>

我修改了我的 Report.rdl 文件,如下解决了该问题,但如前所述,只有在我不使用向导的情况下。我还没有找到在向导中设置默认值的任何方法。在 Report.rdl 旁边的文件夹中有一个名为 ReportWizard.wsz 的文件,但看起来它只包含指向各种对象的指针。那里可能有我们可以使用的东西,但我不会屏住呼吸。

我写的95%的报告都有A4横向的页面属性,四边0.5cm的边距,没有交互大小,还有顶部的标题文本框,所以我也把它们扔进去了。这是整个 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 的列表中。

于 2012-12-20T11:40:32.800 回答
4

我自己找到了解决方案 - 有点。

创建新报表时,我可以右键单击报表设计图面并选择“报表属性”。在那里,我可以在英寸和厘米之间进行选择。

但是我仍然没有找到一种方法来告诉 Reporting Services 我总是希望默认使用公制系统......欢迎任何进一步的提示!

于 2009-11-12T07:36:36.850 回答
4

我还发现,如果您有一个现有的报告并希望更改这些参数,您可以右键单击报告旁边的空白区域以查看报告属性并将从英寸更改为厘米并修改页面大小等。

于 2015-09-05T08:19:45.917 回答
1

使用 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,此位置可能略有不同。

(请注意,这不会修改报告向导生成的报告。)

于 2009-11-11T14:44:22.293 回答