问题描述
用户参照合同录入第一阶段的执行单,保存时提示“语法错误或违反访问规则”,其他合同均正常,只有这张合同出现这个问题。
解决过程
语法错误或违反访问规则是SQL Server常见的报错,但其他合同均正常只有这张合同有问题,那么很大概率是有特殊字符导致语句执行出错,例如单引号。
由于录入合同执行单时只选择了阶段,未录入任何信息,因此如有错误也是来源于原始合同,所以后台查看原始合同数据表,看是否有问题:
用友U8中,与合同相关的主要数据表包括CM_Contract_B(生效态合同概要表)、CM_Contract_Item_B(生效态合同标的表)、CM_Contract_Caluse_B(生效态合同条款表 ),故按合同编号查询:
--查询合同概要表
select * from CM_Contract_B where strContractID ='HT191000069'
--查询合同标的表
select * from CM_Contract_Item_B where GUID='D1EDDFF3-36B2-46CB-ACB7-31A027EB9C3D'
--查询合同条款表
select * from CM_Contract_Caluse_B where GUID='D1EDDFF3-36B2-46CB-ACB7-31A027EB9C3D'
查询后发现,合同概要表无任何特殊字符,合同标的中,第40行的自定义项28存在单引号 ‘ :
要求用户对合同标的进行变更,去除这个特殊字符后,问题得到解决。