始终在日期字段中使用德语 - MMM 格式

Always Use German - MMM Format in Datefield

我正在使用公式:

totext(cdate({DATEFIELD}),'dd.MMM.yyyy') 

所以我得到类似 31.Dec.202001.Mar.2020 的信息,我注意到 MMM 格式受 CR 开发人员的语言设置影响。 我总是喜欢使用德语格式 31.Dez.2020,01.Mär.2020 (Dec <> Dez, Mar <> Mär).

有没有一种快速的方法可以在公式中硬编码月份格式的语言设置?

无法告诉 totext 使用特定语言环境。

您可以在 CR 设计器中更改“首选查看区域设置”,方法是选择菜单项或设置注册表项值(请参阅 this SAP Note),但这只是 CR 的用户特定设置设计器应用程序(即对其他用户预览相同报表或在服务器端呈现无效)。

我想您必须推出自己的解决方案才能将固定语言的月份名称输入到输出中。您可能会检查您的数据库(如果有的话)是否提供内置函数来实现此目的,例如 SQL 服务器的 FORMAT:

SELECT FORMAT( GETDATE(), 'd', 'en-gb');

如果是这样,您可以使用命令作为数据源或 CR SQL 表达式字段来使用它。如果没有,就用CR公式。

最后一件事:可以在公式中使用 ContentLocale 检索“首选查看区域设置”的当前设置。还有 SelectionLocale 提供了上次刷新时的首选语言环境设置。 (I don't know if SelectionLocale is stored with the report when "Save data with report" is selected.)

一个简单但公认不是很灵活的解决方案类似于以下硬编码月份名称。
但由于未来 1000 年可能不会调整月份名称,这应该仍然是一个令人满意的解决方案。 ;-)

StringVar shortName;
Select Month(cdate({DATEFIELD}))
    Case 1:
        shortName := "Jan"
    Case 2:
        shortName := "Feb"
    Case 3:
        shortName := "Mär"
    Case 4:
        shortName := "Apr"
    Case 5:
        shortName := "Mai"
    Case 6:
        shortName := "Jun"
    Case 7:
        shortName := "Jul"
    Case 8:
        shortName := "Aug"
    Case 9:
        shortName := "Sep"
    Case 10:
        shortName := "Okt"
    Case 11:
        shortName := "Nov"
    Case 12:
        shortName := "Dez";

Replace(ToText(cdate({DATEFIELD}), "dd.#.yyyy"), "#", shortName)