用一个sql查出来的数据绑定到第三方控件janus gridex control 2.0,就是一个相当于DataGrid的控件,在修改好后,换行更新时,报错“多步操作产生错误,请检查每一步状态的值!”,我调了下,发现是sql语句不同造成的,我现有的sql为
select a.orderid,a.entity,a.contactid,a.ordertype,b.num
from orderhist a,(select ordertype,count(*) as num from orderhist group by ordertype) b
where a.ordertype=b.ordertype and order by b.num
这个sql的意思就是查出来的结果要按照ordertype 进行分组,同时还要按照相同ordertype的数量多少进行排序,即一个ordertype类型较少的要一起排在前面,多的排在后面。
如果不要此排序功能,仅为sql=select orderid,entity,contactid,ordertype from orderhist,就不存在上述报错。
也就是上一个SQL查询到的数据集不让我更新。我这里必须要有排序功能呀,高手们给个解决办法呀!

解决方案 »

  1.   

    select a.orderid,a.entity,a.contactid,a.ordertype,b.num 
    from orderhist a,(select ordertype,count(*) as num from orderhist group by ordertype) b 
    where a.ordertype=b.ordertype 
    order by b.num 去掉order 前面的and
      

  2.   

    哦,and是我抄错了的,不是这个问题
      

  3.   

    我现在有点怀疑通过ADO绑定方式更新的,其SQL只能是from 具体表,不能from一个子查询。但是没有子查询,上面的排序功能又不好实现。
      

  4.   

    测试了SQL语句,在SQL Server的查询分析器中执行没有问题。你的是什么数据库?不会是Access吧?没有在Access中测试过。
      

  5.   

    不是SQL不能执行,而是用ADO绑定recordset到控件方式,当recordset.update时,是要更新到数据库的,这时就报提到的错。数据库是ORACLE
      

  6.   

    recordset.update时,是要更新到数据库的,这时就报提到的错你是否输入了非法数据格式到某个字段,如输入“abc”到“日期”字段!
      

  7.   


    recordset.update一次只能更新一条记录,如果一次更新多条记录就会出现这个错误,可以用recordset.updatebatch替换
      

  8.   

    经楼上的各位指点,最终找到症结所在,就是查询SQL存在多表连接,子查询等,造成用绑定ADO recordset的方式不让我更新
    那么有没有改下SQL,即实现排序要求又能够绑定更新的,如果让我取消绑定方式,通过写SQL更新,那我的工作量就大了
      

  9.   

    也可以用adodb聯接,不要綁定. 寫代碼顯示數據.
    插入時用insert 語句, 直接將數據寫入數據庫
      

  10.   

    将你现在的 b.num  增加到表中作为冗余字段,查询前用先更新一下。这样改动量最小。