在MIDAS结构的程序中,主从表的关系应该在服务端设置,不能在客户端设置,这点和C/S结构不同,我也碰到过和你一样的问题,在服务端设置后问题解决。
  详细的说明你可以看李维的《Delphi5.X分布式多层应用系统篇》第2-1-6节。注意,李维的书上有一个步骤忘了,就是在客户端设置的时候,应当先在主表的字段编辑器中选择包含有从表内容的字段(如果不明白的话就选择所有字段),然后才能设置从表的DataSetField属性。
  如果有问题继续联系。

解决方案 »

  1.   

    hzb你好:首先谢谢你,书以前就看呢,我也是跟你说的一样的设置,还是会有这种情况是不是还有什么要设置的呢?谢谢
      

  2.   

    可以的就是:CLIENTDATASET1.APPLYUPDATASET(-1);这条语句应没问题吧!谢谢!
      

  3.   

    就是我们在BDE中的主从表中当我们在主表中插入一条记录再到从表中插入一条则‘从表’与主表
    连接的字段值,从表就会显示出来,而MIDAS结构就不会显示但它们还是主从关系,这是为什么呢?
      

  4.   

      可能是从表没有定义主键,不过也不一定.另外更新数据我一般用APPLYUPDATAS(0).如果按照李维的做法的话一般不会有这种问题的。
      很抱歉,下午我还有些事情要处理,可能晚上有空,到时候我再看一下吧。
      

  5.   

    由于我前面所做的是:比如我以一张‘单据主表’与一张‘单据从表’靠单据号字段相连,为什么主表插入一条新记录而从表单据号为空,每加一条从表记录单据号都为空(主从关系在SQL中和服务器中都有绝对不会错)从而导至从表数据数据更新不了这是为什么呢!能告诉我吗?谢谢!
      

  6.   

    在李维书的2-1-6节DSPGENERAL(CLIENTDATASET控件) AND ADSGERERAL(ADODATASET控件) 这两个控件不只道是他用在哪里,起什么作用,你知道吗?
      

  7.   

    1、和C/S结构不同,在从表中增加记录时和主表相关联的字段并不会自动添加主表对应的数据,你只能自己添加相应的数据,这是Delphi做得不太完善的地方。
    2、DSPGENERAL是一个DataSetProvider控件,ADSGERERAL和DSPGENERAL是一个独立的功能,客户端的这段代码使用了这两个控件:
    procedure TForm2.FormActivate(Sender: TObject);
    var
      iCount : Integer;
    begin
      cdsGeneral.Close;
      cdsGeneral.CommandText := 'select distinct type from titles';
      cdsGeneral.Open;
      for iCount := 0 to cdsGeneral.RecordCount - 1 do
      begin
        DBGrid2.Columns.Items[1].PickList.Add(cdsGeneral.Fields[0].Value);
        cdsGeneral.Next;
      end;
    end;
    这段代码只是方便在修改数据的时候有一个下拉列表,你不用管它。
    如果问题解决了请说一下,还有问题继续联系。
      

  8.   

    HZB:你好:
      我还有一个问题就是:李维的书上做服务器都用了一个连接控件ADOCONNECTION连接数据库,但我一用这个控件服务器就激不活,如果用ADODATASET直接一个一个表连的话那就可以激活,是不是问题出在这里呢?你用了这个控件了吗!
      

  9.   

    ADOCONNECTION你要设置它的ConnectionString,注意测试一下连接是否成功,并且将KeepConnectin和LoginPrompt属性设成false(我一般是这样做)。然后将ADODataset的Connection属性设置成你的AdoConnection。
      

  10.   

    KeepConnectin主要是防止数据库中用户连接数太多,你可以根据自己的情况处理。在MIDAS结构的程序中,LoginPrompt应该设成false,因为程序运行时服务端不会有人去填写登录信息(即使在C/S结构中也应当是false,因为=true时弹出的对话框是英文)
      

  11.   

    HZB
     非常谢谢你帮助我已按照你讲的话去做已成功,但还不能完全确定数据不会重复还要经过一段时间测试,非常感谢你,我们可以交朋友吗?
      

  12.   

    可以啊,mail to [email protected]  or [email protected],你留在csdn的邮件可以用吗?如果不能请给我另一个。下星期我要出差,估计要一段时间不能上网。如果你的问题解决了就把这个贴子结束了吧(给分就可以了),我觉得应该倡导一种积极解答问题,积极给分的风气。
      

  13.   

    可以啊,mail to [email protected]  or [email protected],你留在csdn的邮件可以用吗?如果不能请给我另一个。下星期我要出差,估计要一段时间不能上网。如果你的问题解决了就把这个贴子结束了吧(给分就可以了),我觉得应该倡导一种积极解答问题,积极给分的风气。
      

  14.   

    好的我的EMANI:[email protected] 对不起我现在一分都没有呢!不好意思,祝出差顺利谢谢!