delphi 两个DBGrid之间数据选择有关问题

delphi 两个DBGrid之间数据选择问题
delphi 两个DBGrid之间数据选择有关问题
如上图操作事例
需求是这样的:
点击查询,查询结果显示在左侧DBGrid的查询结果集中,按选择(图箭头)按钮数据选择到右侧DBGrid选择结果中,同时左侧的数据不在显示,当选择结束后点击保存选择结果,保存数据。
我现在的写法:
在formShow事件建立一个临时表,在查询按钮下写到and zj not in(select zj from 临时表),右边则是select * from 临时表,每点一次选择箭头后close,open刷新一次。
存在的问题:
有时候可能因为电脑待机或者其他问题会报这么个错:临时表无效。导致我之前辛苦选择的数据无法保存。或者选择数据之后我没保存而关闭了窗口,导致白选。
需求:
我想咨询下各位都是用什么方式来实现这种需求的,就是不用临时表的方式,可以左右选择数据。并且如果我没保存选择的数据,当我下次进来之后我的数据仍然可以在我的右侧选择结果集中,我可以直接点击保存,而不用重新选择一次,因为有时候选择的数据量大了,会出现一系列的问题。
最后:
谢谢各位好心人了。

------解决方案--------------------
个人习惯,还是用临时表,但这个临时表是正式的表,不是那种#开始的那种表。
------解决方案--------------------
我的习惯是在当前的数据库中建实体表来充当临时表,用完后再删除。
------解决方案--------------------
你完全不需要在数据库里面建临时表,用放2个ClientDataSet或是AdoDataSet当临时表不就行了,他们就有临时表功能
------解决方案--------------------
我一般选择用内存表模式,使用起来方便很多
放个ADODataSet1到form上,双击,添加你所想要的字段,使用的时候

  if ADODataSet1.Active then ADODataSet1.Close;
  ADODataSet1.CreateDataSet;
  ADODataSet1.Open;
  with ADS do
  begin
    First;
    while not eof do
    begin
      ADODataSet1.Append;
      ADODataSet1.FieldByName('CustNo').AsString     :=FieldByName('CustomCode').AsString;
      CADODataSet1S1.FieldByName('CustName').AsString:=FieldByName('CustomName').AsString;
      ADODataSet1.FieldByName('ProductNo').AsString  :=FieldByName('ProductCode').AsString;
      ADODataSet1.FieldByName('ProductName').AsString:=FieldByName('ProductName').AsString;
      ADODataSet1.FieldByName('ProductDesc').AsString:=FieldByName('ProductDesc').AsString;
      ADODataSet1.FieldByName('Flag').AsString       :='N';
      ADODataSet1.Post;
      Next;
    end;
  end;

其中ADS是你查询想放入临时表的数据,左边放一个ADODataSet1,右边放一个ADODataSet2
如下图是我程序里面的一个类似的formdelphi 两个DBGrid之间数据选择有关问题