文档章节

TClientDataSet[12]: 查找

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 472
阅读 9
收藏 0
点赞 0
评论 0

方法有:
1、Locate: 根据字段列表和对应的字段值查找并定位, 找到返回 True.
2、Lookup: 根据字段列表和对应的字段值查找, 返回需要的字段值.
3、SetKey、GotoKey 或 SetKey、GotoNearest: 根据索引字段的值查找, 先切换状态再根据条件定位.
4、FindKey 或 FindNearest: 根据索引字段的值查找.

其中的 GotoNearest、FindNearest 在找不到的情况下会定位到近似值.

测试代码:

//准备: 窗体上放一个 ClientDataSet1 和六个 Button

{ 准备测试数据 }
procedure TForm1.FormCreate(Sender: TObject);
begin
  with ClientDataSet1 do begin
    FieldDefs.Add('ID', ftInteger);
    FieldDefs.Add('Name', ftString, 6);
    FieldDefs.Add('Age', ftWord);
    CreateDataSet;
    AppendRecord([1, '赵AB', 11]);
    AppendRecord([2, '钱AB', 22]);
    AppendRecord([3, '孙AB', 33]);
    AppendRecord([4, '李AB', 44]);
    AppendRecord([5, '赵ab', 55]);
    AppendRecord([6, '钱ab', 66]);
    AppendRecord([7, '孙ab', 77]);
    AppendRecord([8, '李ab', 88]);
  end;
end;

{ Locate 测试 }
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ClientDataSet1.Locate('Name', '赵ab', []) then
    ShowMessage(ClientDataSet1.FieldValues['Age']); { 55 }

  if ClientDataSet1.Locate('Name', '赵ab', [loCaseInsensitive]) then
    ShowMessage(ClientDataSet1.FieldValues['Age']); { 11 }

  if ClientDataSet1.Locate('Name', '钱a', [loPartialKey]) then
    ShowMessage(ClientDataSet1.FieldValues['Age']); { 66 }

  if ClientDataSet1.Locate('Name', '钱a', [loCaseInsensitive,loPartialKey]) then
    ShowMessage(ClientDataSet1.FieldValues['Age']); { 22 }

  if ClientDataSet1.Locate('Name;Age', VarArrayOf(['钱ab',66]), []) then
    ShowMessage(ClientDataSet1.FieldValues['Age']); { 66 }
end;

{ Lookup 测试 }
procedure TForm1.Button2Click(Sender: TObject);
var
  R: Variant;
  i: Integer;
begin
  R := ClientDataSet1.Lookup('Name', '钱AB', 'Age');
  if not VarIsNull(R) then ShowMessage(R); { 22 }

  R := ClientDataSet1.Lookup('Name;Age', VarArrayOf(['钱ab',66]), 'Age');
  if not VarIsNull(R) then ShowMessage(R); { 66 }

  R := ClientDataSet1.Lookup('ID', 6, 'Name;Age');
  if VarIsArray(R) then
    for i := VarArrayLowBound(R, 1) to VarArrayHighBound(R, 1) do
      ShowMessage(R[i]); { 钱ab / 66}
end;

{ SetKey、GotoKey 测试 }
procedure TForm1.Button3Click(Sender: TObject);
begin
  ClientDataSet1.IndexFieldNames := 'Name';
  ClientDataSet1.SetKey;
  ClientDataSet1.FieldValues['Name'] := '钱ab';
  if ClientDataSet1.GotoKey then
    ShowMessage(ClientDataSet1.FieldValues['Age']); { 66 }
end;

{ SetKey、GotoNearest 测试 }
procedure TForm1.Button4Click(Sender: TObject);
begin
  ClientDataSet1.IndexFieldNames := 'Name';
  ClientDataSet1.SetKey;
  ClientDataSet1.FieldValues['Name'] := '孙';
  ClientDataSet1.GotoNearest;
  ShowMessage(ClientDataSet1.FieldValues['Age']); { 77 }
