编写了一个过程A,用来对字段进行更新操作,逐次调用A的时候运行正常。当连续调用A的时候,比如连续更新几个字段时就会出现错误无法更新;当前被锁定”!请教高手这是为什么?  

解决方案 »

  1.   

    procedure a(fieldname:string;control1,control2:tedit);
    var
     condition:string;
      adoquery_jtxmdjb:tadoquery;
      x,y:string;
      begin
      y:=fieldname;
      x:=control1.text;
     condition:='xmlxbh='''+control2.text+'''';
      adoquery_jtxmdjb:=Tadoquery.Create(nil); 
      with adoquery_jtxmdjb do
       begin
        adoquery_jtxmdjb.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\科研申报系统3.0\kysbdb.mdb;Persist Security Info=False';  //记得加连接
        sql.clear;
        sql.add('update xmzaiyan set '+y+'='+quotedstr(x)+' where '+condition+'');
       execsql;
       end;
     end;
    调用
    a('xmfzr1_xb',edit_xmfzr1_xb,edit_xmpzh); 
    a('xmfzr1_csny',edit_xmfzr1_csny,edit_xmpzh); 
    a('xmfzr1_zy',edit_xmfzr1_zy,edit_xmpzh); 
    a('xmfzr1_xl',edit_xmfzr1_xl,edit_xmpzh); 
    a('xmfzr1_zc',edit_xmfzr1_zc,edit_xmpzh); 
    a('xmfzr1_lxdh',edit_xmfzr1_lxdh,edit_xmpzh); 
    出现上述错误,如果只执行a('xmfzr1_xb',edit_xmfzr1_xb,edit_xmpzh); 时是好的,单步执行也全部可以。为什么?是不是对数据库表的访问冲突?