私はインターネットで何時間も検索してきましたが、現時点では絶望的です。
次のように定義された 2 つの 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 フィールドは常に間違った日付を生成するか、2012 年 3 月 31 日のような日付になると 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 はローカル マシンの言語設定を取得し、日付を正しく処理すると思います。
詳しくは :
- ブラウザ (IE) の言語は en_US です
- en_US ロケールを持つ他のレポート サーバーにレポートを展開すると、機能します。
私の質問は、このレポート サーバーのロケールも en_US に変更する方法です。