query.insert;运行后无法将数据集置成插入状态,并且插入一条空白记录,光标停在我原有的一条数据上,而不是插入一条空白记录让我编辑

解决方案 »

  1.   

     if btn3.Caption='添加' then
      begin
      qry_3.Insert;
        dbedit1.Text:='';
      dbedit2.Text:='';
       dbedit3.Text:='';
       dbedit4.Text:='';
       dbedit5.Text:='';
       dbedit6.Text:='';
       dbedit7.Text:='';
       dbedit8.Text:='';
       edt2.Text:='';
       edt5.Text:='';
      dbedit1.Enabled:=True;
      dbedit2.Enabled:=True;
       dbedit3.Enabled:=True;
       dbedit4.Enabled:=True;
       dbedit5.Enabled:=True;
       dbedit6.Enabled:=True;
       dbedit7.Enabled:=True;
       dbedit8.Enabled:=True;
       edt2.Enabled:=True;
       edt5.Enabled:=True;
       DBEdit1.SetFocus;
    刷新的代码如下
      qry_3.Close;
        qry_3.SQL.Clear;
         qry_3.sql.Text := 'select * from connector';
       qry_3.Open;
      qry_3.Filtered:=False;
    我要点第二次添加时才会插入空行
      

  2.   

    为什么不写SQL语句,谁交的 啊,喜欢用TABLE 或 QUERY 的 INSERT APPEND POST ,
    SQL := 'insert into xxx (a,b,c) values(%s,%s,%s)' 
    SQl := format(Sql, [edit1.text,Edit2.text,edit3.text])query.sql := Sql;
    Query.open
    写了个大概的意思,这样做难道不是很简单吗,界面也容易看。 
      

  3.   

    不明白楼主为什么对那些dbedit下那么狠的手,一般dbedit都是跟数据表直接挂钩的,你那些操作都是浪费,没有任何作用,还白白让CPU多费电。在刷新的代码里,最后一句qry_3.Filtered:=False;也是多余的,可以删掉。如果你想在数据表中插入一条数据,就用下面的语句:with qry_3 do
    begin
      close;
      SQL.Clear;
      SQL.Add('Select * from connector');
      Open;
      insert;
      edit;
      fieldbyname('aaa').asstring:=edit1.text;
      fieldbyname('bbb').asstring:=edit2.text;

      post;
    end;如果只是想插入一条空白记录,就把上面代码中的红色部分去掉
      

  4.   

    楼主变通一下,没必要那么复杂的。。 with qry_3 do
        begin
          close;
          sql.clear;
          sql.add('insert into 表名 (字段) values (值);
           prepare;
           execsql;
         end;
      

  5.   

    楼上的都明白,我是做了这步后才会出现以上情况
    procedure TForm1.grd_1CellClick(Column: TColumn);
    begin
    q1:=qry_3.fieldbyname('元器件ID').AsString;
      qry_3.Close;
      qry_3.SQL.Clear;
      qry_3.SQL.Add('select * from connector where 元器件ID='+q1);
     qry_3.open;
    end;
      

  6.   

    因为很多dbedit的内容存入,写sql太多
      

  7.   

    我除开加post外没别的方法了吗?
      

  8.   

    我可以加分,我把所有代码贴出来
    procedure TForm1.btn3Click(Sender: TObject);
    var
      a,b,c,d,e,f,g,gg,h,j:string;
    begin
      if btn3.Caption='添加' then
      begin
        qry_3.Close;
        qry_3.SQL.Clear;
        qry_3.SQL.Add('Select * from connector');
        qry_3.Open;
      qry_3.Insert;    dbedit1.Text:='';
      dbedit2.Text:='';
       dbedit3.Text:='';
       dbedit4.Text:='';
       dbedit5.Text:='';
       dbedit6.Text:='';
       dbedit7.Text:='';
       dbedit8.Text:='';
       edt2.Text:='';
       edt5.Text:='';
      dbedit1.Enabled:=True;
      dbedit2.Enabled:=True;
       dbedit3.Enabled:=True;
       dbedit4.Enabled:=True;
       dbedit5.Enabled:=True;
       dbedit6.Enabled:=True;
       dbedit7.Enabled:=True;
       dbedit8.Enabled:=True;
       edt2.Enabled:=True;
       edt5.Enabled:=True;
       DBEdit1.SetFocus;
       btn3.Caption:='保存';
       btn46.Caption:='取消';
       end
       else
       begin
        a:=dbedit1.Text;
      b:=dbedit2.Text;
      c:=dbedit3.Text;
      d:=dbedit4.Text;
      e:=dbedit5.Text;
      f:=dbedit6.Text;
      g:=edt5.Text;
      gg:=edt2.Text;
      h:=dbedit8.Text;
      j:=dbedit7.Text;
      if Application.MessageBox(PChar ('元器件名称='''+a+'''      型号规格='''+b+''''+#13#10+'批次号='''+c+'''      生产厂家='''+d+''''+#13#10+'质量等级='''+e+'''      产品合格证='''+f+''''+#13#10+'入库日期='''+gg+'''      有效存储期='''+g+''''+#13#10+'单价='''+h+'''      库存数量='''+j+''''+#13#10+'您确定添加以上信息?'), '提示', MB_OKCANCEL +
        MB_ICONINFORMATION) = IDOK then
      begin
         qry_3.UpdateBatch(arAll);
      dbedit1.Enabled:=False;
       dbedit2.Enabled:=False;
       dbedit3.Enabled:=False;
       dbedit4.Enabled:=False;
       dbedit5.Enabled:=False;
       dbedit6.Enabled:=False;
       dbedit7.Enabled:=False;
       edt2.Enabled:=False;
       edt5.Enabled:=False;
       dbedit8.Enabled:=False;
       btn3.Caption:='添加';
       btn46.Caption:='刷新';
      end
      else
      begin
       qry_3.Close;
        qry_3.SQL.Clear;
         qry_3.sql.Text := 'select * from connector';
       qry_3.Open;
     dbedit1.Enabled:=False;
       dbedit2.Enabled:=False;
       dbedit3.Enabled:=False;
       dbedit4.Enabled:=False;
       dbedit5.Enabled:=False;
       dbedit6.Enabled:=False;
      dbedit7.Enabled:=False;
       edt2.Enabled:=False;
       edt5.Enabled:=False;
      dbedit8.Enabled:=False;
        btn3.Caption:='添加';
        btn46.Caption:='刷新';
      end;
       end;
    end;
    procedure TForm1.grd_1CellClick(Column: TColumn);
    begin
    q1:=qry_3.fieldbyname('元器件ID').AsString;
      qry_3.Close;
      qry_3.SQL.Clear;
      qry_3.SQL.Add('select * from connector where 元器件ID='+q1);
     qry_3.open;
    end;