ClientDataSet1.Data := getinfo;//getinfo是获得数据的方法
  ClientDataSet2.Data := getmatinfo;//getmatinfo是获得数据的方法
  ClientDataSet2.MasterSource:= DataSource1;//设置主表的datasource1
  ClientDataSet2.MasterFields := 'materialid';//设置主从表关联的字段。
可是在运行是提示:"clientDataSet2:field index of range"的错误
各位大哥怎么解决呀。

解决方案 »

  1.   

    不要用主从表,我认为这样更好:
    procedure TForm1.ClientDataSet1AfterScroll(DataSet: TDataSet);
    begin
      ClientDataSet2.Close;
      ClientDataSet2.CommandText:='Select * from ... where materialid='+Quotedstr(ClientDataSet1.FieldByName('materialid').AsString);
      ClientDataSet2.Open;
    end;
      

  2.   

    我刚好做3层的主细表,你看看对你有没有帮助
    // dsp为datasetprovider ,aq为adoquery,ds为datasource,adod为adodataset ,cds为clientdataset
    -------------------------------//服务器端的设置
    dsp_ddml//dataset:= aq_ddml
    aq_ddml//connection:=adoconnection
    ds_ddml//dataset:=aq_ddml
    adod_ddnr//datasource:=ds_ddml connection:=adoconnection  masterfields:=xszyh
    //---------------------//客户端的设置
    cds_ddml//remoteserver:=socketconneciton ,proidername:=dsp_ddml
    cds_ddnr//datasetfield:=cds_ddmladod_ddnr
    ds_ddml//dataset:=cds_ddml
    ds_ddnr//dataset:=cds_ddnr