TTable 是 TDataSet 的派生类,它是基于 BDE 数据库引擎的数据集组件,也是一个较简单的数据组件,可以直接从数据库中获取数据表的数据,只需设置连接的数据库属性(Database) 和所要获取的数据表名称(Tablename),所以对于简单的应用来说,使用 TTable 是一种快速的方法。

TTable 常用属性

Filter 属性: 可以进行简单的数据过滤(不要求有索引),也可进行复杂的动态数据过滤,只要在对象的 Filter 中输入合适的“过滤条件”,将对象的 Filtered 属性设为 True。

Delphi 提供了属性 Filter, Filtered, Filteroptions 和事件 OnFilterrecord 来实现过滤器的功能。

  • Filter:用于输入过滤条件,其值为字符串类型,可以是个条件表达式。
  • Filtered:默认为 False,表示过滤器关闭,如果设置为 True,就会执行过滤操作,引发 OnFilterrecord事件。
  • Filteroptions:用于设置过滤器的两个参数 FoCaseinsensitive 和 Fonopartialcompare。FoCaseinsensitive 表示过滤器对大小写是否敏感。Fonopartialcompare 表示过滤器是否支持通配符(*)所表示的部分匹配。
procedure TForm1.Button3Click(Sender: TObject);
begin
Table1.Filtered:=True;
Table1.Filter:='语文成绩>60';
end;

TTable 常用方法

Locate:是TTable 最常用的数据搜索方法之一,可以根据一个或者几个字段的值查找并定位记录。返回结果为 False 说明没有找到匹配记录,为 True 说明找到匹配记录。

方法声明

function TBDEDataSet.Locate(const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions): Boolean;
KeyFields:要搜索的字段名称
KeyValues:字段要满足的值
Options:要搜索的选项,是集合类型。LoPartialkey 表示是否使用通配符, LoCaseInsensitive 表示是否大小写敏感.
// 单一字段搜索
procedure TForm1.Button1Click(Sender: TObject);
begin
if Table1.Locate(ComboBox1.Text, Edit1.Text, [loCaseInsensitive]) then
ShowMessage('找到记录')
else
ShowMessage('找不到记录');
end; //多个字段搜索
procedure TForm1.Button2Click(Sender: TObject);
begin
if Table1.Locate(ComboBox1.Text+';'+ComboBox2.Text, VararrayOf([Edit1.Text, Edit2.Text]), [loCaseInsensitive]) then
ShowMessage('找到记录')
else
ShowMessage('找不到记录');
end;

注:查询多个字段时,需要使用";" 连接字段。

Lookup:也是TTable 最常用的数据搜索方法之一,只需指定所要搜索的字段名称、搜索值及要返回的字段即可。数据搜索成功会以变量的数据类型返回指定的字段值,否则返回 Null 值。与 Locate 最大的不同在于  Lookup 并不会改变目前的数据指针。

方法声明

function TBDEDataSet.Lookup(const KeyFields: string; const KeyValues: Variant;
const ResultFields: string): Variant;
KeyFields:要搜索的字段名称
KeyValues:字段要满足的值
ResultFields:要返回的字段

当用户直接使用 TTable 组件时,该组件使用默认的字段设置。若要改变 TTable 组件的字段设置,可以通过字段编辑器实现。在窗体上双击 TTable 组件后,便进入字段编辑器对这些字段分别进行编辑。

选择字段编辑器中字段的常用属性

Alignment:字段数据显示的对齐方式

DisplayFormat:设置字段内的数据表示方式,若是数字类型的数据需要加上千元分隔符,则属性值为#,###

DisplayLabel:设置该字段的标题名称,默认为该字段名称,当设置好特定的字段名称后,所有使用该数据集的组件也会直接采用此新设的字段名称

EditMask:当进入编辑模式时,设置该字段的编辑屏蔽,也就是可以限制用户输入的数据格式或数据内容

FieldName:设置该字段和数据表连接的字段,也就是指定该字段从数据表中哪个字段获取数据

ReadOnly:分别设置每个字段的只读与否

Visible:设置字段的显示与否,若使用 TDBGrid 之类的控制组件相连时,则设置为 False 的字段将不会出现在 TDBGrid 组件的显示画面上。

字段编辑器特殊功能

字段编辑器的快速拖动

  字段编辑器的快速拖曳可直接从字段编辑器中拖曳字段到窗体上使用,Delphi 会自动提供设置好的 TDBEdit 组件来显示这些拖曳的字段,不需要再设置如 DataField 和 DataSource 之类的属性, TDataSource 组件在拖曵中也一并增加在窗体中。

字段编辑器的计算字段

  在字段编辑中除了对现有的字段进行编辑外,也可以根据现有的字段生成具有运算效果的新字段,这些字段能处理如汇总或几个字段值相加的效果

字符编辑器的引用字段

  除了计算字段外, TTable 组件的字段类型还支持引用 类型,也就是一个数据表中的字段数据可以引用另外一个数据表中的某个字段。因为引用字段必须引用另外一个数据表,所以在设置上与计算字段有些差别,其中主要的差别就在于引用数据表的设置,除了设置引用数据表外还必须指定两者之间的对应关系,这些设置都是在选择字段类型为 Lookup 完成的。

引用字段功能

DataSet:设置所要引用的数据集

