单据转换使用#sql_val的一个报错

众所周知,单据转换规则是可以使用sql的,这样就避免了开发自定义公式的繁琐步骤。
#sql_val(select ....)
今天碰到一个很奇怪的问题,就是
formula_result  = #sql_val("/*dialect*/select  '付'||replace(t2.FName_l2,'供应商','')||'款'    from T_BD_SupplierCompanyInfo t1 inner join T_BD_KAClassfication t2 on t2.FID=t1.FAccountClassID where 1=1  and t1.FComOrgID='" +  OtherBillInfo.company.id  + "' and t1.FSupplierID='" +   OtherBillInfo.asstActID  +  "'");
sql单独在navicate或者查询分析器中执行都没问题
但是偏偏在单据转换中报错
在日志中发现是缺失右括号,因此怀疑是替换字符为''的问题
然后改成了'a',成功,
于是上面的sql就变成了
formula_result  = #sql_val("/*dialect*/select  '付'||replace(t2.FName_l2,'供应商','款')    from T_BD_SupplierCompanyInfo t1 inner join T_BD_KAClassfication t2 on t2.FID=t1.FAccountClassID where 1=1  and t1.FComOrgID='" +  OtherBillInfo.company.id  + "' and t1.FSupplierID='" +   OtherBillInfo.asstActID  +  "'");
总结一句话:应该命令避免替换字符串为空字符

 

posted @ 2022-05-19 14:50  liangda  阅读(56)  评论(0)    收藏  举报