ERP系统触发器,字符转换数值,但是字符里面含有“+”不转换。

纠结取名 2018-04-07 11:19:16
ERP系统触发器,如果符合某一个条件(freeItem1='面计'或者freeItem1='足计'),字符转换数值,然后但是字符里面含有“+”不转换?
哪里出问题?
字符型freeItem1=面计、足计
字符型freeItem2=长(1、2、3、4、5……)
字符型freeItem3=宽(1、2、3、4、5……)【可能存在100+200,但是如果像这种字符含有“+”,那就不计算公式】
(1)数值型priuserdefdecm1=长*宽(当freeItem1=‘面计’)
(2)数值型priuserdefdecm1=(长+60)*(宽+60)(当freeItem1=‘足计’)
表SA_SaleOrder_b是销售订单表体,id作为区分唯一性。

create TRIGGER [dbo].[SA_SaleOrder_b_自由项转数值]
ON [dbo].[SA_SaleOrder_b]
FOR insert,update
AS
begin
declare @id int
declare @freeItem1 varchar(120)
declare @freeItem2 varchar(120)
declare @freeItem3 varchar(120)
select @id=id from inserted
if UPDATE(freeItem1)
update AA_BOM set priuserdefdecm1=CONVERT(int, AA_BOM.freeItem2)*CONVERT(int, AA_BOM.freeItem3) where freeItem3 not like '%[+]%' and id=@id and freeItem1='面计'
update AA_BOM set priuserdefdecm1=(CONVERT(int, AA_BOM.freeItem2)+60)*(CONVERT(int, AA_BOM.freeItem3)+60) where freeItem3 not like '%[+]%' and id=@id and freeItem1='足计'
end
...全文
381 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
纠结取名 2018-04-08
  • 打赏
  • 举报
回复
freeItem3(宽)本身是字符,一般都是(1、2、3、4、5、6、7……,阿拉伯数字)所以通过触发器将它转为数值,但是也可能存在(宽)100+200、或者150+210……等等,(总之会存在里面还有“+”这样的符号),因为ERP系统存在某种自制生产产品的特殊性。如果freeItem3遇到有“+”这样的符号,那这个公式CONVERT(int, AA_BOM.freeItem2)*CONVERT(int, AA_BOM.freeItem3)【长*宽,不计算】和另外一个公式(CONVERT(int, AA_BOM.freeItem2)+60)*(CONVERT(int, AA_BOM.freeItem3)+60)【(长+60)*(宽+60),不计算】。也就是你说的遇到“100+200”系统中止,公式布局算,遇到阿拉伯数字就可以
纠结取名 2018-04-08
  • 打赏
  • 举报
回复
某种自制生产产品的特殊性,100+200,你就可以理解为“边宽+体宽”,只有某种产品才有,其他产品都是阿拉伯数字
纠结取名 2018-04-08
  • 打赏
  • 举报
回复
上面的对话中:公式布局算,打错字,应该是公式不计算
二月十六 2018-04-08
  • 打赏
  • 举报
回复
freeItem3存的什么样的值?是“100+200”这样的字符串吗?
纠结取名 2018-04-08
  • 打赏
  • 举报
回复
第一次写触发器,不是很懂,希望各位大侠指点指点
xiaoxiangqing 2018-04-08
  • 打赏
  • 举报
回复
100+200这种,只能自己写一个函数来处理
二月十六 2018-04-08
  • 打赏
  • 举报
回复
如果freeItem3含有“100+200”的这种字符串转换不了,楼主可以试试动态拼接语句转换。 另外楼主的触发器定义的变量都没用着

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