我花了很多时间在网上搜索,但此时有点绝望。
我们有一个报告,其中有两个DataSet字段定义为
Date_Difference = Round((DateDiff("d", Fields!StartDate.Value, Fields!EndDate.Value))* Fields!ProjectStatusPct.Value)
status_date = CDate(DateAdd("d", Fields!Date_Difference.Value, Fields!StartDate.Value))
SSRS和BIDS都安装在同一台服务器上(VM,Windows Server 2008 R2)。区域,语言,格式,我在机器上可以想到的一切都配置为en_US。
报告属性中的语言是en-US,我也可以在报告代码中定义此en-US。
<Language>en-US</Language>
同样在reportViewer.aspx中,我改变了
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Microsoft.ReportingServices.WebServer.ReportViewerPage"%>
到
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Microsoft.ReportingServices.WebServer.ReportViewerPage" Culture="en-US"%>
正如一些帖子所建议的那样。
数据源服务器(MSSQL 2008,在同一台机器上)语言也是en-US。
报告在BIDS设计师看来很好。但是,当我将它部署到服务器时,日期格式搞砸了。报告服务器将MM / dd / yyyy(美国格式)作为dd / MM / yyyy(加拿大格式)。因此,status_date字段始终生成错误的日期,如果遇到类似03/31/2012的日期则为NULL
当我查看SSRS日志文件时,标题始终显示为
<Header><Product>Microsoft SQL Server Reporting Services Version 2007.0100.5500.00 ((Katmai_PCU_Main).110922-0336 )</Product><Locale>English (Canada)</Locale><TimeZone>Pacific Daylight Time</TimeZone><Path>C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\Logfiles\ReportServerService__06_07_2012_16_30_41.log</Path><SystemName>KAM1ODDBS06</SystemName><OSName>Microsoft Windows NT 6.1.7601 Service Pack 1</OSName><OSVersion>6.1.7601</OSVersion><ProcessID>1160</ProcessID></Header>rshost!rshost!ec0!06/07/2012-16:30:41:: i INFO: CLR runtime is initialized.
所以我认为BIDS采用本地机器的语言设置,然后正确处理日期。
更多信息:
我的问题是,如何将此报表服务器的语言环境更改为en_US?
答案 0 :(得分:0)
我认为设置服务器语言可能会解决它。分配区域设置有两个级别,一个位于报告级别,另一个级别位于TextBox或字段级别(如果可能)。检查你所在领域的内容。如果你可能也对这个http://technet.microsoft.com/en-us/library/ms155064(v=sql.100).aspx感兴趣,它会谈到你所描述的案例。