SSRS 2008参数获取nvarchar而不是varchar

时间:2011-03-02 16:54:37

标签: types ssrs-2008

我在SQL Server 2008中创建了三个表,所有表都带有

Code char(1) not null,
Description varchar(50)

然后是三个sprocs,全都是

create name_menu as
begin
set nocount on;
select Code,
       Code + ' - ' Description as Description
  from name;
end;

(名称是变化的部分)

将每个sproc添加到SSRS 2008报告中作为数据集。然后将每个数据集添加为参数,代码为值,描述为标签

在报告中,两个菜单看起来像预期的那样,但其中一个菜单只显示代码,' - '和描述的第一个字母。如果我将参数值作为文本框添加到报表中,则描述部分具有尝试在ASCII字段中显示UTF-16小端的典型“框”。

我搜索了报告的XML,发现所有非数字数据类型都是String或System.String

我检查了

SELECT inf...schema.columns where DATATYPE = 'NVARCHAR'

......并且没有。

我删除了sproc并再次运行了create语句,然后告诉SSRS刷新字段。

旧版本的SSRS用于缓存数据,有时无法刷新,因此我查找要删除的缓存文件。没找到。

我应该能够来投射结果,但我不应该拥有。 (并告诉“你不能那样做”并不会感到惊讶)

么?

2 个答案:

答案 0 :(得分:1)

(尴尬) 不知道它是怎么发生的,但不知何故,表中的原始文本被转换为UTF-16,并插回到表中,就像它是ASCII一样。所以每个其他角色都是空的。 SSRS试图将其实际存在的内容呈现为声称的数据类型。

由于我在看到SSRS中的伪造文本之前不久看到了表格中的正确文字,我再也没有看过那里。一位同事实际上找到了它。

它确实显示了两个错误:SSRS在文本框中做了正确的事情,将每个null显示为“框”但是在菜单中,它将第一个null视为字符串的结尾。 SSMS在select语句的结果网格中做了同样的事情。

答案 1 :(得分:0)

在DataSet对话框中,您可以看到参数和结果集数据类型。错误存在。

检查这些拼写错误或错误。或者在存储过程中,对话框“嗅探”以获取数据类型(但不太可能基于给定的信息)。

SSRS内部使用的内容无关紧要......