大家好,我现在遇到这样一个疑问 
我现在2个dbgrid期中一个Adbgrid(主表),一个是Bdbgrid(明细表),我现在想用ctrl键先选主表的主记录,然后再选明细表的明细记录,最后再把我所选的所有明细记录都保存在一个数据库表里面,有什么好方法吗?谢谢

解决方案 »

  1.   

    谢谢
    对是的,我从Adbgrid(主表)中先一条记录,Bdbgrid(明细表)显示到对应的5条明细记录,然后我再从Bdbgrid(明细表)里面选前3条明细记录,然后我再从Adbgrid(主表)再选一条记录,Bdbgrid(明细表)又显示到对应的11明细记录记录,然后我再从Bdbgrid(明细表)里面选7条明细记录。我共选了两次Adbgrid(主表)记录,在Bdbgird(明细表)中选对应的明细记录3+7=10,我现在想把我选中的这10条明细记录写到数据库里面去,谢谢大家!
      

  2.   

    可以这样,请你看合适否:
    在连明细表的表格控件的双激事件中写代码,以下例子ADOquery3是连你要写入的数据表的:procedure TForm1.DBGrid1DblClick(Sender: TObject);
    var
    i:integer;
    begin
     if DBGrid1.SelectedRows.Count>0 then begin
        with ADOQuery2 begin
          DisableControls;
          for i :=0  to DBGrid1.SelectedRows.Count-1 do begin
             GotoBook(pointer(DBGrid1.SelectedRows.Items[i]));
             ADOquery3.Append;
             ADOquery3.FieldValues['x_a']:=FieldValues['x_a'];{这里}
             ADOquery3.FieldValues['x_b']:=FieldValues['x_b'];
             ADOquery3.post;
          end;
          EnableControls;
        end;
     end;
    end;
    1.当你点了主表记录时,在明细表的表格双激要写入数据库的记录,就会写入到数据库里.
    2.不要忘了要将DBGrid1设置为可以多选.
      

  3.   

    我是这样想的,先把我选的记录都保存在一个临时表里,相应ondbclik事件,选好了以后再把临时表再写到实表里面去,但是当用户写选记录时,但我就不知道怎么把我所选的明细记录保存在那个临时表里面,哎
      

  4.   

    如果要放临时表,也可以的,将ADOquery3设置为连接临时表,做一个一次批量提交的按钮.