我用delphi+Access 用如下程序段,希望可以修改表rwd中的ysc字段的值,ysc字段值为长整形,
    q.Close;
    q.SQL.Clear;
SQL:='select ysc from rwd where rwid='''+m+''' and gg='''+n+''' and dj='''+l+'''';
    q.SQL.Add(sql) ;
    q.open;
     q.Edit;
       q['ysc']:=xs ;//xs为整形变量
         q.post;
系统提示错误,key column information is insufficient or incorrect.Too many rows were affected by update.
为什么有这种错误呢?

解决方案 »

  1.   

    select的结果返回行数太多!!
      

  2.   

    把SQL语句在ACCESS中执行,应该是返回不止一条记录可以使用SQL中的Update来更新数据,
      

  3.   

    改成sSQL := ' Update rwd Set yes = ' + IntToStr(xs)
      

  4.   

    核心的问题在于数据库表rwd中存在 ysc 内容相同记录,所以,对于你的客户端来说,你只取了 ysc 字段内容,那么在更新记录的时候,不知道定位何处,也就是后台不知道在那条记录上修改。
    解决方法:
    1、'select ysc from rwd where rwid='''+m+''' and gg='''+n+''' and dj='''+l+'''';
     把ysc替换成*,或者ysc+主键字段。
    2、直接用update语句。
     sql := 'update rwd set ysc='+IntToStr(xs)+' where rwid='''+m+''' and gg=......'
      

  5.   

    问题解决,谢谢: lynmison(菻梓) !高人呀!深刻!