我的代码:
     dm.ADOQuery_list.Close;
     dm.ADOQuery_list.SQL.Clear;
     dm.ADOQuery_list.SQL.Add('select * from exe_asn_list where asn_no='+QuotedStr(trim(asn_no.Text)));
     dm.ADOQuery_list.Open;
     dm.ADOQuery_list.Edit;
     dm.ADOQuery_list.Append;
     for j:=1 to stringgrid_asn.RowCount-1 do
       begin
         DM.ADOQuery_list.fieldbyname('asn_no').asstring := asn_no.Text;
         DM.ADOQuery_list.fieldbyname('sku').asstring := stringgrid_asn.cells[1,j];
         DM.ADOQuery_list.fieldbyname('ex_rece_qty').asstring := stringgrid_asn.cells[4,j];
         DM.ADOQuery_list.fieldbyname('fact_rece_qty').asstring := stringgrid_asn.cells[5,j];
         DM.ADOQuery_list.fieldbyname('location').asstring := stringgrid_asn.cells[6,j];
         DM.ADOQuery_list.fieldbyname('lot_no').asstring := stringgrid_asn.cells[7,j];
       end;
     try
       dm.ADOQuery_list.Post;
     except
       application.MessageBox('保存表体失败!','提示',mb_ok+mb_iconerror);
     end;想实现post之后将多条记录添加到数据库中,可现在执行完之后只能提交最后一条记录,请大家帮我看下吧。谢谢

解决方案 »

  1.   

    设置ADOQuey.LockType为ltBatchOptimistic
    用UpdateRecord来更新数据
      

  2.   

    HsWong您能说的明白一点么?我的LockType就是ltBatchOptimistic,不过怎么用UpdateRecord来更新呢?
      

  3.   

    应该用这个UpdateBatch
    成批Update
      

  4.   

    一.用楼上朋友的方法!
    二.
    1.
    Append放在按钮事件中,想插入多少条,就循环多少次
    如:
    For i:=1 to 5 do
    Query1.append;2.

    for j:=1 to stringgrid_asn.RowCount-1 do
           begin
             DM.ADOQuery_list.fieldbyname('asn_no').asstring := asn_no.Text;
             DM.ADOQuery_list.fieldbyname('sku').asstring := stringgrid_asn.cells[1,j];
             DM.ADOQuery_list.fieldbyname('ex_rece_qty').asstring := stringgrid_asn.cells[4,j];
             DM.ADOQuery_list.fieldbyname('fact_rece_qty').asstring := stringgrid_asn.cells[5,j];
             DM.ADOQuery_list.fieldbyname('location').asstring := stringgrid_asn.cells[6,j];
             DM.ADOQuery_list.fieldbyname('lot_no').asstring := stringgrid_asn.cells[7,j];
           end;
    放在AfterInsert中
      

  5.   

    dm.ADOQuery_list.Close;
         dm.ADOQuery_list.SQL.Clear;
         dm.ADOQuery_list.SQL.Add('select * from exe_asn_list where asn_no='+QuotedStr(trim(asn_no.Text)));
         dm.ADOQuery_list.Open;
         for j:=1 to stringgrid_asn.RowCount-1 do
         begin ////
         dm.ADOQuery_list.Append;       begin
             DM.ADOQuery_list.fieldbyname('asn_no').asstring := asn_no.Text;
             DM.ADOQuery_list.fieldbyname('sku').asstring := stringgrid_asn.cells[1,j];
             DM.ADOQuery_list.fieldbyname('ex_rece_qty').asstring := stringgrid_asn.cells[4,j];
             DM.ADOQuery_list.fieldbyname('fact_rece_qty').asstring := stringgrid_asn.cells[5,j];
             DM.ADOQuery_list.fieldbyname('location').asstring := stringgrid_asn.cells[6,j];
             DM.ADOQuery_list.fieldbyname('lot_no').asstring := stringgrid_asn.cells[7,j];
           end;
         try
           dm.ADOQuery_list.Post;
         except
           application.MessageBox('保存表体失败!','提示',mb_ok+mb_iconerror);
         end;
       end;/////
      

  6.   

    try
           dm.ADOQuery_list.Post;
         except
           application.MessageBox('保存表体失败!','提示',mb_ok+mb_iconerror);
         end;
    这段应该放到for循环里面!
    最好使用事务处理!
      

  7.   

    UpdateBatch,UpdateRecord,Post有什么不同么?