Lookup Keys:引用数据集中被引用的字段,也就是根据这个数据字段和原本的数据集创建对应的关系

Result Field:对应关系创建后,要从引用数据集中显示的数据字段

Key Fields:原来的数据集中用来和引用数据集创建对应关系的字段,所以该字段必须和 Lookup Keys 有对应关系

当添加的字段为 Calculated (计算字段)时,必须利用 onCalcFields事件处理新字段的计算问题。

procedure TForm1.Table1CalcFields(DataSet: TDataSet);
var
sum: Integer;
begin
sum:=DataSet.FieldByName('yuwenscore').AsInteger + DataSet.FieldByName('mathscore').AsInteger;
DataSet.FieldByName('sum').AsInteger := sum ;
end;

Delphi TTable 组件的更多相关文章

  1. Delphi的组件读写机制

    Delphi的组件读写机制(一) 一.流式对象(Stream)和读写对象(Filer)的介绍在面向对象程序设计中,对象式数据管理占有很重要的地位.在Delphi中,对对象式数据管理的支持方式是其一大特 ...

  2. Delphi IdHttp组件+IdHttpServer组件实现文件下载服务

     http://blog.csdn.net/xxkku521/article/details/16864759 Delphi IdHttp组件+IdHttpServer组件实现文件下载服务 2013- ...

  3. Delphi TDatabase 组件

    TDatabase 组件是一个能与远程数据库通过 BDE 建立连接的组件,可使本地端的程序获取远程的数据. 通过 TDatabase 组件的使用,可以减少与远程数据库连接的窗口,当远程数据库的设置变动 ...

  4. Delphi 第三方组件

    TMS Component Pack v7.0.0.0 TMS Component Pack 版本为Delphi和C++ Builder提供了超过350个VCL组件,用以创建功能丰富的.现代的和原生W ...

  5. Delphi第三方组件安装DCU.PAS.DPK.BPL.ActiveX控件

    不是由BORLAND提供的组件叫第三方组件:安装方法:南山古桃(nsgtao)首先提醒一下:最好把要安装的文件先复制到Delphi安装目录的Lib目录下再执行下面的操作!就目前常见的各种形式的组件的安 ...

  6. Delphi xe7组件和控件的安装方法

    暂时我所遇到的所有控件安装方法大体与下面两种相同. 若有不同大家提出来,一起想办法解决. .dproj格式的组件安装方法: raise组件 安装详细步骤如下: 一.设置搜索路径1. 将本包中的文件连同 ...

  7. delphi TAdoQuery组件的close方法可能导致”列名无效“错误

    1,故障现象 一次程序运行,出现如下错误: 对应代码如下: 2,故障分析 Query_alert_2的语句在查询分析器中单独执行是正常的.排除语句出错. 如果注解掉Query_alert_1,则错误变 ...

  8. delphi TTreeView组件遍历磁盘目录

    TTreeView组件遍历磁盘目录 实例说明 TTreeView组件是一个以分枝结构或者说树状结构显示数据的组件,以该组件显示数据具有较好的等级关系和逻辑层次,并且易于操作.在组件中显示的数据结构与系 ...

  9. CSDN论坛 > Delphi > VCL组件开发及应用 DBLookupComboBox用法

    (1)DataSource属性    该属性用于连接要编辑数据的主表数据源(2)DataField属性    该属性用于指定要编辑的数据字段名(3)ListSource属性    .    该属性用于 ...

随机推荐

  1. rabbitmq之amqp queue

    rabbitmq作为一个消息中间件,暂存信息的能力是必不可少的. 镜像队列

  2. Nest查询示例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. SharedPreferences第一次使用后HashMap将常驻内存

    今天使用SharedPreferences的时候突然想到了这个问题,因为我们要存储应用级别的上下文信息,包括用户信息等一系列信息:这个时候使用getSharedPreferences是否合适呢! 其实 ...

  4. 服务器IP地址后修改SQL Server配置

    1. 修改TCP/IP 属性的IP 地址 修改该实例的协议.修改TCP/IP协议的属性,将IP地址更新为当前的最新IP 地址.然后重启该实例. 2.查看全部侦听再检查SQL Server 实例的TCP ...

  5. YII2.0--------这篇文章记录我学习YII2.0的过程吧,也可以让更多的人少走弯路

    1.情况:今天我从github上下载了一个项目,本以为直接丢到根目录运行就行了,但是不行. 解决办法:首先安装git,安装步骤这里不讲了,稍微讲一下配置环境变量.

  6. C++用递归方式实现在对不更改随机数组的情况下查找最大值

    #include <iostream> #include <iomanip> #include <ctime> using namespace std; int M ...

  7. csuoj 1114: 平方根大搜索

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1114 1114: 平方根大搜索 Time Limit: 5 Sec  Memory Limit:  ...

  8. C#窗体 自定义控件

    1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Dr ...

  9. RuntimeWarning: invalid value encountered in divide

    import numpy as np olderr = np.seterr(all='ignore') 在程序的开头加上如上代码 https://docs.scipy.org/doc/numpy/re ...

  10. 安卓与PC网络对接实现视频实时播放

    研究安卓网络通信一段时间了,  由于最近公司催的比较紧, 硬着头皮弄出来了. 现在手机客户端终于能够连接流媒体服务器实时播放前端的视频流了. 其实通信方面主要还是命令包的解析, 以及分包组包. 比如要 ...