请问各位高手怎么在DBGRID中选取多条记录并一次把选中的多条记录添加到另一表中?

解决方案 »

  1.   

    只要把DBGrid的dgMultiSelect设为True就行了把Table1中选中的记录添加到另一张表Table2中:  BookList1 := DBGrid1.SelectedRows;
      for i := 0 to DBGrid1.SelectedRows.Count -1 do
        begin
          Table1.GotoBook(Pointer(BookList1[i]));
          Table2.Insert;
          Table2.FieldByName('xxx'):=Talbe1.FieldByName('xxx');
          .....
          Table1.delete;
        end;
      

  2.   

    sorry,最后还要  table1.ApplyUpdates;
      table2.ApplyUpdates;
      

  3.   

    dbgrid.dgMultiSelect:=true;
    把满足条件的记录insert到表中
      

  4.   

    先作如下设置:
    dbgrid.dgRowSelect:=true;
    dbgrid.dgMultiSelect:=true;
    然后新增:
        for i := 0 to dbgrid.SelectedRows.Count - 1 do
        begin
          GotoBook(Pointer(dbgrid.SelectedRows.Items[i]));
          with Table2 do
          begin
            FieldByName('').Value := dbgrid.datasource.dataset.FieldByName('').Value;
            ...
          end;      
        end;
      

  5.   

    dbgrid.dgRowSelect:=true;
    dbgrid.dgMultiSelect:=true;
    var i:integer;
    begin
        for i := 0 to dbgrid1.SelectedRows.Count - 1 do
        begin
          table1.GotoBook(Pointer(dbgrid1.SelectedRows.Items[i]));
          with Table2 do
          begin
            insert;
            FieldByName('bmdm').Value := dbgrid1.DataSet.Fields[1].AsString;('bmdm').Value;
            FieldByname('bmmc').Value:=dbgrid1.DataSource.DataSet.Fields[1].AsString;
            fieldbyname('xm').Value:=dbgrid1.DataSource.DataSet.Fields[2].AsString;
            fieldbyname('bh').Value:=dbgrid1.DataSource.DataSet.Fields[3].AsInteger;
            post;
          end;    end;
    end;
    为什么不行请高手指点
      

  6.   

    当然不行了
    虽然GRID是选择了多行
    但数据集只有一条记录获得了焦点
      

  7.   

    窃以为DBGrid并不是什么好东东
    我一般用StringGrid
      

  8.   

    我现在不能换其它控件了,现在我按下CTRL 点击可以选取多行但这不方便,能不能在点击时那行的焦点保持在 即在点击时相当于发送了CTRL信息。请高手指点!
      

  9.   

    TO: WGYKING(【修罗】我爱北极熊!) 
    STRINGGRID是第三方控件吗?
      

  10.   

    to 5556667(毛主席光芒照四方)
    果然照四方!
    Stringgrid 这么看应该眼熟了吧,就是DELPHI里自带的
      

  11.   

    把options->dgMultiSelect的属性设为true
    然后再加一个复选框:
    procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
    if checkbox1.Checked then
      keybd_event(VK_CONTROL,0,0,0)
    else
      keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
    end;