0

我在 SQL 服务器上的一个表中的时间列的格式在从 HH:mm 上传到 HH:mm:ss 时发生了更改。首先,有什么方法可以首先防止这种转换?其次,既然它是那种格式,我怎样才能让它简单地显示为 HH:mm?我尝试了以下方法无济于事:

  • 将自定义文本框格式设置为 HH:mm
  • 将文本框中的时间格式设置为短时间,即。下午 1:30
  • 将文本框值设置为表达式 =LEFT(Fields!Time.Value,5)
  • 将文本框值设置为表达式 =LEFT(Fields!Time.Value,Len(Fields!Time.Value)-3)

前两次格式化尝试仍然返回 HH:mm:ss 并且使用 Left 函数返回 #Error。

任何想法为什么会发生这种情况以及如何解决这个问题?

谢谢

4

2 回答 2

3

有两种方法,具体取决于您的字段在报表中的设置方式。您要做的第一件事是在报表生成器中加载报表。

首先,我要确保属性窗格可见,因此在功能区的视图选项卡组下,确保将属性窗格设置为可见:

查看显示报表生成器窗格复选框的选项卡组

格式化文本框中的字段/表达式值

如果该字段位于包含多个表达式的文本框中,如下所示,其中 [DateTimeField] 是数据集中的实际字段:

带有文本的文本框的图像

然后您将选择字段项本身:

选择名为 DateTimeField 的字段

然后,在属性窗格中,您应该会看到“格式”设置。设置格式为“hh:mm”,如图:

显示字段 DateTimeField 的格式属性的报告构建器窗口

格式化整个文本框

如果报表生成器中的字段如下所示,您可以在整个文本框上设置格式:

报告中仅包含单个字段或表达式的单元格的图像

选择文本框或单元格:

选中的单元格

在属性窗格中,您可以将 Format 属性设置为“hh:mm”以获取项目所需的格式:

显示属性窗格和格式属性集的报告生成器窗口

如果一切都失败了

将数据转换为您知道 Report Builder 可以格式化的数据类型,例如 Date 类型,然后在那里对其进行格式化。为此,您需要右键单击相关字段并选择“表达式”:

右键单击 DateTimeField 字段并显示 Expression 菜单项的上下文菜单

然后,您需要设置表达式以将其包装在 CDate 转换函数中,然后在 Format 函数中,如下所示:

表达式面板显示 DateTimeField 表达式被强制转换为 Date 类型,然后被格式化。

格式化报告中的其他数据

有关有效格式的详细信息,请参阅 Microsoft 的 MSDN 库中的以下四个页面:

  1. 标准数字格式字符串
  2. 自定义数字格式字符串
  3. 标准日期和时间格式字符串
  4. 自定义日期和时间格式字符串
于 2013-07-11T19:15:39.617 回答
1

假设您有一个实际的 TIME 数据类型,SSRS 似乎无法正确地将格式应用于该数据类型。在某些情况下,您将看不到格式化,而在其他情况下(例如使用 SSDT BI),您将收到如下实际错误:

[rsInvalidFormatString] The Format value for the textrun ‘CurrentTime_AS_TIME.Paragraphs[0].TextRuns[0]’ is not valid. Input string was not in a correct format.

解决这个问题的选项是将 TIME 值转换为查询中的日期时间,或将字段设置为如下表达式:

=Today + Fields!CurrentTime_AS_TIME.Value

然后,两者都应该允许您使用 HH:mm 格式正确格式化该字段。

从这里引用:在 Reporting Services 2008 中显示时间

于 2013-07-11T19:59:12.280 回答