You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastReport 6.9表单字符串转整数方法及查询变量失效解决

报表表单变量类型转换问题

我正在创建报表,填写表单时变量无法正常工作,查询未返回任何结果。推测传入的值是字符串类型,而查询需要整数类型,请问如何转换类型?

表单界面

表单

查询配置界面

查询

所用SQL代码

SELECT  TORDEMPROD.NUM_CHAVE           AS "Chave da Ordem"
       ,Trim(TORDEMPROD.COD_EMPRESA)   AS "Código da Empresa"
       ,TEMPRESA.DES_RAZSOCIAL         AS "Razão Social Empresa"
       ,TEMPRESA.DES_FANTASIA          AS "Fantasia Empresa"
       ,TORDEMPROD.COD_DOCOP           AS "Código do Documento"
       ,Trim(TORDEMPROD.NUM_ORDEMPROD) AS "Numero da Ordem"
       ,TORDEMPROD.TIP_PRODUTO         AS "Tipo Produto"
       ,TORDEMPROD.COD_PRODUTO         AS "Código Produto"
       ,TPRODUTO.DES_PRODUTO           AS "Descricao do Produto"
       ,TPRODUTO.DES_COMPLMAT          AS "Complementar do Produto"
       ,TORDEMPROD.DES_OBS
       ,CASE WHEN TORDEMPROD.STA_PLANEJAMENTO = 1 THEN 'Planejado'
             WHEN TORDEMPROD.STA_PLANEJAMENTO = 2 THEN 'Firmado'
             WHEN TORDEMPROD.STA_PLANEJAMENTO = 2 THEN 'Simulado'
             WHEN TORDEMPROD.STA_PLANEJAMENTO = 4 THEN 'Firmado com Alteracao' END AS STAPLANEJAMENTO
       ,CASE WHEN TORDEMPROD.STA_ATENDIMENTO = 0 THEN 'Totalmente em Aberto'  WHEN TORDEMPROD.STA_ATENDIMENTO = 1 THEN 'Atendido Parcialmente'  WHEN TORDEMPROD.STA_ATENDIMENTO = 2 THEN 'Atendido Totalmente' END AS STATENDIMENTO
       ,TORDEMPROD.QTD_PRODUZIR
       ,TPRODUTO.SIG_UNIDADE
       ,TUNIDADE.DES_UNIDADE
       ,TORDEMPROD.DAT_NECESSARIA
       ,TMRP.COD_DOCMRP
       ,TMRP.NUM_MRP
       ,TMRP.DES_MRP
FROM TORDEMPROD
INNER JOIN TEMPRESA
ON TEMPRESA.COD_EMPRESA = TORDEMPROD.COD_EMPRESA
INNER JOIN TPRODUTO
ON TPRODUTO.TIP_PRODUTO = TORDEMPROD.TIP_PRODUTO AND TPRODUTO.COD_PRODUTO = TORDEMPROD.COD_PRODUTO AND TPRODUTO.COD_EMPRESA = TORDEMPROD.COD_EMPRESA
INNER JOIN TUNIDADE
ON TPRODUTO.SIG_UNIDADE = TUNIDADE.SIG_UNIDADE
INNER JOIN TMRP
ON TORDEMPROD.COD_EMPRESA = TMRP.COD_EMPRESA AND TORDEMPROD.NUM_CHMRP = TMRP.NUM_CHAVE
WHERE TORDEMPROD.NUM_ORDEMPROD = :NUM_CHAVEOP

类型转换方案

根据你使用的数据库类型,选择对应的转换方式:

  • MySQL/MariaDB:使用CAST或CONVERT函数
    WHERE TORDEMPROD.NUM_ORDEMPROD = CAST(:NUM_CHAVEOP AS UNSIGNED)
    -- 或者
    WHERE TORDEMPROD.NUM_ORDEMPROD = CONVERT(:NUM_CHAVEOP, UNSIGNED)
    
  • Oracle:使用TO_NUMBER函数
    WHERE TORDEMPROD.NUM_ORDEMPROD = TO_NUMBER(:NUM_CHAVEOP)
    
  • SQL Server:使用CAST或TRY_CAST(转换失败时返回NULL,避免报错)
    WHERE TORDEMPROD.NUM_ORDEMPROD = CAST(:NUM_CHAVEOP AS INT)
    -- 容错版
    WHERE TORDEMPROD.NUM_ORDEMPROD = TRY_CAST(:NUM_CHAVEOP AS INT)
    
  • PostgreSQL:使用类型转换运算符::INT或CAST函数
    WHERE TORDEMPROD.NUM_ORDEMPROD = :NUM_CHAVEOP::INT
    -- 或者
    WHERE TORDEMPROD.NUM_ORDEMPROD = CAST(:NUM_CHAVEOP AS INT)
    

另外,更优的方式是直接在报表工具的参数设置里,将NUM_CHAVEOP的参数类型设置为整数,从源头解决类型不匹配问题。

内容的提问来源于stack exchange,提问作者buzinaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 06:17:09