table表格怎么上移数据,table表格怎么让某一段没有边框

首页 > 经验 > 作者:YD1662022-10-29 00:48:41

7.ADO组件之ADOTable组件

ADOTable 组件属于数据集组件,使用该组件可用建立数据库表及索引,对已经存在的数据表进行插入、删除、修改等操作。

在 Delphi 中,提供了 Table、Query、StoredProc 等组件来处理数据。一般情况下,对于桌面数据库来说,使用 Table 组件效率最好,而对于 SQL 数据来说,使用 Query 组件避免了 SQL 语句的转化,效率会更高,对于处理过程比较复杂、数据量大的 SQL 操作,最好使用存储过程来操作。

ADOTable 组件位于 dbGo 页上,通过 ADO 连接到数据库上,从一个物理数据表中取出数据,并通过 TDataSource 组件把数据提供给一个或多个数据控制组件;另一方面,可以把用户通过数据控制组件输入的数据发送给物理数据库。

7.1ADOTable组件的主要属性

指定访问数据库所使用的 ADOConnection 组件

指定连接字符串,在不使用 ADOConnection 组件的情况下,也可以直接连接数据库

表示是否与数据库建立连接,取值为布尔类型:True / False,如果设置为 True,则表示与数据库建立连接,可以访问数据库;否则,表示数据集处于关闭状态,不能访问数据库表。

使用 Open 和 Close 方法对数据库表的操作效果进行修改 Active 属性的效果是一致的。

指定访问的数据库表的名称。

表示是否只读,如果设置为 True,表示数据库表的数据不能被修改,可以防止数据库表中的记录被修改。

表示当前记录指针所处的位置是否为数据表的第一条记录,属性值为布尔型

表示当前记录指针所处的位置是否为数据表的最后一条记录,属性值为布尔型

如果 Bof 和 Eof 都为 True 的话,则数据表为空表

表示数据库表是否可用被修改,属性值为布尔型,如果设置为 True,则表示可以被修改,否则表示不可被修改,如果表组件的 ReadOnly 设置为 True,则该属性将被设置为 Fasle。

表示数据库表是否已经被修改,取值为布尔型

7.2ADOTable组件的主要方法

1.打开与关闭

2.浏览数据

function MoveBy(Distance: Integer): Integer;

其中,Distance表示要移动的记录数目,取值为正数时表示向下移动,为负数时表示向上移动。

返回实际一定的记录数目。

3.编辑数据

procedure InsertRecord(const Values: array of const);

该方法会将缺少的字段值处理为 Null 值。

procedure SetFields(const Values: array of const);

其中:Values 中包含将插入的每个字段的值,其顺序是根据表中字段的先后顺序决定的,缺少的字段会作为 Null 值处理。

4.书签的使用

使用书签可以在数据表上快速定位记录指针。Delphi 支持在当前记录上标记书签,以便在后面能够快速返回到书签的位置。

function GetBookmark: TBookmark;

procedure GotoBookmark(Bookmark: TBookmark);

procedure FreeBookmark(Bookmark: TBookmark);

5.查询数据记录

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean;

其中:

7.3查找数据程序示例

界面如下:

table表格怎么上移数据,table表格怎么让某一段没有边框(1)

所使用的组件及属性:

组件

属性

Panel1

Caption

''

Align

alTop

Label1

Caption

'姓名'

Edit1

Text

''

Button1

Caption

'查找'

ADOConnection1

ConnectionString

Provider=MSDASQL.1;Persist Security Info=False;Data Source=demodb

LoginPrompt

False

Connected

True

ADOTable1

Connection

ADOConnection1

TableName

d_students

Active

True

DataSource1

DataSet

ADOTable1

DBGrid1

Align

alClient

DataSource

DataSource1

示例代码如下:

procedure TForm1.Button1Click(Sender: TObject); var chinese, math, english, total: Double; begin if ADOTable1.Locate('name', Edit1.Text, [loPartialKey]) then begin chinese := ADOTable1.FieldByName('chinese').AsFloat; math := ADOTable1.FieldByName('math').AsFloat; english := ADOTable1.FieldByName('english').AsFloat; total := chinese math english; Panel2.Caption := ADOTable1.FieldByName('name').AsString ':' floattostr(total); end else Panel2.Caption := '未找到'; end; procedure TForm1.FormCreate(Sender: TObject); begin ADOTable1.FieldByName('student_id').DisplayLabel := '学号'; ADOTable1.FieldByName('name').DisplayLabel := '姓名'; ADOTable1.FieldByName('sex').DisplayLabel := '性别'; ADOTable1.FieldByName('chinese').DisplayLabel := '语文'; ADOTable1.FieldByName('math').DisplayLabel := '数学'; ADOTable1.FieldByName('english').DisplayLabel := '英语'; ADOTable1.FieldByName('student_id').DisplayWidth := 16; end;7.4主从结构数据表

