- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在处理 TClientDataSet 的一些代码时遇到了问题Delta,我将其归结为以下测试用例。
我有两个 ClientDataSets,cdsData 和 cdsDelta,两者都有一个 DataSource,DBGrid和 DBNavigator,以及用于显示 Delta 的旧值和新值的 TTreeView。
在 cdsDatas AfterPost 中,我调用下面的 DisplayDelta 过程。
当我运行应用程序时,我更改并保存 csdData 中一个字段的值,比如说,“PrevValue”到“UpdatedValue”。我的问题是 TreeView 中的 OldValue 和 NewValue 节点显示“UpdatedValue”和没有“PrevValue”的迹象。那么,如何正确获取OldValue呢?
procedure TDeltaTestForm.DisplayDelta;
var
Delta : OleVariant;
begin
Delta := cdsData.Delta;
if not VarIsClear(Delta) then begin
cdsDelta.Data := Delta;
end;
if cdsData.Modified then
Caption := 'modified'
else
Caption := '';
Caption := Caption + '/' + IntToStr(cdsData.ChangeCount);
BuildDeltaTree;
end;
procedure TDeltaTestForm.BuildDeltaTree;
var
NewNode,
ChildNode : TTreeNode;
i,
ID : Integer;
Field : TField;
Value : String;
function ChildValue(ALabel : String; FieldValue : Variant) : String;
begin
Result := ALabel;
if VarIsClear(FieldValue) then
Result := Result + '(empty)'
else
if VarIsNull(FieldValue) then
Result := Result + '(null)'
else
Result := Result + VarToStr(FieldValue);
end;
begin
{ Find the current row in the delta dataset }
ID := cdsData.FieldByName('ID').AsInteger;
if not cdsDelta.Locate('ID', ID, []) then
raise Exception.CreateFmt('ID: %d not found in Delta', [ID]);
TreeView1.Items.BeginUpdate;
try
Treeview1.Items.Clear;
for i:= 0 to cdsDelta.FieldCount - 1 do begin
Field := cdsDelta.Fields[i];
NewNode := TreeView1.Items.AddChild(Nil, Field.FieldName);
ChildNode := TreeView1.Items.AddChild(NewNode, ChildValue('Old: ', Field.OldValue));
ChildNode := TreeView1.Items.AddChild(NewNode, ChildValue('New: ', Field.NewValue));
ChildNode := TreeView1.Items.AddChild(NewNode, ChildValue('Cur: ', Field.CurValue));
end;
TreeView1.FullExpand;
finally
TreeView1.Items.EndUpdate;
end;
end;
最佳答案
我可以重现你的问题。试试这个:
改变
for i:= 0 to cdsDelta.FieldCount - 1 do begin
Field := cdsDelta.Fields[i];
至
for i:= 0 to cdsData.FieldCount - 1 do begin
Field := cdsData.Fields[i];
您现在应该发现获得了您期望的 OldValue
和 NewValue
值。无论如何,我在这里。
我承认我对此有些困惑 - 我一直认为您可以将一个 CDS 的 Delta 分配给另一个 CDS,而第二个 CDS 将包含与 Delta 相同的字段值(旧的和新的),但显然不是。然而,这个结果与 Cary Jensen 出色的“ClientDataSets”(第 6 章中的“StatusFilter 与 Delta”)的一部分相吻合,他在其中说道:
“...当您加载带有 CDS Delta 的第二个 CDS 时,第二个 CDS 没有更改缓存。”
也许他的意思是,你在第二张照片中最终看到的是三角洲的快照,而不是它的历史。我想这就是为什么您的 cdsDelta 在 Field.OldValue 和 Field.NewValue 中返回相同的值。
关于delphi - 处理 ClientDataset 的 Delta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39168696/
我想使用 spark sql 在 Delta 表中添加一些列,但它显示如下错误: ALTER ADD COLUMNS does not support datasource table with ty
在增量表中存储我的数据帧时,为我的数据帧寻找有效的分区策略。 我当前的数据帧 1.5000.000 rowa 将数据从数据帧移动到增量表需要 3.5 小时。 为了寻找更有效的写作方式,我决定尝试将我的
我想知道,是否可以更新增量表分区列的“值”? 该表按特定列分区,现在我想更新该特定列的值。我可以这样做吗? (在 slack 上找到) 最佳答案 使用 replaceWhere 选项。 引用官方文档
考虑排序数组a: a = np.array([0, 2, 3, 4, 5, 10, 11, 11, 14, 19, 20, 20]) 如果我指定左右增量, delta_left, delta_righ
当我们运行 VACUUM 命令时,它是遍历每个 parquet 文件并删除每条记录的旧版本,还是保留所有 parquet 文件,即使它有一个最新版本的记录?压实呢?这有什么不同吗? 最佳答案 Vacu
如果我想使用 delta time-travel 来比较两个版本以获得类似于 CDC 的更改,该怎么做? 我可以看到两个选项: 在 SQL 中,您有 EXCEPT/MINUS 查询,您可以将所有数据与
我想在 python 中对给定的输入和输出数据进行敏感性分析。输入参数的设计是基于拉丁超立方体的,所以我决定使用SALib的delta模块。我找不到一些文档,返回参数 delta、delta_conf
我正在尝试在 CUDA 中实现前馈神经网络。到目前为止,我用过 Jeff Heaton's YouTube videos作为推断算法和实现它们的指南。我不清楚一件事: 希顿在他的 Gradient C
我正在阅读下面关于 First Search Program - Artificial Intelligence for Robotics 的代码,我对下面这两行的工作稍作停留: x2 = x+del
我将一年以上的行作为增量表归档到 ADLSv2 中,当需要报告该数据时,我需要将归档数据与本地数据库中现有的一些表连接起来。有没有一种方法可以在不从云中重新水化或将数据水化到云的情况下进行连接? 最佳
Delta Lake 在哪里存储表元数据信息。我在我的独立机器上使用 spark 2.6(不是 Databricks)。我的假设是,如果我重新启动 spark,将删除在 delta lake spar
我按照@提到的步骤操作:http://wiki.apache.org/solr/DataImportHandler 我还尝试了来自 stackoverflow 的其他解决方案,但仍然无法正常工作。 问
是否可以在本地实现三角洲湖?如果是,需要安装什么软件/工具? 我正在尝试在内部实现一个 delta 湖来分析一些日志文件和数据库表。我当前的机器装有 ubuntu,apache spark。不确定还需
Delta Lake 每 10 个版本自动创建一个检查点。有没有办法手动创建检查点? 最佳答案 import org.apache.spark.sql.delta.DeltaLog DeltaLog.
虽然分析似乎无法避免存储到“delta”的值不被读取...我的循环的哪一部分不起作用,为什么? #include #include int main() { float a, b, c;
不幸的是,我认为错误并不是让他自动更新了delta 我在“数据库”中有这个表插件 # in MySQL CREATE TABLE sph_counter ( counter_id INTEGER PR
是否可以使用 Delta Live Tables 来执行增量批处理? 现在,我相信这段代码将始终在运行管道时加载目录中的所有可用数据, CREATE LIVE TABLE lendingclub_ra
我有一个包含数百万行和多个不同类型的列的增量表,包括。嵌套结构。我想在运行时创建增量表的空 DataFrame 克隆 - 即相同的模式,没有行。 我可以读取架构而不读取表的任何内容吗(这样我就可以基于
我有一些历史期权价格,我正在尝试确定隐含的 delta。 我有: 1) strike 2) call/put 3) stock price 4) dividend 5) interest rate 6
梯度下降和 delta 规则有什么区别? 最佳答案 没有数学:delta 规则使用梯度下降来最小化感知器网络权重的误差。 梯度下降是一种通用算法,它逐渐改变参数向量以最小化目标函数。它通过向阻力最小的
我是一名优秀的程序员,十分优秀!