我遇到一个这样的问题。我用ADO连接SQLSERVER的数据库的两张表,两张表为主从表,联结的数据项在两张表中都是关键字,且只有一个联结数据项。第一次打开时一切正常。但我关掉从表的ADODATASET,然后再打开时发现从表所有数据项都会显示出来,和主表记录的联结数据项无关,好象已没有主从关系一样。我后来发现如果主表的记录滚动一下,例如先NEXT,再PRIOR(在界面上看不出来),一切又恢复正常。但如果主表没有记录,或只有一个记录的情况就无法用这个方法解决问题。
  望大侠,高手指点迷津。本人感激不尽。最好是经实践后证明行之有效的方法,要保持主从表关系。

解决方案 »

  1.   

    在打开从表之前,在程序中对主表重新进行定位,例如 Mastertable.First;就行了。d6+win2k+sqlserver下通过。
      

  2.   

    增加lookup字段 的问题也类似。
      

  3.   

    我也是采用滚动数据集的方法实现的,不过如果只有一条记录,那就比较麻烦,可采用filter属性进行手工控制,等添加记录之后再将filtered设为false,实现同步的效果
      

  4.   

    我以前以ADO连接SQLSERVER的数据库的主从表曾出此问题。
    但现在不知道为何不出现。我较成熟的用法是:
    ADOConnection 的属性:
      ConnectOption  := ConnectUnspecified;
      CursorLocation := clUseClient;
      IsolationLevel := ilCursorStability;
      KeeptConnection:= True;
      LoginPrompt    :=False;
      Mode           :=cmShareDenyNone;
    主表用ADODataset,属性:
      AutoCalcFields :=False; 
      LockType       :=ltPessimistic;
      CacheSize      :=1;
      CommandType    :=cmdText;
    从表用ADODataset,属性:
      AutoCalcFields :=False; 
      LockType       :=ltOptimistic; 
      CacheSize      :=1;
      CommandType    :=cmdText;
      这些属性似乎与此问题无关。
      程式开始打开表时先主表后从表。且有
        First;
        Last;
      动作。