procedure Tfrmzysgzj.btQDClick(Sender: TObject);
var
 gxjh,gxkgrq:string;
begin
  gxjh := cbJH.Text;
  gxkgrq := meKGRQ.Text;
  if trim(gxjh) <> '' then
  begin
    with OraTable1 do
    begin
      try
        Close;
        SQL.Text := 'Select * from DDA02';       
        filter := 'jh=''' + gxjh + ''' AND KGRQ<>''' + GXKGRQ + '''';
        filtered := true;
        //SQL.Text:=format('Select * from DDA02 where jh=''%s'' and kgrq=''%s''' ,[cbJH.Text,mekgrq.Text]); 
        open;
        if not eof then
        begin
          first;
          while not eof do
          begin
            OraTable1.Close;
          end;
        end
        else
        begin
          Close;
          SQL.Text:=format('Select * from DDA02 where jh=''%s'' and kgrq=''%s''' ,[cbJH.Text,mekgrq.Text]);
          open;
          if (EOF) and (GXJH <> '') then
          begin //更新井号
            append;
            Oratable1['jh'] := cbJH.text;
            Oratable1['kgrq'] := strtodate(meKGRQ.text);
            Oratable1['jb'] := jbdm;
            Oratable1['sgdw'] := cbSGDW.text;
            SGDW := cbSGDW.Text;
            Oratable1['sgdwdm'] := sgdwdm1;
            Oratable1['rzh1'] := EtGGRZ.Text;
            Oratable1['rzh2'] := EtSGRZ.Text;
            post;
          end
          else
          begin
            edit;
            Oratable1['jb'] := jbdm;
            Oratable1['sgdw'] := cbSGDW.Text;
            sgdw := cbSGDW.Text;
            Oratable1['sgdwdm'] := sgdwdm1;
            Oratable1['rzh1'] := EtGGRZ.Text;
            Oratable1['rzh2'] := EtSGRZ.Text;
            post;
          end;
        end;
      except
        messagedlg('错误的开工日期!', mtinformation, [mbok], 0);
      end;
      Oratable1.Close;
    end;
    with OraTable1 do
    begin //认证号库
      Close;
      SQL.Text := 'Select * from RZHK';
      open;
      if not eof then
        edit
      else
        append;
      OraTable1['rzh1'] := EtGGRZ.Text;
      OraTable1['rzh2'] := EtSGRZ.Text;
      post;
    end;
    rzh1 := EtGGRZ.text;
    RZH2 := EtSGRZ.TEXT;
    GroupBox5.SetFocus;
    CkbTSJ.Enabled := True;
    Oratable1.Close;
  end;
end;

解决方案 »

  1.   

    从错误提示来看,可能是oratable的readonly被设置成了True;改为false试试
      

  2.   

    read-only属性是false。还有就是即使我改为用OraQuery也是如此,是不是代码有问题?大部分人提到的query的RequestLive属性,在oraquery里根本没有呀?
      

  3.   

    在数据提交时,最好使用另外的ADO,这样可以提高效率,而且可以避免因ADO频繁操作而引起的数据库锁定记录问题。试试新增一个ADO,用它来更新数据。
      

  4.   

    不是很理解什么意思?这个odac组件跟ADO差不多吗?
      

  5.   

    在网上查到说用oratable或者是oraquery配合oraupdatesql一起使用,具体的话语句该怎么写呢?
    用updatesql自动生成的语句怎么调用呀。谁能给个详细点的说明。最后由具体的代码。