用循环向数据表中插入数据,为什么循环一次会插入两条相同的数据,最后一次循环插入一条数据???
begin
    booklist:=Form5.dbgrid1.SelectedRows;
    for i:=0 to booklist.Count-1 do
       begin
       Form5.adoquery1.Book:=booklist[i];
  
       FAuxQty:=Form5.DBGrid1.DataSource.DataSet.fieldbyname('订购数量').AsInteger;
       FBillNO:=Form5.DBGrid1.DataSource.DataSet.Fieldbyname('单据编号').AsString;
       adoquery1.Close;       adoquery1.SQL.Text:='insert into table1 (FAuxQty,FBillNo)'+ 
                           'values('''+inttostr(FAuxQty)+''','''+FBillNo+''')';
       adoquery1.ExecSQL;
       end;
end.

解决方案 »

  1.   

    begin
        booklist:=Form5.dbgrid1.SelectedRows;
        for i:=0 to booklist.Count-1 do
           begin
           Form5.adoquery1.Book:=booklist[i];
      
           FAuxQty:=Form5.DBGrid1.DataSource.DataSet.fieldbyname('订购数量').AsInteger;
           FBillNO:=Form5.DBGrid1.DataSource.DataSet.Fieldbyname('单据编号').AsString;
           adoquery1.Close;       adoquery1.SQL.Text:='insert into table1 (FAuxQty,FBillNo)'+ 
                               'values('''+inttostr(FAuxQty)+''','''+FBillNo+''')';
           adoquery1.ExecSQL;       adoquery1.Open;
           adoquery1.Next; //指向下一条记录
           end;
    end.
      

  2.   

    var bm:Tbook;
        count,i:integer;
    begin
      bm:=getbook;
      count:=Form5.dbgrid1.SelectedRows.Count;
      if count >0 then
      for i:=0 to count - 1 do
      begin
        bm:=pointer(Form5.dbgrid1.SelectedRows.items[i]);
        gotobook(bm);
        //或者 gotobook( pointer(Form5.dbgrid1.SelectedRows.items[i])  
           FAuxQty:=Form5.DBGrid1.DataSource.DataSet.fieldbyname('订购数量').AsInteger;
           FBillNO:=Form5.DBGrid1.DataSource.DataSet.Fieldbyname('单据编号').AsString;
           adoquery1.Close;       adoquery1.SQL.Text:='insert into table1 (FAuxQty,FBillNo)'+ 
                               'values('''+inttostr(FAuxQty)+''','''+FBillNo+''')';
           adoquery1.ExecSQL;
           end;
    end.