- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑:似乎 DataSetProvider 没有该项目所需的功能,因此我将实现一个自定义类来将数据加载到 ClientDataSet 中。
我正在尝试从连接到我的数据库的 TMSQuery 获取数据,并使用 DataSetProvider 用其中一些数据填充 ClientDataSet。
我的问题是,我需要修改其中一些数据,然后才能将其放入我的 ClientDataSet。 ClientDataSet 具有与原始数据库数据不匹配的持久字段。我什至无法将数据库中的字符串放入 ClientDataSet 中的备注字段中。
ClientDataSet 是我的数据层的一部分,因此我需要逐个字段将数据库中的数据与 ClientDataSet 保持一致(大多数都能够直接通过,但许多需要路由和/或转换) .
有人有这方面的经验吗?
最佳答案
您正在查找 TDataSetProvider.BeforeUpdateRecord 事件。为此事件编写一个事件处理程序,您可以手动控制如何将数据应用回数据库。
类似这样的事情
procedure TDataModule1.DataSetProvider1BeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean);
begin
{ Set applied to tell DataSnap that you have applied this record yourself }
Applied := True;
case UpdateKind of
ukModify:
begin
Table1.Edit;
{ set the values of the fields something like this }
if not VarIsEmpty(DeltaDS.FieldByName('NewValue')) then
Table1['SomeField'] := DeltaDS.FieldByName('SomeField').NewValue;
Table1.Post;
end;
ukInsert:
begin
Table1.Insert;
{ set the values of the fields }
Table1['SomeField'] := DeltaDS['SomeField']
Table1.Post;
end;
ukDelete:
if Table1.Locate('PrimaryKeyField', DeltaDS['PrimaryKeyField'], []) then
Table1.Delete;
end; // case
end;
关于delphi - DataSetProvider - DataSet 到 ClientDataSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548469/
我想知道在添加或编辑Interbase记录时,将ClientDataset与数据感知控件一起使用是否可行。 我的意图是最初使用SQLDataset打开单个记录,但我希望可以将该记录加载到Clientd
我目前正在测试: 指向 IB 数据库的 SQLConnection。 一个 SQLDataset,其 SQLConnection 字段设置为上述字段。 将 (2) 中的 SQLDataset 作为其数
我在 Delphi 7 中有一个应用程序,它使用 clientdataset,并对其进行多项操作。 ClientDataSet 链接到 Intraweb 网格。 我在 ClientDataSet 上进
我正在尝试编写一个从 TClientDataset 继承的组件。在设计时创建组件时,我想实例化一个在我的框架中使用的公共(public)字段列表。下面的代码将在没有错误的情况下执行,并且该字段将出现在
打开一个 TClientDataset,并获取包含 3 个 TBlobfields 的 10.000 行需要 3分钟 . 打开完全相同的数据,但将 BLOB 字段转换为 Varchar,需要 1 秒
我试图在计算的 bool 字段上对 ClientDataSet 进行排序,但由于某种原因,数据未排序。我有一个名为 Highlight 的 bool 字段,其中 FieldKind 设置为 fkInt
我有一个使用 ClientDataSets 和本地文件存储的应用程序。一些信息显示在数据库网格中,我发现它被切断了——显示了字符串的前 500 个字符左右,但底层字段需要更长。所以我回到我的代码并增加
我使用此代码在运行时创建一组字段 ClientDataSet1.FieldDefs.Add('ID', ftInteger, 0); ClientDataSet1.FieldDefs.Add(
当使用带有过滤器的 ClientDataSet 的 Filter 属性时 Name NOT LIKE 'Paulo%' 表示语法不正确。 如何在过滤器中找到解决方法? 最佳答案 将过滤器语法更改为
我想反转 TClientDataSet 中索引的顺序,下面的代码看起来应该可以解决问题,但什么也没做。有没有一种好方法来反转索引的顺序? procedure TForm8.Button1Click(S
我正在使用连接到 DBGrid 的 TClientDataset 和几个聚合字段,用于计算其他几个浮点字段的总和。所有字段均已在设计时创建。 一切都按预期工作,直到 ClientDataset 的 I
我在使用 ClientDataSet.StatusFilter := [usDeleted] 时遇到一些困难。 它没有任何作用。我正在将我的 ClientDataSet 连接到 Provider。 应
我在应用程序中使用 TClientDataSet 来管理从多个 CSV 文件导入的数据负载。总共可以是一百万个或更多条目。我希望能够删除与特定 CSV 文件关联的所有数据集条目,但删除大量项目的时间非
我正在使用 Firebird 2.1、DevArt 和 Delphi 2010 的 DBExpress 驱动程序。我的一些用于 Delphi 2006 的报告停止工作并生成一条错误消息,指示“算术异常
我对 Delphi/ClientDataSets 了解不多,但我愿意研究一下。不过,在我追求它之前我有一个问题,以确定我想要实现的目标是否可行。 我想每周一次使用 PHP 脚本将我的 MYSQL 数据
我正在使用 MySQL 数据库自学 Delphi 数据库编程。我正在尝试从嵌套的 ClientDataSet 添加一条记录,其中包含主表和详细表之间的链接以及主表中的自动增量字段。我在以下位置找到了似
对于在设计时定义字段的 Delphi ClientDataSets,有没有办法在运行时更改特定字段的数据类型(更改 cds.Fields[n].DataType)? 我有一个遗留的 Delphi 7
在过去的几天中,我们看到在加载XML块时使用ClientDataSet在Delphi 2006上引发了随机访问冲突,但是在使用CodeGear 2007 rad Studio时错误消失了。 我有一种奇
编辑:似乎 DataSetProvider 没有该项目所需的功能,因此我将实现一个自定义类来将数据加载到 ClientDataSet 中。 我正在尝试从连接到我的数据库的 TMSQuery 获取数据,
我在处理 TClientDataSet 的一些代码时遇到了问题Delta,我将其归结为以下测试用例。 我有两个 ClientDataSets,cdsData 和 cdsDelta,两者都有一个 Dat
我是一名优秀的程序员,十分优秀!