以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  修改了只读数据 是个什么错误啊  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95701)

--  作者:instone
--  发布时间:2017/2/2 16:24:00
--  修改了只读数据 是个什么错误啊
请教,出来红色!号,把鼠标放在!上,显示文字是“修改了只读数据”,

不明白这是出的什么错误呢,既然是只读数据,为何还能被修改,啥意思啊,

谢谢解答!


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/2/2 16:43:00
--  
基本是数据库问题,你数据库那里是否设置了索引键?
--  作者:有点色
--  发布时间:2017/2/2 16:46:00
--  

你做什么操作出现此问题?多表连接查询?

 

多表查询往往用主键(如ID)做连接,这个字段存在在多个表中(主键或外键)

你的查询如果要返回这个字段,注意一下他的来源。


--  作者:instone
--  发布时间:2017/2/3 9:42:00
--  
是多表查询,我发现是使用了case when 的字段会出现报错,请教是这样使用有错误还是查询表不支持case when 这种功能啊?

查询语句如下: 

s e l e c t   b.工厂,b.物料,b.物料描述,b.基本数量,b.BUn as 单位,b.组件 ,b.组件描述,b.数量 ,b.Un as 组件单位,b.MRP_组,m.物料类型,(case when m.物料类型=\'ROH\' then  b.数量/b.基本数量 end ) as 原料克重 ,(case when m.物料类型=\'ROH\' then  m.价格/m.价格单位 end ) as 原料克价,(case when m.物料类型=\'Z001\' then  m.价格/m.价格单位 end ) as 包辅单价,(case when m.物料类型=\'ROH\' then  m.价格/m.价格单位 end ) * b.数量 / b.基本数量 as 物料原料成本,(case when m.物料类型=\'Z001\' then  m.价格/m.价格单位 end ) * b.数量 / b.基本数量 as 物料包辅成本,r.加工周期,r.机器折旧 as 机折系数 ,r.电  as 用电系数,(case when len(b.组件)>=13 and b.mrp_组=\'注塑半成品\' then  bmj.模具编号 when len(b.组件)<13 and b.mrp_组=\'注塑半成品\' then  bmj1.模具编号 else \'\' end ) as 模具编号 ,(case when len(b.组件)>=13 and b.mrp_组=\'注塑半成品\' then  bmj.模具名称 when len(b.组件)<13 and b.mrp_组=\'注塑半成品\' then  bmj1.模具名称 else \'\' end ) as 模具名称 ,(case when len(b.组件)>=13 and b.mrp_组=\'注塑半成品\' then  bmj.模穴数 when len(b.组件)<13 and b.mrp_组=\'注塑半成品\' then  bmj1.模穴数 else 0 end )  as 模穴数
,(case when len(b.组件)>=13 and b.mrp_组=\'注塑半成品\' then  zmj.原始值 when len(b.组件)<13 and b.mrp_组=\'注塑半成品\' then  zmj1.原始值 else 0 end )  as 模具原值
 ,b._identify ,b._locked from {sapbom} b

  left join {sapmaterial} m on b.工厂=m.工厂 and b.组件=m.物料
  left join {sapprdroute} r on b.工厂=r.工厂 and b.组件=r.物料
  left join {sap半成品模具} bmj on  substring(b.组件,1,8)=bmj.半成品编码
  left join {sap半成品模具} bmj1 on  substring(b.组件,1,4)= bmj1.半成品编码
  left join {sap模具原值}   zmj on bmj.模具编号=zmj.模具编号
  left join {sap模具原值}   zmj1 on bmj1.模具编号=zmj1.模具编号

where  m.物料类型=\'HALB\'



图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/2/3 9:48:00
--  

1、先把多个case when语句删除省下一个;

 

2、然后测试。把列名改一下,把case when的公式改一下,比如 除数为空值或者0的情况要避免。


--  作者:instone
--  发布时间:2017/2/5 8:22:00
--  
原因找到了,是连接右表有多关键字重复行导致,改用s elect ... group by  先把右表做成唯一,就行了,非常感谢!