update 会员表 set moneys=moneys+5000 where id in(select 会员id from 部门 where 类型=经理)
....以上语句没有问题,问题出在有时执行时moneys结果不正确,也不是每次执行都有问题,跟踪过一次出错
update更新了11条记录,有8条正确,3条错误,不知道有没有碰到过这种错误?这里先祝大伙新年快乐,牛年大吉,100分,跟贴都有份,当然解决问题的占大头

解决方案 »

  1.   

    改成这样试试:
    update 会员表 set moneys=case isnumeric(moneys) when 1 then moneys+5000 else 5000 end 
    where id in(select 会员id from 部门 where 类型=经理) 
      

  2.   

    moneys为floatllj0209013 看看3条错误ID 有没有被锁住. 
    如何查看被锁,其它程序我都是没有加锁的,我是用vb进行定时结算的,应当都没有并发的问题update 会员表 set moneys=moneys+5000 where id in(select 会员id from 部门 where 类型=经理);
    在执行这个语句的同时我都会加一个添加bank表的记录,就像银行里的记录
      

  3.   

    有没有可能是vb执行conn.execute sqls,上一条记录没有执行完就执行了下一条sqls,正好两条语句中又有同一会员,所以造成moneys取了旧的记录,因为我看bank表记录反应出来的        时间            收入   支出      余额
    2009-1-20 9:57:56   217.5         21250.45  
    2009-1-20 9:59:44   70            21320.45  
    2009-1-20 9:59:59   2.81          21253.27 
      

  4.   

    update更新了11条记录,有8条正确,3条错误,不知道有没有碰到过这种错误? ------------------
    什么错误?
      

  5.   

    我有点头绪了,时间控件没加上timer1.enabled=false
    造成同时触发,给大家散分