inarray,sql公式解析错误

0 = if(len(sql("HS_BDMS","select (cast(sbid as varchar(36))+debug_zrr_id) as ch from HS_BDMS.dbo.dq_workload_ma", 1))=0, array(0),inarray(a2+l2, sql("HS_BDMS","select (cast(sbid as varchar(36))+debug_zrr_id) as ch from HS_BDMS.dbo.dq_workload_ma", 1)))

公式本来是好用的,但是今天突然就出错了。


两个sql语句都可以正确执行,而且公式是合法的。


公式是为了防止重复记录再次写入数据库。


sbid是uuid,debu_zrr_id是varchar。


使用a2+l2进行拼接字符串作为唯一码和数据库表ma中sbid+debug_zrr_id拼串进行对比,如果新纪录存在于ma表,则inarray函数会返回一个非零数字,与0比对就可以进行检验。


FineReport 2pAcRMB 发布于 2019-4-12 10:56
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
2pAcRMBLv0见习互助
发布于2019-4-17 11:21

是因为l2单元格没有刷新到判断逻辑中,所以公式出了问题。

也不算是问题吧,只能说是finereport自身的一个bug。

  • yinli1989 yinli1989 我在数据校验里用了这个公式inarray(concatenate(trim(D3), trim(E3), trim(F3), trim(G3)),diz_id.group(id_name))=0,昨天可以正常判断,今天就报公式解析错误,这也是帆软的BUG吗?
    2020-06-22 17:38 
最佳回答
0
firegunzxLv6高级互助
发布于2019-4-12 12:04

检查 a2+l2,应该有不是字符串或非法的情况。

  • 2pAcRMB 2pAcRMB(提问者) 并不是这样的。 是因为l2单元格没有刷新到判断逻辑中,所以公式出了问题。 也不算是问题吧,只能说是finereport自身的一个bug。
    2019-04-17 11:21 
最佳回答
0
13452347692Lv4见习互助
发布于2019-12-20 12:27(编辑于 2019-12-20 18:32)

我也遇到这个问题了,逻辑是检查编码有没有在系统维护过,没有维护过就提示去另外的填报页面维护,昨天我测试的时候还能正常校验,今天就报公式解析错误。心累

找到原因了。INARRAY(C2,[ds1.select(mat_no,sup_no=$fine_username)]) > 0,加[]

  • yinli1989 yinli1989 你好,后续是怎么解决的,我也是昨天inarray(concatenate(trim(D3), trim(E3), trim(F3), trim(G3)),diz_id.group(id_name))>=1正常校验,今天就报公式解析错误。
    2020-06-12 18:08 
  • 用户b8323016 用户b8323016 回复 yinli1989 现在还是这样。。。。
    2020-07-10 22:23 
  • monkey_ch monkey_ch 哇,加[] 果然就可以了。 可以问问是怎么找到 这个地方的吗。公式使用介绍里都没讲这个点
    2020-12-24 22:11 
  • 2关注人数
  • 1125浏览人数
  • 最后回答于:2019-12-20 18:32
    请选择关闭问题的原因
    确定 取消
    返回顶部