end;

{ FindKey 测试 }
procedure TForm1.Button5Click(Sender: TObject);
begin
  ClientDataSet1.IndexFieldNames := 'Name; Age';

  if ClientDataSet1.FindKey(['赵ab']) then
    ShowMessage(ClientDataSet1.FieldValues['Age']); { 55 }

  if ClientDataSet1.FindKey(['赵AB', 11]) then
    ShowMessage(ClientDataSet1.FieldValues['Age']); { 11 }
end;

{ FindNearest 测试 }
procedure TForm1.Button6Click(Sender: TObject);
begin
  ClientDataSet1.IndexFieldNames := 'Name';
  ClientDataSet1.FindNearest(['赵']);
  ShowMessage(ClientDataSet1.FieldValues['Age']); { 55 }
end;

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2010/02/01/1661303.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
ClientDataSet探讨(1)-介绍

KeyLife富翁笔记 作者: hongxingdl 标题: ClientDataSet探讨(1)-介绍 关键字: midas 分类: 开发经验 密级: 公开 与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,...

天地弦
2004/08/06
0
0
TClientDataSet使用(二)

转自:http://hi.baidu.com/zwl232/blog/item/76f011dfc9543812622798f2.html TClientDataSet    与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的......

天地弦
2007/06/01
0
0
一个ClientDataset的Delta与XML相互转换

一个ClientDataset的Delta与XML相互转换的文章: 大家都知道TClientDataSet的Delta属性保存数据集的变化,但是Delta是OleVariant类型的属性,这样如果用Delphi写Webservice,就有需要把它转成...

vga
2014/02/27
0
18
带有TClientDataSet的delphi应用程序在发布时应注意的问题

这两天,我把我做的拍卖的操作端发布给公司的同事试用,这些机器都没有安装过delphi环境,我的程序所有用到的组件及单元文件都是build在一块儿的,按理说就不需要其他什么文件来支持了。  本...

技术小胖子
2017/11/02
0
0
java将blob数据写入到xml中,Delphi TClientDataSet 读取blob失败

我用java把mysql数据写入到xml中,delphi TClientDataSet读取xml展示数据,数值、文本类型都能正常显示;blob类型异常 这里的原因应该是java将blob数据写入到xml中,delphi不认,请大神指点,...

liutao7514
2014/10/13
162
0
Android开发数据库三层应用-DataSnap

Android开发数据库三层应用-DataSnap 时间:2013-10-24 13:41:54 点击:4988   核心提示:我觉得Delphi最强大的的功能之一就是开发数据库三层应用的DataSnap,在Android上的实现,首先是完...

vga
2014/06/01
0
0
JSon SuperObject 研究2:数据集与JSON对象互转

JSon SuperObject 研究2:数据集与JSON对象互转 JSON不能完全替代XML,但绝对是未来的大势所趋,其优点是简单、体积小、解析更快、解析占用资源更少。在delphi中,数据集是最常用数据存取方式...

vga
2014/12/20
0
1
ClientDataSet探讨(4)--提交与恢复

KeyLife富翁笔记 作者: hongxingdl 标题: ClientDataSet探讨(4)--提交与恢复 关键字: midas 分类: 开发经验 密级: 公开 提交更新过程: 首先,客户程序要调用ApplyUpdates函数向应...

天地弦
2004/08/06
0
0
find选项详解

查找文件,可以使用whereis、locate命令。 实际排查问题时,查找特定时间变动过的文件,查找与给定文件有时间关系的文件就需要使用更加强大的查找命令find。 whereis 选项 -b:查找二进制可执...

youshine
2015/06/15
0
0
superobject 序列 数据集 之间转化

superobject 序列数据集 unit uDBJson; interface {$HINTS OFF} usesSysUtils, Classes, Variants, DB, DBClient, SuperObject; typeTTableJSon = class private const const const const co......

vga
2016/08/31
18
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
46分钟前
1
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
1
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部