我将假设从数据库返回的数据是基于文本的(文本、varchar 或 nvarchar),并且其中包含一些不寻常的字符,这可能会导致这种情况。
在这种情况下,您可以使用如下所示的 UDF 在报表运行时清理文本。 (调整它以做任何你需要的事情;如果你想在输出中保留回车和换行,请删除 char 10 和 13 的替换)
CREATE FUNCTION [dbo].[udf_CleanText]
(
@dx text
)
RETURNS varchar(max)
AS
BEGIN
DECLARE @cdx varchar(max) = @dx
SELECT @cdx = REPLACE(@cdx, char(20), '')
SELECT @cdx = REPLACE(@cdx, char(21), '')
SELECT @cdx = REPLACE(@cdx, char(13), '')
SELECT @cdx = REPLACE(@cdx, char(10), '')
SELECT @cdx = REPLACE(@cdx, char(18), '')
SELECT @cdx = REPLACE(@cdx, char(17), '')
SELECT @cdx = REPLACE(@cdx, char(22), '')
RETURN @cdx
END
要使用它,请将其添加到报表的查询中。
SELECT dbo.udf_CleanText(TextField) AS TextFieldClean
FROM tblTable
如果由于报告中的某些计算而发生这种情况,例如返回 NaN 或 Infinity 的表达式,那么您需要更改表达式来处理它。
在组合中添加IIF 以检查意外值可以提供帮助。下面是一些例子:
SSRS Formula or expression to change NaN to 0
NaN and Infinity values in SSRS