【问题标题】:Why is my cloned dataset blank?为什么我的克隆数据集是空白的?
【发布时间】:2008-12-20 02:02:04
【问题描述】:

我正在使用 TClientDataset.CloneCursor 来实现相同数据的不同视图。我有一个主数据集和几个克隆,每个克隆都包含主数据集字段的不同子集。但是当我尝试显示来自克隆的数据时,它们是空的。主数据集正确填充了数据,并且克隆数据集的 CloneSource 属性指向正确的数据集,但是如果我并排放置两个网格,一个显示主数据集,另一个链接到克隆视图,则克隆查看一个将是空白的。

知道是什么原因造成的吗?

【问题讨论】:

    标签: delphi clone client-dataset


    【解决方案1】:

    好的,既然你没有任何代码,我会为你写一些。这听起来像你在说什么,它适用于我的机器。所以现在你告诉我你在做什么不同。 TClientDataSetTDataSourceTDBGrid各放两个。将它们连接起来并正确命名:

    var
      idField: TFieldDef;
      stringField: TFieldDef;
    begin
      idField := ds1.FieldDefs.AddFieldDef;
      idField.DataType := ftInteger;
      idField.Name := 'id';
    
      stringField := ds1.FieldDefs.AddFieldDef;
      stringField.DataType := ftString;
      stringField.Size := 10;
      stringField.Name := 'name';
    
      ds1.CreateDataSet;
      ds1.InsertRecord([1, 'Jim McKeeth']);
      ds1.InsertRecord([2, 'Mason Wheeler']);
      ds1.InsertRecord([3, 'Jeff Atwood']);
    
      ds2.CloneCursor(ds1, true);
      ds2.Filter := 'id=1';
      ds2.Filtered := True;
    end;
    

    【讨论】:

    • 我在设计时定义字段,并且必须为两个数据集定义它们,而不仅仅是一个。我在添加数据之前克隆了光标。第二个数据集甚至还没有过滤器。 (它会,但我把它留了下来,以消除它作为麻烦的根源。)
    • 我不需要在第二个数据集上定义字段,如果字段是在设计或运行时定义的,它的行为相同。我建议从第二个数据集中删除这些字段,看看是否能解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2013-03-06
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    相关资源
    最近更新 更多