QDataSet 提供了两个函数来比较两个数据集的差异,并将结果保存到第三个数据集。

procedure Intersect(ASource1, ASource2: TQDataSet; AFields: QStringW);
procedure Diff(ASource1, ASource2: TQDataSet; AFields: QStringW;AIncSource1,AIncSource2:Boolean);

两个函数,其中 Intersect 函数用于取两个数据集中的交集部分,而 Diff 函数用于取两个数据集中不一样的部分。这两个函数的 AFields 用于记录要比较的字段列表,多个字段之间以 “,” 或 “;” 分隔,如果两个数据集中要比较的字段的名称不一致,则使用:

ASource1中的字段名=ASource2中的字段名

这种方式来建立两者之间的映射关系,如果两个字段名不一致,则会取第一个结果集中的字段名为最终结果集的字段名。

在使用这两个函数时,还要注意一点:这两个要比较数据集中对应的字段的类型要保持一致,否则比较无意义,程序会抛出异常。

Intersect 用于计算两个数据集中共同的记录,而 Diff 用于计算两个结果集中不同的记录,但额外提供了两个参数:

  • AIncSource1 为 True 时,将 ASource1 中有,而 ASource2 中无的记录加到结果中
  • AIncSource2 为 True 时,将 ASoruce2 中有,而 ASource1 中无的记录加到结果中

至于它们的调用方法,So easy!

procedure TForm1.Button1Click(Sender: TObject);
begin
FDest.Diff(FSource1,FSource2,Edit1.Text,CheckBox1.Checked,CheckBox2.Checked);
end; procedure TForm1.Button2Click(Sender: TObject);
begin
FDest.Intersect(FSource1,FSource2,Edit1.Text);
end;

程序实际运行效果截图,CC_1~CC_10 是两者公共的内容。

QDataSet – 如何比较两个数据集内容的差异的更多相关文章

  1. Beyond Compare 忽略两个文件内容的顺序比较文件内容(xjl456852原创)

    有时两个文件内容的顺序是不固定的,对比时需要忽略文件顺序进行对比. 可以这样设置: 点击菜单下面工具栏按钮: 点击Format旁的三角,选择Sorted,就会按文件的顺序排序比较.忽略了文件内容顺序的 ...

  2. 2017 年 9 月 27 日 js(1.两个select 内容互换 2.单选按钮 同意可点击下一步 3. 全选框)

    1.两个select 内容互换 <!DOCTYPE html><html>    <head>        <meta charset="UTF- ...

  3. Merkle 树——空间换时间,分而治之的hash表,通过根节点是由它的两个子节点内容的哈希值组成来校验数据完整性,定位篡改的数据位置

    Merkle 树 图 1.5.6.1 - Merkle 树示例 默克尔树(又叫哈希树)是一种二叉树,由一个根节点.一组中间节点和一组叶节点组成.最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的 ...

  4. Js $.merge() 函数(合并两个数组内容到第一个数组)

    定义和用法 $.merge() 函数用于合并两个数组内容到第一个数组. 语法 $.merge( first, second )   参数 描述 first Array类型 第一个用于合并的数组,合并后 ...

  5. C# 通过比对哈希码判断两个文件内容是否相同

    1.使用System.security.Cryptography.HashAlgorithm类为每个文件生成一个哈希码,然后比较两个哈希码是否一致. 2. 在比较文件内容的时候可以采用好几种方法.例如 ...

  6. python 实现两个文本文件内容去重

    实现两个文本内容去重,输出两个文本不重复的结果 两个测试文本内容如下 1.txt中内容为 1 2 3 4 5 6 7 8 2.txt中内容为 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  7. .NET CORE下最快比较两个文件内容是否相同的方法

    本文因为未考虑磁盘缓存, 结果不是很准确, 更严谨的结果请参看本博文的续集 最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 ...

  8. Jav获取文件的MD5码,比较两个文件内容是否相同

    Jav获取文件的MD5码,比较两个文件内容是否相同 代码: System.out.println(DigestUtils.md5Hex(new FileInputStream(new File(&qu ...

  9. JavaScript判断两个对象内容是否相等

    ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致 let obj1= { a: 1 } let obj2 = { a: 1 } console.log(Object.is ...

随机推荐

  1. 03-spring框架—— AOP 面向切面编程

    3.1 动态代理 动态代理是指,程序在整个运行过程中根本就不存在目标类的代理类,目标对象的代理对象只是由代理生成工具(不是真实定义的类)在程序运行时由 JVM 根据反射等机制动态生成的.代理对象与目标 ...

  2. 牛客练习赛44 C 小y的质数 (数论,容斥定理)

    链接:https://ac.nowcoder.com/acm/contest/634/C 来源:牛客网 题目描述 给出一个区间[L,R],求出[L,R]中孪生质数有多少对. 由于这是一个区间筛质数的模 ...

  3. Summer training round2 #3

    A!:                    GTY系列题 B!:莫队加分块  GTY系列题 C!:线段树模拟拓扑排序(把普通的拓扑排序的栈操作改成线段树区间减一,查询区间最右侧的0的位置即可.注意一 ...

  4. 第10课:[实战] Redis 网络通信模块源码分析(3)

    redis-server 接收到客户端的第一条命令 redis-cli 给 redis-server 发送的第一条数据是 *1\r\n\$7\r\nCOMMAND\r\n .我们来看下对于这条数据如何 ...

  5. luogu2014 选课[树形背包][优化成$O(n^2)$的方法]

    https://www.luogu.org/problemnew/show/P2014 树形背包的裸题..当版子好了. $f[i][j][k]$表示子树$i$选前$j$个孩子,共$k$个后代节点时的最 ...

  6. CSS之运算,Sass 之运算(加、减、乘、除)

    1. 加减法 加减法不是重点,重点是在SassScript中用到的两种单位之间的转换:绝对单位:px, pt, pc, in, mm, cm...绝对单位都能运算:相对单位:ex, em, rem.. ...

  7. CF#356 div2 C 猜数字

    C. Bear and Prime 100 time limit per test 1 second memory limit per test 256 megabytes input standar ...

  8. Linux开机启动和登录时各个文件的执行顺序

    1.在Linux内核被加载后,第一个运行的程序便是/sbin/init 该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作.其中/etc/inittab文件最主要的作用就是设定Li ...

  9. ZeroMQ+QT 字符串收发

    结合 Zeromq API函数 与 Qt 字符串QString QByteArray 实现字串收发: 发送端: zmq_msg_t msg; QString strT = “ABC汉字123”: QB ...

  10. codefroces Round #201.B--Fixed Points

    B. Fixed Points time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...