采用MIDAS开发三层,有一个问题闲扰了我很久。如下主表
MID NAME              说明MID为整型主键且自增长,步长为1
1   A
2   B
3   C
从表
DID MID CORE        说明DID,MID为组合主键且MID为主表的外键
1    1    76
1    2    82
1    3    68
2    1    71
2    2    65
2    3    89我在应用服务器上分别用两个ADODataset对应主从表,并设置好以MID为关联(就是常说的巢状数据集)用一个DataSetProvider取主表的数据,客户端分别用两个ClientDataSet一主一从,将数据显示在DBGrid中:
当我添加数据时,无法处理:
原因如下:
先添加主表一条数据,保存post
然后选中刚添加的这条数据,在从表中添加数据
因为主表那条数据的MID值要保存在从表中,但是在未提交之前主表的MID值,因此导致从表无法把那个外键的值加上,导致无法提交。
这种情况怎么处理?
不知道我说明白了没有,希望有人能帮我,分不是问题

解决方案 »

  1.   

    Dbgrid是用了两个,分别对应主表和从表
      

  2.   

    你要在你的remoteDataModule 里的query 或 table  里添加你的固定列(主表,细表)
    你的细表就做为一个数据包,带到客户端,然后操作
      

  3.   

    在你的remoteDataModule 里的主,细 数据集里添加数据表的固定列
      

  4.   

    /////////说明MID为整型主键且自增长,步长为1MID 不要自动产生,你自己去计算好了
      

  5.   

    这个MID,是用来表示做标值,可能有很多人在一个表中录数据,先录的人,位置靠前.
    这个怎么算呀?
      

  6.   

    MID是自动增长的,不管多少人在同时操作,肯定不会重复的。我看你一开始是先保存主表的记录的,然后选择一条记录再来添加从表记录,这样肯定有主表记录的MID,保存的时候应该没什么问题。
    但是看你从表的记录好象有问题,应该是主表的MID不变,从表的DID变才对啊,因为主表一条记录可以有N条从表的记录
      

  7.   

    主表不重复到是很容易能做到,就是从表要包含主表的主键ID,提交前主表ID不确定,但从表要求得是确定的值,这是难点
      

  8.   

    便用GuID吧  我的方案 YYMMDD+GuID合成主键
     为主从表建立关系(触发同时修改主键)
     然后半夜三更的将 YYMMDD+GuID 整理成 YYMMDD+流水号
     当然不整理也行SQL Server2000后台生成GuID的程序为:newid(), Cast(newid() as varchar(50))
    前台的:
    Function GetGuID: String;
    var guid:TGUID;
        YY,MM,DD: Word;
    begin
      DecodeDate(Date,YY,MM,DD);
      CoCreateGUID(guid);
      Result := Copy(IntToStr(YY),3,2)+InsZero(IntToStr(MM),'0',2)+
                InsZero(IntToStr(DD),'0',2)+GuidToString(guid);
    end;