在 Delphi 中,通过主从结构显式地支持主从结构的数据表关系。

主从结构数据表关系设置相关的主要属性:

示例:

数据准备:

create table c_department ( department_id int4 primary key, department_name varchar(16) ); INSERT INTO c_department (department_id, department_name) VALUES(1, '计算机系'); INSERT INTO c_department (department_id, department_name) VALUES(2, '土木工程系'); create table d_students1 ( student_id varchar(64) primary key, name varchar(16), sex boolean, birthday date, department_id int4, total_score decimal(9,1) ); INSERT INTO d_students1 (student_id, "name", sex, birthday, department_id, total_score) VALUES('x-20210001', '张三', true, '2000-05-06', 1, 520); INSERT INTO d_students1 (student_id, "name", sex, birthday, department_id, total_score) VALUES('x-20210002', '李四', true, '2000-03-09', 1, 539); INSERT INTO d_students1 (student_id, "name", sex, birthday, department_id, total_score) VALUES('x-20210003', '周五', false, '2001-09-10', 2, 528); INSERT INTO d_students1 (student_id, "name", sex, birthday, department_id, total_score) VALUES('x-20210004', '赵六', true, '2000-08-28', 1, 517); INSERT INTO d_students1 (student_id, "name", sex, birthday, department_id, total_score) VALUES('x-20210005', '姜七', false, '2000-07-06', 2, 547); INSERT INTO d_students1 (student_id, "name", sex, birthday, department_id, total_score) VALUES('x-20210006', '贺八', true, '2000-11-01', 2, 533);

界面设计如下图:

table表格怎么上移数据,table表格怎么让某一段没有边框(2)

组件属性设置如下:

组件

属性

ADOConnection1

ConnectionString

Provider=MSDASQL.1;Persist Security Info=False;Data Source=demodb;

Connected

True

LoginPrompt

False

ADOTable1

Connection

ADOConnection1

Active

True

TableName

c_department

DataSource1

DataSet

ADOTable1

ADOtable2

Connection

ADOConnection1

Active

True

TableName

d_students1

MasterSource

DataSource1

MasterFields

department_id

DataSource2

DataSet

ADOTable2

DBGrid1

DataSource

DataSource1

DBGrid2

DataSource

DataSource2

设置 MasterFields 的方法,单击从表组件 ADOTable2 的属性 MasterFields 设置框右侧的 ... 按钮,进入关联字段的设置对话框,如下图所示:

table表格怎么上移数据,table表格怎么让某一段没有边框(3)

通过该对话框将从表的关联字段与主表的关联字段建立联系即可。

7.5字段编辑器

在 TADOTable 组件上右击选择 Fields Editor,即可打开字段编辑器,在字段编辑器中增加固定字段并进行编辑,如下图:

table表格怎么上移数据,table表格怎么让某一段没有边框(4)

选择 ADOTable2 ,右击选择 Fields Editor,添加所有字段为固定字段,然后选择 NewField,如下图:

table表格怎么上移数据,table表格怎么让某一段没有边框(5)

设置Name、Type、FieldType,本例设置:

Name

avg_score

Type

Float

FieldType

Calculated

编写 ADOTable2 的 OnCalcFields 事件代码:

procedure TForm1.ADOTable2CalcFields(DataSet: TDataSet); begin ADOTable2avg_score.Value := round(ADOTable2total_score.AsFloat / 6.0 * 10) / 10; end;

在字段编辑器中右击选择 New Field,设置如下图所示:

table表格怎么上移数据,table表格怎么让某一段没有边框(6)

通过上面的设置,在 ADOTable2 中增加了 department_name 的显示,其数据来自于 ADOTable1 中。

无论是计算字段、查看字段,以及数据表字段,均可以在字段编辑器中通过拖放操作来调整显示顺序。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.