sql := 'select * from tabc';
        sql := sql + ' where 1=1 '  ;
        sql := sql + ' and name = '+quotedstr(tmp1);
        sql := sql + ' and other = '+quotedstr(tmp2);
        ADOQuery22.SQL.Clear;
        ADOQuery22.Close;
        ADOQuery22.SQL.Add(sql) ;
        ADOQuery22.Open;        if pos('_xxx',ADOQuery22.fieldByName('name').AsString) = 0 then
            tmp := ADOQuery22.fieldByName('name').AsString + '_xxx'
        else
            tmp := ADOQuery22.fieldByName('name').AsString ;        ADOQuery22.Fields.FieldByName('name').Value :=  tmp; //到这里提示错误adoquery22:dataset not in edit or insert mode.

解决方案 »

  1.   

    ADOQuery22.Fields.FieldByName('name').Value :=  tmp; //到这里提示错误
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ADOQuery22.edit;
    ADOQuery22.Fields.FieldByName('name').Value :=  tmp; //到这里提示错误
      

  2.   

    ADOQuery22.Fields.FieldByName('name').Value :=  tmp; //到这里提示错误
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ADOQuery22.edit;
    ADOQuery22.Fields.FieldByName('name').Value :=  tmp; //到这里提示错误
    ADOQuery22.post;
      

  3.   

    我post了,但是提示表或视图不存在??怪了。
      

  4.   

    哦,少写了东西‘sql := 'select * from tabc@mydblink';
    是通过远程连接的。
      

  5.   

    难道通过远程连接的只能用sql再update一次?