【发布时间】:2012-05-01 08:04:25
【问题描述】:
我有一个自定义的 TDatasetProvider,它允许为它提供的任何数据创建新字段。
所以,假设您在原始数据集上获得了以下字段:
- 客户 ID
- 姓名
- 年龄
您需要使用显示位图在 DBGrid 上选择它。好吧,你可以,因为我的 DSP 可以添加
一个名为 Selected 的布尔字段,用于数据集数据。
我现在这样做的方式:
- 创建 2 个 TClientDataset 对象(Origin 和 Target)
- 在 Origin 中,我加载了从 InternalGetRecords 方法的参数中获取的数据(我覆盖了它)
- 在 Target 中,我创建了从 Origin 数据集定义的字段定义,并添加了开发人员在设计时创建的字段定义
- 在目标上执行 CreateDataset
- 并且,逐行(和逐字段)将数据从源数据库复制到目标数据集
- 最后,将 Data 变量作为 InternalGetRecords 的返回值返回。
我真的不知道是否有更优雅(更快)的方法来做到这一点。还有另一种(更快和/或优雅的)方法可以得到这个结果吗?
【问题讨论】:
-
难道你不能简单地在原始数据集上创建 internalcalc 布尔字段而不会造成混乱吗?
-
在我制作了这个组件之后,生活变得更轻松了,因为我可以创建 CDS 识别为数据字段的数据字段..
-
但是你做了很多不必要的工作。创建这些数据字段的意义何在?
-
他们简化了很多与 TDbGrid 自定义的工作以获得我想要的功能。我还使用它来标记记录是否已导入并根据结果集的主要实体(非规范化)进行排序......并且列表还在继续......
-
我相信您可以使用 internalcalc 字段实现同样的效果,并且不会以低效的方式复制数据
标签: delphi tclientdataset tdatasetprovider