文档章节

TClientDataSet[22]: 数组字段与 ObjectView

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 334
阅读 2
收藏 0
点赞 0
评论 0

数组字段(ftArray) 与 ADT 字段类似(设计过程一样), 定义数组字段时只需定义一个元素来说明元素类型.

本例同时测试 ObjectView 为 True 和 False 时的不同效果.

下面是在运行时实现的数组字段:



//先在窗体上放置: DBGrid1、DataSource1、ClientDataSet1 并关联, 然后:

procedure TForm1.FormCreate(Sender: TObject);
begin
//  ClientDataSet1.ObjectView := True;

  { 先定义两个基本字段 }
  with ClientDataSet1.FieldDefs.AddFieldDef do begin
    Name := 'ID';
    DataType := ftInteger;
  end;
  with ClientDataSet1.FieldDefs.AddFieldDef do begin
    Name := 'Group';
    DataType := ftString;
    Size := 7;
  end;

  { 定义数组字段: 假如数组包括 4 个元素 }
  with ClientDataSet1.FieldDefs.AddFieldDef do begin
    Name := 'Member';
    DataType := ftArray;
    Size := 4;
    ChildDefs.Add('TempName', ftString, 11); { 只需定义一个子元素来说明元素类型 }
  end;
  ClientDataSet1.CreateDataSet;

  { 添加记录 }
  ClientDataSet1.AppendRecord([1, '一组', VarArrayOf(['A1','A2','A3','A4'])]);

  { 下面的添加方式也可用于访问 }
  ClientDataSet1.Append;
  ClientDataSet1['ID'] := 2;
  ClientDataSet1['Group'] := '二组';
  TArrayField(ClientDataSet1.FieldByName('Member'))[0] := 'B1';
  TArrayField(ClientDataSet1.FieldByName('Member'))[1] := 'B2';
  TArrayField(ClientDataSet1.FieldByName('Member')).FieldValues[2] := 'B3';
  TArrayField(ClientDataSet1.FieldByName('Member')).FieldValues[3] := 'B4';
  ClientDataSet1.Post;

  ClientDataSet1.Append;
  ClientDataSet1['ID'] := 3;
  ClientDataSet1['Group'] := '三组';
  TArrayField(ClientDataSet1.FieldByName('Member')).Fields[0].AsString := 'B1';
  TArrayField(ClientDataSet1.FieldByName('Member')).Fields[1].AsString := 'B2';
  TArrayField(ClientDataSet1.FieldByName('Member')).Fields[2].Value := 'B3';
  TArrayField(ClientDataSet1.FieldByName('Member')).Fields[3].Value := 'B4';
  ClientDataSet1.Post;
end;

{ 可以通过下面代码查看 ObjectView 为 True 和 False 时的不同 }
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.Close;
  ClientDataSet1.ObjectView := not ClientDataSet1.ObjectView;
  Text := Format('ObjectView: %s', [BoolToStr(ClientDataSet1.ObjectView, True)]);
  ClientDataSet1.Open;
end;

 
 
 
 
 

 

 

  

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

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
TClientDataSet使用(二)

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

天地弦 ⋅ 2007/06/01 ⋅ 0

ClientDataSet探讨(1)-介绍

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

天地弦 ⋅ 2004/08/06 ⋅ 0

一个ClientDataset的Delta与XML相互转换

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

vga ⋅ 2014/02/27 ⋅ 18

JSon SuperObject 研究2:数据集与JSON对象互转

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

vga ⋅ 2014/12/20 ⋅ 1

Android开发数据库三层应用-DataSnap

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

vga ⋅ 2014/06/01 ⋅ 0

带有TClientDataSet的delphi应用程序在发布时应注意的问题

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

技术小胖子 ⋅ 2017/11/02 ⋅ 0

java将blob数据写入到xml中,Delphi TClientDataSet 读取blob失败

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

liutao7514 ⋅ 2014/10/13 ⋅ 0

MongoDB 简单修改操作

修改器$inc 修改器格式{$inc:{filed:value}},该修改器可以用来修改value为数字类型的值,为指定的键对应的数值进行加减 修改年龄字段,使其增加4,这个增加值可以是负数 修改器$unset 修改器...

阿豪boy ⋅ 02/13 ⋅ 0

perl DBI 总结

http://www.cnblogs.com/homezzm/archive/2011/07/22/2113618.html 最近在写perl程序进行数据的采集,perl教程在网上少的可怜呐,至少我找到的资料是很少的。在连接数据库方面下面这个博客写...

十月的星空 ⋅ 2014/07/05 ⋅ 0

Go语言备忘录(1):基本数据结构

本文内容是本人对Go语言的变量、常量、数组、切片、映射、结构体的备忘录,记录了关键的相关知识点,以供翻查。 文中如有错误的地方请大家指出,以免误导!转摘本文也请注明出处:Go语言备忘...

nothingfinal ⋅ 04/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部