【问题标题】:SSRS- Report parameter not valid for its type- input parameter, no default/available valueSSRS-报告参数对其类型输入参数无效,无默认/可用值
【发布时间】:2016-02-03 23:22:19
【问题描述】:

我正在尝试创建 SSRS 报告,我将在其中输入 CombinedAccountNumber - 作为报告中的输入参数,没有默认/可用值。我在报告中将数据类型提供为 INT,但在数据类型中它是 nvarchar。

当我运行报告时,它会抛出错误:为报告参数 CombinedAccountNumber 提供的值对其类型无效。 谁能帮助我在哪里出错,在 SSRS 报告中添加参数时是否需要修复查询或其他内容?

这是我在数据集部分使用的查询:-

SELECT
        [QAACTO]
       ,[QAACTA]
       ,[QACKDG]
       ,substring([QACPHA],2,4) as 'Alternate Phone Area'
       ,substring([QACPHP],2,4) as 'Alt Phone Prefix'
      ,[QACPHN] as 'Alt Phone Number'
      FROM [MOCK124].[dbo].[FPQA]
      where 
      ((REPLACE(LTRIM(REPLACE([QAACTO],'0', ' ')),' ', '0'))
      +
      (REPLACE(LTRIM(REPLACE([QAACTA],'0',' ')),' ','0'))
       +
      ([QACKDG])) = @CombinedAccountNumber

【问题讨论】:

    标签: sql reporting-services parameter-passing type-conversion ssrs-2008-r2


    【解决方案1】:

    您的 WHERE 子句正在将字段转换为字符串。你不是合并字段而不是添加它们吗?

     where 
          ((REPLACE(LTRIM(REPLACE([QAACTO],'0', ' ')),' ', '0'))
          +
          (REPLACE(LTRIM(REPLACE([QAACTA],'0',' ')),' ','0'))
           +
          ([QACKDG])) = @CombinedAccountNumber
    

    要么转换它,要么将你的参数设置为 TEXT。我认为 text 参数会更好,因为您的数字对于 INT 来说可能太大了。

    【讨论】:

    • 将参数设置为 TEXT 会引发错误:数据集的查询执行失败。 nvarchar 附近的语法不正确。必须声明标量变量“@CombinedAccountNumber” 请注意,所有字段在数据库中都保存为 nvarchar。请让我知道我该怎么办?
    • 哪里有 nVarChar?你的参数是 SQL 吗?我以为它在 SSRS 中,但您将其设置为使用 INTEGER 而不是文本。
    • 我的意思是表(DB)中的所有字段都保存为nvarchar,但报告参数@CombinedAccountNumber 设置为INT。我尝试将其更改为 TEXT,两者都抛出错误。我在想这可能是因为表中的字段是 nvarchar 并且报告参数数据类型不匹配?还有什么我应该尝试的吗? TIA
    • 如果参数是 TEXT 并且您没有使用多值参数,我看不出您会收到什么错误。也许尝试将您的字段转换为 nVarChar - WHERE CAST( (Replace... AS nVarChar(1000))
    【解决方案2】:

    通过使用与公用表表达式相同的查询已解决该问题,它解决了该问题,但是是的,TEXT 格式的报告参数。 非常感谢您的意见:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多