レポートサービスの日付と時刻の選択方法を変更する方法現在の形式は常にdd/MM/yyyyの形式で、システム日付&の形式は同じです。日付をMM/dd/yyyyの形式に変更したい日付選択ツールで日付と時刻の形式を変更するSSRS
答えて
デザイナーでは、日付の形式はオペレーティングシステムの文化によって決まります。
デプロイされた日付形式は、ブラウザの言語によって決まります。
Necromancing。
はい、あなたは実際にそれを行うことができます - 並べ替え。
最初に、SSRSはブラウザで指定された言語の日付形式を使用することに注意してください。
ブラウザの言語を変更するだけで済みます。
明らかに、各ユーザーにこれを行うように伝えたくない場合があります(最初に行うには&のスキルがあるとします)。
が、私はそれをin_spracheと呼ばれる(Spracheはドイツ語で言語を意味し、可能な値「DE、 "FR"、 "IT"、 "EN" で)
。今、あなたは仮想メソッドReportViewer.aspxで「InitializeCulture」をオーバーライドすることで、ローカリゼーションプロセスを変更する必要があります。
あなたは
C:\Program Files\Microsoft SQL Server\MSRS<Version>.MSSQLSERVER
C:\Program Files\Microsoft SQL Server\MSRS<Version>.<Instance>
例えば
でのReportViewerを見つけることができますそこC:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER
あなたは(/ReportServer/Pages/ReportViewer.aspxのソース・コードに)追加:URL - の値を取って、ASP.NETが局在化する方法
<script type="text/C#" runat="server">
protected override void InitializeCulture()
{
string sprache = System.Web.HttpContext.Current.Request.QueryString["in_sprache"];
if(string.IsNullOrEmpty(sprache))
sprache = "";
switch(sprache.ToLowerInvariant())
{
case "de":
sprache = "de-CH";
break;
case "fr":
sprache = "fr-CH";
break;
case "it":
sprache = "it-CH";
break;
case "en":
sprache = "en-US";
break;
default:
sprache = "";
break;
}
// System.Web.HttpContext.Current.Response.Write(sprache);
if(!String.IsNullOrEmpty(sprache))
{
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(sprache);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(sprache);
}
base.InitializeCulture();
}
</script>
これが優先されますパラメータin_sprache(in_spracheは、ブラウザのユーザ言語ではなくレポートのパラメータでなければなりません)。あなただけそうすることができ
日付ピッカーが正しく動作するために今、残念ながら、あなたもcontext.Request.UserLanguagesをオーバーライドする必要があります...(文化はEN-USおよび> 12日であればそうでない場合は、あなたがエラーを取得する)
レポートサーバー
<system.web>
[...]
<httpModules>
[...]
<add name="RequestLanguageChanger" type="libRequestLanguageChanger.RequestLanguageChanger, libRequestLanguageChanger" />
</httpModules>
[...]
</system.web>
のweb.configファイルにHTTP-モジュール(libRequestLanguageChanger.dll)
を添加することによって。 (このHTTPモジュールを許可するようにrosetta-policyを変更する方法を理解できない限り、rosettaから "Full"に変更する必要があります)。
HTTPモジュールでInitializeCultureをオーバーライドすることもできるので、runat = "server"スクリプトをReportViewer.aspxに追加する必要はありません。
namespace libRequestLanguageChanger
{
public class RequestLanguageChanger : System.Web.IHttpModule
{
void System.Web.IHttpModule.Dispose()
{
// throw new NotImplementedException();
}
void System.Web.IHttpModule.Init(System.Web.HttpApplication context)
{
// https://stackoverflow.com/questions/441421/httpmodule-event-execution-order
context.BeginRequest += new System.EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, System.EventArgs e)
{
System.Web.HttpApplication application = sender as System.Web.HttpApplication;
System.Web.HttpContext context = application.Context;
if (context.Request != null)
{
// string language = context.Request.Headers["Accept-Language"];
string language = null;
// string url = context.Request.RawUrl;
// string referrer = null;
if (context.Request.UrlReferrer != null)
{
// referrer = context.Request.UrlReferrer.OriginalString;
string queryString = context.Request.UrlReferrer.Query;
System.Collections.Specialized.NameValueCollection queryStrings = System.Web.HttpUtility.ParseQueryString(queryString);
language = queryStrings["in_sprache"];
}
if(context.Request.QueryString["in_sprache"] != null)
language = context.Request.QueryString["in_sprache"];
if (!string.IsNullOrEmpty(language))
{
language = language.ToLowerInvariant();
switch (language)
{
case "de":
language = "de-CH";
break;
case "fr":
language = "fr-CH";
break;
case "it":
language = "it-CH";
break;
case "en":
language = "en-US";
break;
default:
language = "";
break;
}
} // End if (!string.IsNullOrEmpty(sprache))
// SQL.Log(url, referrer, sprache);
// Simulate Browser-Language = in_sprache
if (!string.IsNullOrEmpty(language))
{
// context.Request.Headers["Accept-Language"] = language;
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo(language);
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
if (context.Request.UserLanguages != null)
{
// System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo(context.Request.UserLanguages[0]);
for (int i = 0; i < context.Request.UserLanguages.Length; ++i)
{
// context.Request.UserLanguages[i] = "en-US";
context.Request.UserLanguages[i] = language;
} // Next i
} // End if (context.Request.UserLanguages != null)
} // End if (!string.IsNullOrEmpty(language))
} // End if (context.Request != null)
} // End Sub context_BeginRequest
} // End Class
} // End Namespace
そしてそこには、ブラウザの言語を変更するようにユーザーに伝えるためになくても、「カスタム」-culture日付フォーマットでレポートサーバーです。
{@language}
のテキストをユーザーのカルチャー名(私の場合はDE、FR、IT、EN)に置き換えることができるSQLテーブルからリンクをフェッチできます。これらはスイスで使用されている言語)。
SELECT
REPLACE(RE_Link, '{@language}', T_Users.USR_Language)
FROM T_Reports
LEFT JOIN T_Users ON USR_ID = @usr
-- http://localhost/Reportserver?/SomeCompany/SomeReport&rs:Command=Render&in_sprache=de
-- http://localhost/Reportserver?/SomeCompany/SomeReport&rs:Command=Render&in_sprache=fr
-- http://localhost/Reportserver?/SomeCompany/SomeReport&rs:Command=Render&in_sprache=it
-- http://localhost/Reportserver?/SomeCompany/SomeReport&rs:Command=Render&in_sprache=en
- 1. コマンドプロンプトで日付と時刻の形式を変更する
- 2. 日付と時刻の形式を変更するAndroid
- 3. 日付と時刻ピッカーカスタム書式の日付変更
- 4. SSRSガントチャート - 日付形式に変更
- 5. SSRS日付形式
- 6. 日付と時刻の形式
- 7. FullCalendarJSの日付と時刻形式
- 8. Django - HTMLタグ内の日付/時刻形式を変更する
- 9. SSRSの日付時刻パラメータ
- 10. 日付でクエリがデータベースの日付/時刻形式で
- 11. 日付時刻を使用してPythonの時刻形式を変更する
- 12. 日付、時刻は、PHPでTimpStamp形式はPHPで日付の形式場合
- 13. Javascriptの日付/時刻の形式
- 14. のSQLServer形式の日付時刻
- 15. Pythonの日付時刻形式のエラー
- 16. サーバの日付時刻形式
- 17. java netbeansのJSpinner日付/時刻形式
- 18. PHPの日付時刻オブジェクト形式
- 19. Jqueryの日付時刻形式
- 20. カスタム日付時刻形式の解析
- 21. 日付時刻変数と日付列
- 22. 日付時刻選択ツールで選択した日付をVB.Netのデータベースに渡す
- 23. 変更Djangoの日付時刻フィールドauto_now_add形式
- 24. 日付と日付時刻
- 25. Cシャープ日付時刻形式
- 26. PHP不明な日付時刻形式
- 27. 、日付時刻形式に誤り
- 28. web2pyでdatepickerの日付と時刻の形式を変更する方法
- 29. 日付時刻をCで指定した日時形式に変換する
- 30. 日付時刻形式をvb.netで変換する