admin 管理员组

文章数量: 887021


2023年12月24日发(作者:js网页特效大全)

易语言数据库操作教程

2010.06.03

1

PDF 文件使用 "pdfFactory Pro" 试用版本创建

一、通用提供者与数据库提供者

编程序在很多时候是要使用大量数据的,但常规情况下数据的显示、浏览是比较困难的(如果用标签、编辑框等通用组件来逐个显示数据,则往往需要很多组件,编程也十分繁琐)。为了简化易语言中的数据操作,飞扬软件工作室在易2.0版本之后提出了“数据应用框架”的概念。

“数据应用框架”最大的特点就是把数据、数据操作、数据显示分为3个不同的层次。每个层次由各自的组件完成相对独立的工作,至于各层次之间的千丝万缕的联系,则由易语言在内部实现。这3个层次由低到高分别是:数据提供者、数据源、数据处理者,如13-1所示。

图13-1 数据提供者、数据源、数据处理者关系图

其中,数据提供者用于存储、提供数据;数据源用于操作数据;数据处理者用于显示数据。基本上数据提供者类似于商品仓库、后勤,而数据处理者相当于前台、展示柜台,数据源相当于包装车间及运输部门。

注意:数据源仅提供操作接口,实际操作还是由数据提供者完成的,但这一节已被易隐藏,因而可以认为数据源是数据的操作者。这里所说的“数据”,不仅仅是指“数据库”,它的范围更广阔,而“数据库”只是“数据”的一部分而已。

在易语言中,可充当数据提供者的组件有:通用提供者提供者绍);可充当数据源的就一个数据源组件有编辑框l

l

l

、数据库,此外还、外部数据提供者等(外部数据提供者组件将在下一章节介;可充当数据处理者的组件就很多了,最重要的是表格组件、标签、图片框、组合框、列表框。

、标签、列表框。

等拥有数据源、数据列属性的所有组件如下。

、编辑框数据处理者:表格组件数据源:数据源组件数据提供者:通用提供者、数据库提供者、外部数据提供者。

数据提供者、数据源、数据处理者三者之间必须事先“关联”起来,互相协调配合,才能共同完成对数据的处理。

“关联”的方法是:(1)添加相应的组件,即数据处理者、数据源、数据提供者这三个组件都必需存在;(2)将数据源的“数据提供者”属性设置为某个数据提供者组件;(3)将数据处理者组件的“数据源”属性设置为某个数据源组件。

要浏览/管理某个数据库,可以按如下方法来编程序。

(1)在设计窗体上放3个组件:数据库提供者

图13-2 放置3个组件

,数据源,表格,如图13-2所示。

(2)设置数据库提供者组件的“数据库文件名”属性,即选择数据库文件(*.edb),如图13-3所示。

图13-3 为数据提供者加入数据库

(3)设置数据源组件的“数据提供者”属性为“数据库提供者1”(从下拉列表中选择),如图13-4所示。

2

PDF 文件使用 "pdfFactory Pro" 试用版本创建

(4)设置表格组件的“数据源”属性为“数据源1”(从下拉列表中选择),如图13-5所示。

图13-4 为数据源指定数据库提供者

图13-5 为表格组件指定数据源

经过上述设置之后,会发现指定的数据库中的内容已经自动显示到表格组件中了!此后如果对数据源进行操作,数据库中的内容也会被同时改动,并且表格中的数据也会同时更新。

由于表格、数据源、通用提供者、数据库提供者的属性、方法、事件比较多,此处只介绍其中个别的几个。更详细的使用请参考易语言安装程序附带的“易之表”例程。

13.1 通用提供者与数据库提供者

通用提供者组件和数据库提供者组件都可充当“数据提供者”,因属同一类组件,所以放在一起介绍。但它们也是有区别的。

(1)通用提供者。使用内存作为数据的存储仓库,全面支持所有数据操作接口。因此必要时可以将其他类型数据提供者内的数据导入到此类型中,以全面发挥数据源对数据的操纵能力。

(2)数据库提供者。使用数据库作为数据的存储仓库,不支持以下数据操作接口:置行高;置类型;置文本色;置背景色;置字体名;置字体尺寸;置字体属性;置边距;置文本输入格式;置对齐方式;置密码方式;合并;分解;加线条;删线条;初始尺寸同时改变列数;在中间插入行;插入列;删除列。

如果想对数据库提供者中的数据进行以上操作,应该先将数据通过数据源导出到通用提供者中。

通用提供者组件和数据库提供者组件没有重要事件。

通用提供者组件和数据库提供者组件没有专有方法。

13.1.1 通用提供者的重要属性

“初始行数”、“初始列数”属性

“初始行数”、“初始列数”属性均为整数型。指定初始数据的行、列数。默认值都是0。

当通用提供者跟数据源、表格正确关联后,如果不设置这两个属性,表格中仍然一片空白,看不出一点表格的样子(因为初始行列数默认值都是0)。为了美观可随便设定某个值。导入数据之前要清除这两个,清除方法:

数据源1.初始尺寸(0,0)

3

PDF 文件使用 "pdfFactory Pro" 试用版本创建

13.1.2 数据库提供者的重要属性

1.“数据库文件名”属性

文本型。指定欲操作的数据库全路径文件名(*.edb)。

这是数据库提供者最重要的一个属性。

2.“字节集字段处理”属性

整数型。指定对字节集类型字段的处理方式。有以下可选值:0.跳过;1.视为图片数据;2.视为字节集数据,默认值是0,跳过。

如果确信数据库中没有字节集字段,可置为0;如果确信有字节集字段且为图片数据,则置为1;如果确信有字节集字段但不是图片数据,可置为2。通常保持默认值0,当然置为2是最保险的。

数据提供者,顾名思义就是数据的“提供者”,以供数据源组件进行处理。

注意:它是通过调用“数据源组件”的“方法”,对“数据提供者组件”中的数据进行处理。为什么数据源能够处理到数据提供者组件中的数据呢?因为两者已经“关联”在一起了。“关联”的方法就是把数据提供者组件数据源组件的数据提供者属性设置为相应的数据提供者组件,用代码可表示为:

数据源1.数据提供者=“数据库提供者1”

数据源1.数据提供者=“通用提供者1”

3.“数据库密码”属性

易语言3.3以上版本提供了数据库加密功能,以保护数据库的安全。选择易语言3.3以上版本中的菜单:“数据库”→“结构编辑器”或使用“置数据库密码()”命令为一个打开的数据库更新密码。

而当数据库有密码时,可以通过在本属性中填充密码来顺利打开数据库。

13.1.3 具体应用

1.将数据库提供者中的数据“导入”到通用数据提供者的方法

易语言知识库中多次提到数据的导入导出问题,但又未明确给出使用方法(在‘易之表’例程中有),这给不少初学者带来麻烦。方法很简单,只需用到数据源组件的“添加()”方法:

数据源1.添加(数据库提供者1, , )

数据源1.添加(数据源2, , )

打开例程:“导入.e”,如图13-6所示。

图13-6 导入数据

里面的“显示数据”按钮就应用了“导入”功能。相关程序代码如下:

子程序:_按钮2_被单击 备注:“导入”数据

通用对话框1.初始目录 = 取当前目录 ()

如果真 (通用对话框1.打开 () = 真)

数据库提供者1.数据库文件名 = 通用对话框1.文件名

如果真结束

数据源1.初始尺寸 (0, 0) *备注:本行用于清除"数据源1"中的原有数据(原来是空数据)

数据源1.添加 (数据库提供者1, , )

*备注:这一行就是“导入”——将“数据库提供者1”中的数据“导入”数据源1中(导入后立刻就能显示到表格中)

2.选用原则

作为最重要的两个数据提供者,通用提供者组件和数据库提供者组件的关系是:前者功能强大,可对数据进行各种操作,但没有直接的数据来源;后者功能受限,只能完成数据的基本操作,但可以直接连接到数据库。二者的选用原则是如下。

4

PDF 文件使用 "pdfFactory Pro" 试用版本创建

(1)如果要使用数据库,且对数据的操作不涉及外观设置(如修改字体、颜色或单元格线条等),可选用数据库提供者。

(2)如果需要使用数据库,又想对数据进行外观设置,可同时使用数据库提供者和通用提供者组件(先把数据库提供者中的数据“导入”通用提供者中,再对后者操作)。

(3)如果没有用到数据库,可单独选用通用提供者。

二、 数据源

数据源是数据提供者与数据处理者之间的纽带,数据源组件是可视组件,如图13-7所示。

5

13.2.3 数据源的专有方法

数据源组件的方法非常之多,目前有69个。这里不可能一一介绍,请大家查看支持库面板中的“数据类型”→“数据源”,提示面板里面将列出的数据源组件的所有属性方法和事件(显示于状态夹中),如图13-9所示。

图13-9 数据源的命令

数据源组件的方法分类如下。

(1)记录的操作类方法:“到首记录()”,“到尾记录()”,“跳过()”,“跳到()”,“取记录号()”。

(2)行列的操作类方法:“取行数()”,“取列数()”,“插入行()”,“添加行()”,“删除行()”,“插入列()”,“删除列()”。

(3)数据存取操作类方法:“置文本()”,“取文本()”,“置数据()”,“取数据()”,“添加()”,“初始尺寸()”,“存到字节集()”,“从字节集读()”,“存到文件()”,“从文件读()”,“单元格到字节集()”,“字节集到单元格()”,“单元格到文件()”,“文件到单元格()”,“刷新显示()”,“保存更改()”。

(4)外观的操作类方法:“置表头行数()”,“置表头列数()”,“置行高()”,“置列宽()”,“置文本色()”,“置背景色()”,“置字体名称()”,“置字体尺寸()”,“置字体属性()”,“置边距()”,“置对齐方式()”,“置初始属性()”。

(5)单元格操作类方法:“合并()”,“分解()”,“是否被合并()”,“加线条()”,“删线条()”,“是否有线条()”,“清除()”。

(6)打印操作类方法:“打印设置()”,“置打印设置()”,“取打印设置()”,“取打印页宽()”,“取打印页高()”。

提示:易语言附带的例程“易之表.e”中,演示了数据源组件及表格组件的绝大多数属性方法。

1.如何模拟按钮

打开例程:“数据源-模拟按钮.e”,如图13-10所示。

图13-10 “数据源-模拟按钮.e”

到首记录与到尾记录的程序代码如下:

子程序:_按钮到首记录_被单击

数据源1.到首记录 ()

══════════════════════════════

子程序:_按钮到尾记录_被单击

数据源1.到尾记录 ()

可以看出上述程序代码是使用了数据源的两个方法命令。

上一记录与下一记录按钮的程序代码如下:

子程序:_按钮上一记录_被单击

数据源1.跳到 (表格1.取光标行号 () - 1)

══════════════════════════════

子程序:_按钮下一记录_被单击

数据源1.跳到 (表格1.取光标行号 () + 1)

这里没有用数据源组件的命令取行号,而是使用了表格组件取行号,这是因为表格如果添加了空白行的话,它的行号比数据源中的记录号要多,因此取表格的光标行号要更加准确一些。

增加行与删除行的程序代码如下:

子程序:_按钮增加一行_被单击

如果 (数据源1.数据提供者 ≠ “数据库提供者1”)

数据源1.插入行 (表格1.取光标行号 (), )

否则

数据源1.插入行 (数据源1.取行数 () + 1, )

6

PDF 文件使用 "pdfFactory Pro" 试用版本创建

表格1.置光标 (数据源1.取行数 (), 1)

如果结束

══════════════════════════════

子程序:_按钮删除一行_被单击

数据源1.删除行 (表格1.取光标行号 (), 表格1.取选择行数 ())

可以看到“增加一行”的按钮使用了取数据源中的所有记录行数,即为数据源的末尾加空白行。而“删除一行”的按钮使用了取表格光标行号的命令,这样在光标处就会被删除。

为什么增加一行对于数据源为“数据库提供者”来说只能在末尾增加,而不能在当前选中行后面增加呢?而当数据源为“通用提供者”时可以随时增加呢?因为通用提供者要比数据库提供者灵活,所以有的功能对于数据库提供者来说用不上。

2.易之表grd文件与数据库EDB文件

将存在于通用提供者中的数据内容可以保存为GRD文件,GRD文件在易语言中也被称之为易之表文件,这是因为易语言提供了一个工具“易之表.e”,可由它保存生成的GRD文件。

存在于数据库提供者中的数据库EDB文件,只要是数据库作为通用提供者,那在数据源及表格中的修改可以立即生效并保存为数据库的EDB文件。

打开例程“易之表.e”并运行它,可以在开始菜单中看到一个是“打开”菜单,另一个是“修改数据库”,如图13-11所示。

“打开”菜单打开的是GRD文件,使用了“通用提供者”组件提供的“数据源”。用“修改数据库”菜单打开的是EDB数据库文件,使用的是“数据库提供者”作为“数据源”,因此两个菜单实现的功能并不一样。

通用提供者比数据库提供者灵活,下面用两个不同的菜单来体会它们的区别。

图13-11 运行“易之表.e”例程

打开一个GRD文件,若没有找到GRD也可以在“易之表”初次运行时任意填充一些数据在表格中,因为启动时程序设置默认为使用“通用提供者”提供数据源。在这里将鼠标放在两行表头前,改变表头高度,如图13-12所示。

图13-12 调整行高

包括调整前景色与背景色都是可以的,而当使用“修改数据库”菜单打开EDB数据库文件后,上述操作都不可以了。

打开与保存GRD文件使用的是“存到文件”、“从文件读”两个命令。

“易之表.e”中,保存菜单使用的“保存文档”事件子程序中相关程序代码为:

数据源1.存到文件 (保存文件名)

“易之表.e”中,打开菜单使用的“打开并读入文件”事件子程序中相关程序代码为:

数据源1.从文件读 (文件名)

3.“初始尺寸()”方法

在通用提供者中也有两个“初始行数”、“初始列数”的属性,它们与这个方法是类似的。

初始数据源中数据的行列数时,会将数据源中所有数据清除。某些数据提供者不支持此方法。成功返回“真”,失败返回“假”。“初始尺寸”带有两个参数。

l

参数<1>的名称为“行数”,类型为“整数型(int)”,可以被省略。如果本参数被省略,默认值为1。

l

参数<2>的名称为“列数”,类型为“整数型(int)”,可以被省略。如果本参数被省略,默认值为1。

7

PDF 文件使用 "pdfFactory Pro" 试用版本创建

如“易之表”中即在“新建”菜单中有以下的程序代码:

数据源1.初始尺寸 (50, 10)

这就表示在新建一个新的GRG文件时将空表的行数定为50行,空表的列数定为10列。

下面的一些方法是以“易之表.e”为例,为了能快速找到想要的命令,可以使用易语言的快速查找功能。

运行易语言,并且打开例程“易之表.e”,双击窗体进入程序设计界面,使用Ctrl+F组合键在程序设计界面中查找,输入想要找的命令,如“初始尺寸”即可以查找到,如果想继续查找,可以使用F3热键,如图13-13所示。

图13-13 查找程序代码

4.“打印设置()”方法

调用格式:〈逻辑型〉对象.打印设置()

调用对话框设置数据的打印配置信息。当操作者按“确认”按钮退出对话框时返回“真”,否则返回“假”。

如“易之表”中即在“打印”菜单中有以下的程序代码:

子程序:_打印_被选择

如果真 (数据源1.打印设置 ())

设置修改 ()

表格1.打印 (, )

如果真结束

5.“清除()”方法

调用格式:〈无返回值〉对象.清除(行号,列号,[行数],[列数])

清除数据源中指定范围内单元格内容为空文本。

如“易之表”中即在“剪切”菜单中有以下的程序代码:

子程序:_剪切_被选择

数据源1.清除 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 ())

6.“合并()”方法

调用格式:〈无返回值〉对象.合并(行号,列号,[行数],[列数])

组合数据源中指定范围内的单元格,使之以一个单元格的形式表现。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“组合”菜单中有以下的程序代码,如图13-14所示。

图13-14 组合菜单项

子程序:_组合_被选择

设置修改 ()

数据源1.合并 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 ())

7.“分解()”方法

调用格式:〈无返回值〉对象.分解(行号,列号)

分解数据源中指定的已经组合的单元格,行列参数指向被组合单元格内的任何一个单元格即可。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。本命令为初级对象成员命令。

如“易之表”中即在“分解”菜单中有以下的程序代码:

子程序:_分解_被选择

设置修改 ()

8

PDF 文件使用 "pdfFactory Pro" 试用版本创建

数据源1.分解 (表格1.取光标行号 (), 表格1.取光标列号 ())

8.“插入列()”方法

调用格式:〈逻辑型〉对象.插入列(列号,[列数])

在数据源中指定位置处插入新数据列。成功返回“真”,失败返回“假”。

如“易之表”中即在“插入列”菜单中有以下的程序代码:

子程序:_插入列_被选择

数据源1.插入列 (表格1.取光标列号 (), )

9.“删除列()”方法

调用格式:〈逻辑型〉对象.删除列(列号,[列数])

在数据源中指定位置处删除数据列。成功返回“真”,失败返回“假”。

如“易之表”中即在“删除列”菜单中有以下的程序代码:

子程序:_删除列_被选择

数据源1.删除列 (表格1.取光标列号 (), 表格1.取选择列数 ())

10.“置行高()”方法

调用格式:〈无返回值〉对象.置行高(行号,[行数],高度)

设置数据源中数据行在表现时的高度,单位为0.1mm。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“置行高”菜单中有以下的程序代码:

子程序:_置行高_被选择

局部变量:行高 数据类型:整数型

如果真 (输入框 (“请输入新行高(单位0.1毫米)”, “新行高”, , 行高, #输入整数) 且 行高 > 0)

数据源1.置行高 (表格1.取光标行号 (), 表格1.取选择行数 (), 行高)

设置修改 ()

如果真结束

11.“置列宽()”方法

调用格式:〈无返回值〉对象.置列宽(列号,[列数],宽度)

设置数据源中数据列在表现时的宽度,单位为0.1mm。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“置列宽”菜单中有以下的程序代码:

子程序:_置列宽_被选择

局部变量:列宽 数据类型:整数型

如果真 (输入框 (“请输入新列宽(单位0.1毫米)”, “新列宽”, , 列宽, #输入整数) 且 列宽 > 0)

数据源1.置列宽 (表格1.取光标列号 (), 表格1.取选择列数 (), 列宽)

设置修改 ()

如果真结束

12.“添加()”方法

调用格式:〈逻辑型〉对象.添加(数据源或数据提供者,[首行行号],[欲添加行数])

将指定其他数据源或者数据提供者中的数据添加到本数据源的尾部。成功返回真,失败返回假。

在“易之表”程序的“添加数据”菜单中有以下的程序代码:

子程序:_添加数据_被选择

通用对话框1.标题 = “请输入欲添加进来的表格文件名:”

通用对话框1.类型 = 0

如果真 (通用对话框1.打开 () = 真)

如果 (数据源2.从文件读 (通用对话框1.文件名) = 假)

*备注:数据源2仅在此处使用

信息框 (“打开欲添加文件失败!”, #错误图标, “错误”)

否则

数据源1.添加 (数据源2, , )

9

PDF 文件使用 "pdfFactory Pro" 试用版本创建

设置修改 ()

数据源2.初始尺寸 (1, 1)

*备注:因为使用的是通用提供者2,所以可以初始化尺寸.在此处清除通用提供者2内的数据.

如果结束

如果真结束

13.“置类型()”方法

调用格式:〈无返回值〉对象.置类型 (行号,列号,[行数],[列数],[类型])

设置数据源中指定单元格的数据类型。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表.e”程序的“文本型”菜单中有以下的程序代码,如图13-15所示。

图13-15 文本型菜单项

子程序:_文本型_被选择

设置修改 ()

数据源1.置类型 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #文本型)

═════════════════════════════

子程序:_图片文件名型_被选择

设置修改 ()

数据源1.置类型 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #图片文件名)

═════════════════════════════

子程序:_图片数据型_被选择

设置修改 ()

数据源1.置类型 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #图片数据)

14.“置文本色()”方法

调用格式:〈无返回值〉对象.置文本色(行号,列号,[行数],[列数],[文本颜色])

设置数据源中指定单元格在表现时的文本颜色。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“文本颜色”菜单中有以下的程序代码:

子程序:_文本颜色_被选择

颜色选择标题 = “请选择文本颜色:”

载入 (颜色选择窗口, , 真)

如果真 (返回颜色有效 = 真)

设置修改 ()

数据源1.置文本色 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), 返回颜色)

如果真结束

15.“置背景色()”方法

用格式:〈无返回值〉对象.置背景色(行号,列号,[行数],[列数],[背景颜色])

设置数据源中指定单元格在表现时的背景颜色。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“背景颜色”菜单中有以下的程序代码:

子程序:_背景颜色_被选择

颜色选择标题 = “请选择背景颜色:”

10

PDF 文件使用 "pdfFactory Pro" 试用版本创建

载入 (颜色选择窗口, , 真)

如果真 (返回颜色有效 = 真)

设置修改 ()

数据源1.置背景色 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), 返回颜色)

如果真结束

16.“置字体属性()”、“置字体名()”、“置字体尺寸()”方法

(1)“置字体属性()”方法调用格式: 〈无返回值〉 对象.置字体属性 (行号,列号,[行数],[列数],[字体属性])

设置数据源中指定单元格在表现时所使用字体的属性。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

(2)“置字体名()”方法调用格式: 〈无返回值〉 对象.置字体名 (行号,列号,[行数],[列数],[字体名称])

设置数据源中指定单元格在表现时所使用字体的名称。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

(3)“置字体尺寸()”方法调用格式: 〈无返回值〉 对象.置字体尺寸 (行号,列号,[行数],[列数],[字体尺寸])

设置数据源中指定单元格在表现时所使用字体的尺寸,单位为0.1mm注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“字体”菜单中有以下的程序代码:

子程序:_字体_被选择

局部变量:字体属性 数据类型:整数型

局部变量:字体尺寸 数据类型:双精度小数型

如果真 (字体对话框.打开 () = 真)

如果真 (字体对话框.加粗 = 真)

字体属性 = 字体属性 + #粗体

如果真结束

如果真 (字体对话框.倾斜 = 真)

字体属性 = 字体属性 + #斜体

如果真结束

如果真 (字体对话框.删除线 = 真)

字体属性 = 字体属性 + #删除线

如果真结束

如果真 (字体对话框.下划线 = 真)

字体属性 = 字体属性 + #下划线

如果真结束

数据源1.置字体属性 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (),

字体属性)

数据源1.置字体名 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), 字体对话框.字体名称)

字体尺寸 = (字体对话框.字体大小 × 10) ÷ 72 ÷ 0.0394

*备注:由于字体对话框返回的字体尺寸是以1/72英寸为单位,现将其转换为0.1mm.

数据源1.置字体尺寸 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (),

字体尺寸)

设置修改 ()

如果真结束

17.“置边距()”方法

调用格式:〈无返回值〉对象.置边距(行号,列号,[行数],[列数],[边距])

设置数据源中指定单元格在表现其中数据时至其单元格边框之间的空白距离,单位为0.1㎜。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

11

PDF 文件使用 "pdfFactory Pro" 试用版本创建

在“易之表”程序的“边距”菜单中有以下的程序代码:

子程序:_边距_被选择

局部变量:边距 数据类型:整数型

如果真 (输入框 (“请输入边距(单位0.1MM):”, “单元格边距设置”, “9”, 边距, #输入整数))

设置修改 ()

数据源1.置边距 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), 边距)

如果真结束

18.“置文本输入格式()”方法

调用格式:〈无返回值〉对象.置文本输入格式(行号,列号,[行数],[列数],[输入格式])

置数据源中某文本型单元格的输入格式。当新的数据通过输入方式更新到该单元格内之前,将首先自动根据此格式转换。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表.e”程序的“单元格”→“输入方式”系列菜单中有以下的程序代码,如图13-16所示。

图13-16 进入所选菜单项的“被选择”子程序

子程序:_通常型_被选择

设置修改 ()

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #通常型)

══════════════════════════════

子程序:_字节型_被选择

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #字节型)

══════════════════════════════

子程序:_短整数型_被选择

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #短整数型)

══════════════════════════════

子程序:_整数型_被选择

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #整数型)

══════════════════════════════

子程序:_长整数型_被选择

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #长整数型)

══════════════════════════════

子程序:_小数型_被选择

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #小数型)

12

PDF 文件使用 "pdfFactory Pro" 试用版本创建

══════════════════════════════

子程序:_双精度小数型_被选择

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #双精度小数型)

══════════════════════════════

子程序:_逻辑型_被选择

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #逻辑型)

══════════════════════════════

子程序:_日期时间型_被选择

数据源1.置文本输入格式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #日期时间型)

19.“置对齐方式()”方法

调用格式:〈无返回值〉对象.置对齐方式(行号,列号,[行数],[列数],[对齐方式])

设置数据源中指定单元格在表现时所使用的对齐方式。注意如果数据源所使用的数据提供者不支持某些属性,该属性将被忽略。

在“易之表”程序的“单元格”→“对齐方式”系列菜单中有以下的程序代码。

子程序:_上左_被选择

设置修改 ()

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #上左)

══════════════════════════════

子程序:_上中_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #上中)

══════════════════════════════

子程序:_上右_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #上右)

══════════════════════════════

子程序:_中左_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #中左)

══════════════════════════════

子程序:_中中_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #中中)

══════════════════════════════

子程序:_中右_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #中右)

══════════════════════════════

子程序:_下左_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #下左)

══════════════════════════════

子程序:_下中_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #下13

PDF 文件使用 "pdfFactory Pro" 试用版本创建

中)

══════════════════════════════

子程序:_下右_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #下右)

══════════════════════════════

子程序:_缩放图片_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #缩放图片)

══════════════════════════════

子程序:_居中图片_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #居中图片)

══════════════════════════════

子程序:_缩放居中图片_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #缩放居中图片)

══════════════════════════════

子程序:_平铺图片_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #平铺图片)

══════════════════════════════

子程序:_缩放平铺图片_被选择

数据源1.置对齐方式 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #缩放平铺图片)

20.“加线条()”方法

调用格式:〈无返回值〉对象.加线条(行号,列号,[行数],[列数],[线条类型])

为数据源中指定范围内单元格添加线条。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“单元格”→“边框或线条”系列菜单中有以下的程序代码。

子程序:_添加边框_被选择

设置修改 ()

数据源1.加线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #左边框

+ #上边框 + #右边框 + #下边框)

══════════════════════════════

子程序:_添加全部表格线_被选择

数据源1.加线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #左边框

+ #上边框 + #右边框 + #下边框 + #水平线 + #垂直线)

══════════════════════════════

子程序:_添加水平表格线_被选择

数据源1.加线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #水平线)

══════════════════════════════

子程序:_添加垂直表格线_被选择

数据源1.加线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #垂直线)

══════════════════════════════

子程序:_添加单斜线_被选择

数据源1.加线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #单斜线)

══════════════════════════════

14

PDF 文件使用 "pdfFactory Pro" 试用版本创建

子程序:_添加双斜线_被选择

数据源1.加线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #双斜线)

══════════════════════════════

子程序:_添加交叉线_被选择

数据源1.加线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #交叉线)

21.“删线条()”方法

调用格式:〈无返回值〉对象.删线条(行号,列号,[行数],[列数],[线条类型])

将数据源中指定范围内单元格内的线条去除。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“单元格”→“边框或线条”系列菜单中有以下的程序代码。

子程序:_清除内部表格线_被选择

设置修改 ()

数据源1.删线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #水平线

+ #垂直线)

══════════════════════════════

子程序:_清除斜线或交叉线_被选择

数据源1.删线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #单斜线

+ #双斜线 + #交叉线)

══════════════════════════════

子程序:_清除所有表格线_被选择

数据源1.删线条 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), #左边框

+ #上边框 + #右边框 + #下边框 + #水平线 + #垂直线)

22.“置数据()”方法

调用格式:〈无返回值〉对象.置数据(行号,列号,数据)

设置数据源中指定单元格的图片或字节集数据内容,注意该单元格类型必须为“#图片数据”或“#字节集数据”。

在“易之表”程序的“写入图片数据”菜单中有以下的程序代码。

子程序:_写入图片数据_被选择

※备注:图片文件名称可以直接以文本方式写入.

如果真 (图片文件对话框.打开 () = 真)

设置修改 ()

数据源1.置数据 (表格1.取光标行号 (), 表格1.取光标列号 (), 读入文件 (图片文件对话框.文件名))

如果真结束

23.“置表头行数()”方法

调用格式:〈无返回值〉对象.置表头行数([表头行数])

设置当以表格的形式表现数据源中的数据时表头所占的行数。表头行在表格中显示时不会滚动,在打印时会自动打印在每一页的顶部。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“置表头行数”菜单中有以下的程序代码。

子程序:_置表头行数_被选择

局部变量:表头行数 数据类型:整数型

如果真 (输入框 (“请输入表头行数:”, “表头行数设置”, “0”, 表头行数, #输入整数))

设置修改 ()

数据源1.置表头行数 (表头行数)

如果真结束

24.“置表头列数()”方法

调用格式:〈无返回值〉对象.置表头列数([表头列数])

设置当以表格的形式表现数据源中的数据时表头所占的列数。表头列在表格中显示时不会滚动。注意如果数据源所使用的数据提供者不支持此特性,本命令将被忽略。

在“易之表”程序的“置表头列数”菜单中有以下的程序代码。

15

PDF 文件使用 "pdfFactory Pro" 试用版本创建

子程序:_置表头列数_被选择

局部变量:表头列数 数据类型:整数型

如果真 (输入框 (“请输入表头列数:”, “表头列数设置”, “0”, 表头列数, #输入整数))

设置修改 ()

数据源1.置表头列数 (表头列数)

如果真结束

有关数据源的命令就介绍这些内容,其他命令在用到时可以激活方法,然后按下F1键查看帮助信息。其他的功能将在表格组件中进行介绍。

三、 表格组件

13.3.1 表格的重要属性

1.“数据源”属性

指定与表格相关联的数据源组件。在属性夹中设置本属性时,如果窗体上已经放置了某个(或多个)数据源组件,则会以下拉列表的形式列出,选择其中之一即可。如果要在程序中用代码的方式为本属性赋值,只需赋数据源组件名称的文本形式即可,如:

表格1.数据源 = “数据源1”

数据源属性是表格组件最重要的属性,不设置该属性,表格基本上没有存在的必要。

2.缩放比

整数型。指定表格在显示数据时所采用的显示比例,可以是20~1000内的任意整数值,默认值是100。

在“易之表”程序的“编辑”→“显示比例”菜单中有以下的程序代码。

子程序:_比例50_被选择

表格1.缩放比 = 50

══════════════════════════════

子程序:_比例100_被选择

表格1.缩放比 = 100

══════════════════════════════

子程序:_比例200_被选择

表格1.缩放比 = 200

如果要以页面的等宽显示,可以直接使用如下方法:

子程序:_等宽_被选择

表格1.等宽缩放 ()

3.“表格线颜色”、“背景颜色”属性

打开例程:“表格属性.e”,如图13-17所示。

图13-17 改表格线颜色

相关“_颜色选择器1_颜色被改变”程序代码为:

子程序:_颜色选择器1_颜色被改变

数据源1.加线条 (1, 1, 数据源1.取行数 (), 数据源1.取列数 (), #左边框 + #上边框 + #右边框 + #下边框 + #水平线 + #垂直线)

表格1.表格线颜色 = 颜色选择器1.颜色

16

PDF 文件使用 "pdfFactory Pro" 试用版本创建

在上面代码中可以看到,一定要先为表格线中加上线条,才能再改表格线颜色。而加线条是从数据源中加入的。

相关“_颜色选择器2_颜色被改变”事件子程序代码为:

子程序:_颜色选择器2_颜色被改变

表格1.背景颜色 = 颜色选择器2.颜色

改变其中的文字的相关程序代码如下:

子程序:_颜色选择器3_颜色被改变

数据源1.置文本色 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), 颜色选择器3.颜色)

注意:这里使用的是数据源组件,而不是表格组件。

单独改变其中某一个单元格的背景色的相关程序代码如下:

子程序:_颜色选择器4_颜色被改变

数据源1.置背景色 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 (), 颜色选择器4.颜色)

为易语言表格添加表格线(默认时显示“空表格线”)。添加如下的一行代码即可:

数据源1.加线条(1,1,数据源1.取行数(),数据源1.取列数(),#左边框+#上边框+#右边框+#下边框+#水平线+#垂直线)

表格加上表格线后,如图13-18所示。

图13-18 为表格加上表格线

4.“允许选择块”属性

逻辑型属性。指定是否允许操作者选择表格单元格区域。

如果为“真”,即可以在表格中拖动鼠标左键,同时选中多个单元格。如果为“假”,即只能选择一个单元格。

打开例程:“表格属性.e”,如图13-19所示。

图13-19 可以选择多个单元格

本属性不能用“易之表.e”例程来改,因为这个例程在程序中一直设定为“真”,新建一个程序来测试。

5.“显示标尺”属性

逻辑型属性。控制显示表格最上面一行和最左面一列的标尺,如图13-20所示。

图13-20 不显示标尺

6.“显示空表格线”属性

逻辑型属性。指定是否用虚线显示空表格线,如图13-21所示。

17

PDF 文件使用 "pdfFactory Pro" 试用版本创建

图13-21 不显示空表格线

7.“禁止调整行高”、“禁止调整列高”属性

逻辑型属性。指定是否禁止操作者调整表格行高、列高。

如果本属性为“真”,即为禁止,当鼠标移动到标尺时,即不会出现双向拉伸箭头。

8.“允许粘贴扩展”属性

指定当粘贴表格数据时,如果现行表格尺寸无法容纳,是否允许自动扩展。

为一个2×2单元格的表格插入一个4×4单元格的表格,会自动增加不足的单元格。

如例程“易之表.e”中的菜单:“编辑”→“添加数据”,程序代码如下:

子程序:_添加数据_被选择

通用对话框1.标题 = “请输入欲添加进来的表格文件名:”

通用对话框1.类型 = 0

如果真 (通用对话框1.打开 () = 真)

如果 (数据源2.从文件读 (通用对话框1.文件名) = 假)

*备注:数据源2仅在此处使用

信息框 (“打开欲添加文件失败!”, #错误图标, “错误”)

否则

数据源1.添加 (数据源2, , )

设置修改 ()

数据源2.初始尺寸 (1, 1)

*备注:因为使用的是通用提供者2,所以可以初始化尺寸.在此处清除通用提供者2内的数据.

如果结束

如果真结束

在这里,把新的易之表文件读入到数据源2中,并添加到数据源1中。由于会增加大于现有表格的数据,这样就会增加行与列,以满足新的数据。

上述的属性设置,在“易之表”中由菜单命令统一调用:“编辑”→“表格属性”。

13.3.2 表格的重要事件

表格组件的常用事件有:“光标位置改变”、“选择行列数改变”、“内容被改变”。

表格组件不常用事件有:“行高被改变”、“列宽被改变”、“尺寸被扩展”。

1.“光标位置改变”事件

当操作者改变了光标位置后会产生本事件。它是比较常用的事件之一。

例程:“表格事件.e”中相关的事件子程序代码为:

子程序:_表格1_光标位置改变

编辑框1.内容 = “光标位置改变”

可以试运行例程,当移动光标位置后,就产生本事件,并在最左边的编辑框1中显示提示信息。

2.“内容被改变”事件

当操作者修改了单元格内容时会产生此事件。

例程:“表格事件.e”中相关的事件子程序代码为:

子程序:_表格1_内容被改变

参数:行号 数据类型:整数型

参数:列号 数据类型:整数型

参数:行数 数据类型:整数型

参数:列数 数据类型:整数型

编辑框1.内容 = “内容被改变”

试运行该例程,当在一个单元格中输入内容后,就产生本事件,并在最左边的编辑框1中显示提示信息。

18

PDF 文件使用 "pdfFactory Pro" 试用版本创建

这个事件子程序会自动产生名称为“行号”、“列号”、“行数”、“列数”的参数,编程者利用这些参数,可以了解哪些单元格的内容被改变了。

3.“选择行列数改变”事件

当操作者更改了当前被选择区域的行列数时会产生本事件。

例程:“表格事件.e”中相关的事件子程序代码为:

子程序:_表格1_选择行列数改变

编辑框1.内容 = “选择行列数改变”

试运行该例程,随意拖动鼠标选中一些单元格,就产生本事件,并在最左边的编辑框1中显示提示信息。

4.“行高被改变”事件

当操作者调整了表格行行高时即产生此事件。

例程:“表格事件.e”中相关的事件子程序代码为:

子程序:_表格1_行高被改变

参数:行号 数据类型:整数型

编辑框1.内容 = “行高被改变”

这个事件子程序会自动产生名称为“行号”的参数,编程者利用这个参数可以了解哪一行被调整了行高。

5.“列宽被改变”事件

当操作者调整了表格列列宽时即产生此事件。

例程:“表格事件.e”中相关的事件子程序代码为:

子程序:_表格1_列宽被改变

参数:列号 数据类型:整数型

编辑框1.内容 = “列宽被改变”

这个事件子程序会自动产生名称为“列号”的参数,编程者利用这个参数可以了解是哪一列被调整了列宽。

6.“尺寸被扩展”事件

当操作者粘贴来自剪贴板的表格单元数据时,如果为了容纳该数据自动扩展了表格尺寸,会产生此事件。这个事件很少被用到。

7.“被双击”事件

“鼠标左键被按下”、“鼠标左键被放开”、“鼠标右键被按下”、“鼠标右键被放开”、“鼠标位置被移动”这些基本事件都响应,在例程:“表格属性.e”中有相关的程序代码,而“被双击”事件没有响应。

当双击表格内部的时候产生编辑的动作,双击标尺时不需要做什么工作。因此,有一些工作可以通过鼠标右键弹出菜单来完成。

例程:“快捷键&右键弹出菜单.e”演示了使用鼠标右键单击后弹出菜单,并在按下功能键(Shift、Alt、Ctrl)再单击鼠标右键,可以分别弹出不同的菜单,如图13-22所示。

图13-22 运行“快捷键&右键弹出菜单.e” 例程

相关的程序代码如下:

子程序:_表格1_鼠标右键被按下

返回值类型:逻辑型

参数:横向位置 数据类型:整数型

参数:纵向位置 数据类型:整数型

参数:功能键状态 数据类型:整数型

编辑框2.内容 = 到文本 (功能键状态)

判断 (功能键状态 = 1)

弹出菜单 (程序, , )

判断 (功能键状态 = 2)

弹出菜单 (编辑, , )

19

PDF 文件使用 "pdfFactory Pro" 试用版本创建

判断 (功能键状态 = 4)

弹出菜单 (帮助, , )

默认

弹出菜单 (调试, , )

判断结束

13.3.3 表格的专有方法

表格的专有方法有14个。可以在支持库面板中的“系统核心支持库”→“数据类型”→“表格”中找到,如图13-23所示。

图13-23 表格组件的方法

1.“取光标行号()”、“取光标列号()”方法

功能:取表格中“光标所在的单元格”所处的行号或列号。如果调用这两个方法时,已经有多个单元格被同时选择,则返回所有被选择的单元格中最左上角的那个单元格的行号或列号。

例如:

行坐标 = 表格1.取光标行号()

列坐标 = 表格1.取光标列号()

2.“取选择行数()”、“取选择列数()”方法

功能:取表格中被选择的单元格的行数或列数。

打开例程:“表格命令.e”,如图13-24所示。

图13-24 显示行列数

其中使用表格的“光标位置改变”事件来显示光标行列号,程序代码如下:

子程序:_表格1_光标位置改变

编辑框1.内容 = “光标位置改变”

编辑框2.内容 = 到文本 (表格1.取光标行号 ())

编辑框3.内容 = 到文本 (表格1.取光标列号 ())

使用“选择行列数改变”事件在编辑框中来显示选择了多行多列数。程序代码如下:

子程序:_表格1_选择行列数改变

编辑框1.内容 = “选择行列数改变”

编辑框4.内容 = 到文本 (表格1.取选择行数 ())

编辑框5.内容 = 到文本 (表格1.取选择列数 ())

3.“等宽缩放()”方法

功能:缩放表格内容,使其正好完全显示在表格中。

例程“表格命令.e”相关程序代码为:

子程序:_按钮1_被单击

表格1.等宽缩放 ()

4.“置光标()”方法

功能:定位光标到某行某列。

打开例程“表格命令.e”,如图13-25所示。

20

PDF 文件使用 "pdfFactory Pro" 试用版本创建

图13-25 置光标

在“置光标”按钮前面填充行列数字,即可以根据此行列数判定新的光标,如图中要定位到第2行的第4列,单击“置光标”按钮后,光标即自动跑到正确的位置上。

5.“选择()”、“全部选择()”、“复制()”、“全部复制()”、“粘贴()”、“粘贴到光标处()”方法

对单元格的选择、复制、粘贴操作。需要指定欲操作的一个或多个相邻的单元格。

一般情况下都是由鼠标控制完成选择、复制、与粘贴的功能,提供命令只是为了使用右键弹出菜单来完成工作。

例程“表格命令.e”即使用一个弹出菜单操作这些命令,菜单设置如图13-26所示。

图13-26 设置小菜单

使用在表格上单击鼠标右键弹出菜单,相关程序代码为:

子程序:_表格1_鼠标右键被按下

返回值类型:逻辑型

参数:横向位置 数据类型:整数型

参数:纵向位置 数据类型:整数型

参数:功能键状态 数据类型:整数型

弹出菜单 (小菜单, , )

“选择”菜单被选中时,程序代码为:

子程序:_选择_被选择

表格1.选择 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 ())

“全部选择”菜单被选中时,程序代码为:

子程序:_全部选择_被选择

表格1.全部选择 ()

“复制”菜单被选中时,程序代码为:

子程序:_复制_被选择

表格1.复制 (表格1.取光标行号 (), 表格1.取光标列号 (), 表格1.取选择行数 (), 表格1.取选择列数 ())

“全部复制”菜单被选中时,程序代码为:

子程序:_全部复制_被选择

表格1.全部复制 ()

“粘贴”菜单被选中时,程序代码为:

子程序:_粘贴_被选择

表格1.粘贴 (表格1.取光标行号 (), 表格1.取光标列号 ())

“粘贴到光标处”菜单被选中时,程序代码为:

子程序:_粘贴到光标处_被选择

表格1.粘贴到光标处 ()

6.“打印()”、“打印预览()”方法

功能:打印表格,打印表格前的预览。

打印预览是一个十分好的功能,可以在打印前得到实际打印效果。

应用实例:

表格1.打印()

表格1.打印预览()

21

PDF 文件使用 "pdfFactory Pro" 试用版本创建

13.3.4 表格组件使用中出现的问题

1.怎样在程序中动态改变表格的列宽使它正好显示字段内容

需要在与“表格”相关联的“数据源”组件中设置。例,表格1的数据源为“数据源1”,则可以通过下列语句来实现:

数据源1.置列宽(3,1,500) 将表格1的第三列设置宽度为50毫米。

2.如何将查询到的多条记录显示在表格中

设置变量:变量1,行数,列数

计次循环首(取记录数(),变量1)

如果真(条件语句)

数据源1.置文本(行数,列数,读(字段1))

数据源1.置文本(行数,列数+1,读(字段1)

……

跳过()

如果真结束

行数=行数+1

计次循环尾

设置变量:变量1,行数,列数

计次循环首(取记录数(),变量1)

如果真(查找(读(某字段)= 编辑框1.内容)

数据源1.置文本(行数,列数,读(字段1))

数据源1.置文本(行数,列数+1,读(字段2)

……

跳过()

如果真结束

行数=行数+1

计次循环尾

3.打印设置

打印设置使用了一行命令来完成:

数据源1.打印设置 ()

运行时会弹出打印设置对话框,可以调整页边距,纸张类型等如图13-27所示。

图13-27 打印设置对话框

如果还有其他问题,请参看“易之表.e”以及“易之表增强版.e”程序。

四、 数据库组件的应用

前面有很多组件都提供了数据源的组件,本节讲述组件如何与数据源进行连接的方法。

13.4.1 其他组件作为数据处理者

前面都是用的表格组件举例讲述的,而在本章开头,提到了除了表格组件支持数据源,其他的如编辑框、标签、图片框、组合框、列表框都支持数据源。

例程:“易3.5版下列表框和组合框数据绑定演示.e”,如图13-28所示。

22

PDF 文件使用 "pdfFactory Pro" 试用版本创建

图13-28 运行“易3.5版下列表框和组合框数据绑定演示.e”例程

新建一个易程序,放几个组件:数据库提供者1,在“数据库文件名”属性中输入一个数据库的文件名。

数据源1的“数据提供者”属性选择“数据库提供者1”。

编辑框1的“数据源”属性选择“数据源1”,“数据列”属性选择“姓名”。

组合框1的“数据源”属性选择“数据源1”,“数据列”属性选择“性别”。

列表框1的“数据源”属性选择“数据源1”,“数据列”属性选择“学历”。

注意:在易语言3.5版本中,这里的组合框1与列表框1内的项目是手工加上的,以前是自动加入的。大家也可以使用程序的方法为组合框1与列表框1加入项目。

13.4.2 应用于打印

1.在表格下角打印页码

假设表格是连接到“数据源1”上,方法如下:

局部变量:打印设置信息 数据类型:打印设置信息

打印设置信息 = 数据源1.取打印设置 ()

打印设置信息.页号位置 = #下右页号

数据源1.置打印设置 (打印设置信息)

2.使用表格组件实现套打功能

表格组件不仅可以直接输入数据计算,也可以制作表格套打的模板进行套打。

打印学生情况表格的例程:“表格组件模板的应用.e”。

(1)在启动窗口放一个“数据库提供者1”组件,将“数据库文件名”属性中加入一个数据库“学生.edb”。

放一个“数据源1”组件,将“数据提供者”属性改为“数据库提供者1”。再放6个编辑框,将“数据源”属性改为“数据源1”,分别将“数据列”属性为“学号”、“姓名”、“性别”、“年龄”、“身高”、“体重”,如图13-29所示。

图13-29 “表格组件模板的应用.e”例程

(2)添加一个“通用提供者1”组件。

放一个“数据源2”组件,将“数据提供者”属性改为“通用提供者1”。再放一个表格组件,将“数据源”属性改为“数据源2”。

(3)选中数据源1后,在属性面板的事件下拉菜单中选中“当前记录改变”的事件。输入以下程序代码:

子程序:_数据源1_当前记录改变

数据源2.置文本 (3, 2, 编辑框1.内容)

数据源2.置文本 (3, 4, 编辑框2.内容)

数据源2.置文本 (3, 6, 编辑框3.内容)

数据源2.置文本 (4, 2, 编辑框4.内容)

数据源2.置文本 (4, 4, 编辑框5.内容)

数据源2.置文本 (4, 6, 编辑框6.内容)

双击启动窗口,可以进入程序设计界面,输入以下代码:

子程序:__启动窗口_创建完毕

数据库提供者1.数据库文件名 = 取运行目录 () + “学生.EDB”

打开 (“学生”, “学生”, , , , , )

数据源2.数据提供者 = “通用提供者1”

23

PDF 文件使用 "pdfFactory Pro" 试用版本创建

如果真 (数据源2.从文件读 (取运行目录 () + “”) = 假)

*备注:这次从文件读入表格样板到基本情况提供者,用作演示模板的不同来源

信息框 (“找不到学生基本情况表格模板!”, 0, “错误”)

销毁 ()

返回 ()

如果真结束

学生表格.表格线颜色 = #黑色

_数据源1_当前记录改变 ()

在这里,“学生.edb”是一个含有很多记录的数据库,而“”是一个表格模板,程序中将数据库中的内容读入到模板中显示出来。如果想打印,可以再加入一个按钮,改按钮标题为“打印表格”。此打印按钮的程序代码如下:

子程序:_按钮1_被单击

如果真 (数据源2.打印设置 ())

表格1.打印 (, )

如果真结束

五、 外部数据库

外部数据库组件只有简单的“名称”、“备注”、“左边”、“顶边”、“宽度”、“高度”、“标记”属性,没有重要属性。也没有专有事件。它也是一个不可视组件。

14.1.1 外部数据库的重要方法

在支持库面板中能查找外部数据库组件,如图14-1所示。

1.“打开()”、“关闭()”方法

功能:打开或关闭指定的ODBC数据源。

应用实例:

外部数据库1.打开( , ) //打开,在使用外部数据库之前调用。

外部数据库1.关闭( ) //关闭,不再使用外部数据库时调用。

图14-1 外部数据库组件的方法

2.“查询()”方法、“执行()”方法

功能:分别用于执行查询类和非查询类SQL语句。

应用实例:(1)记录集句柄 = 外部数据库1.查询(“select * from books”)

对当前被打开数据库进行数据查询(检索books表中的所有记录的所有字段),将查询结果的记录集的句柄,赋值给整数型变量“记录集句柄”。

注意:以后不用本记录集时,应将本记录集关闭——方法是调用本组件的关闭记录集()方法,如:外部数据库1.关闭记录集(记录集句柄)。

(2)外部数据库1.执行(“insert into books values (1,2,3)”) //插入记录。

3.“读()”方法

功能:读取指定记录集的当前记录处指定字段的数据内容。返回数据的数据类型与原外部数据库中的数据类型相对应。

语法:外部数据库名称.读(记录集句柄,字段名称或位置)

应用实例:

x=外部数据库1.读(记录集句柄,1)

上述读取指定记录集中当前记录的第“1”个字段;

x=外部数据库1.读(记录集句柄,“序号”)

24

PDF 文件使用 "pdfFactory Pro" 试用版本创建

上述读取指定记录集中当前记录名称为“序号”字段。如果数据库的第1个字段正好是“序号”,则这两种用法等效。(“记录集句柄”是整数型变量,是调用外部数据库组件的“查询”方法时的返回值。)

通常先将当前记录指针移动到某记录上,然后再“读()”。移动记录指针的方法见下面。

4.“到首记录()”、“到尾记录()”方法、“到前一记录()”方法、“到后一记录()”方法

功能:移动记录集的当前记录指针。

语法:这4个方法的语法是相同的。都有一个整数型参数,指定要操作的记录集;都有一个逻辑型参数,指示本方法是否执行成功。

应用实例:

到首记录(记录集句柄)

到尾记录(记录集句柄)

到前一记录(记录集句柄)

到后一记录(记录集句柄)

“记录集句柄”是整数型变量,是调用外部数据库组件的“查询”方法时的返回值。

5.“首记录前()”、“尾记录后()”方法

功能:判断当前记录指针是否在第一个记录的前面或最后一个记录的后面。

语法:这两个方法的语法是相同的。都有一个整数型参数,指定要操作的记录集;都有一个逻辑型参数,指示当前记录指针是否在第一个记录的前面或最后一个个记录的后面。

应用实例1:

子程序:_查看前一记录按钮_被单击

外部数据库1.到前一记录 (记录集句柄)

如果 (外部数据库1.首记录前 (记录集句柄))

信息框 (“前面已无记录!”, 0, )

外部数据库1.到首记录 (记录集句柄)

否则

读取并显示当前记录 () *备注:这是自定义函数

如果结束

应用实例2:

子程序:_查看后一记录按钮_被单击

外部数据库1.到后一记录 (记录集句柄)

如果 (外部数据库1.尾记录后 (记录集句柄))

信息框 (“后面已无记录!”, 0, )

外部数据库1.到尾记录 (记录集句柄)

否则

读取并显示当前记录 () *备注:这是自定义函数

如果结束

六、 外部数据提供者

外部数据提供者组件除基本属性外,还有两个重要的属性:“连接文本”、“查询SQL”。

外部数据提供者组件没有专有方法,也没有专有事件。通常通过数据源组件对外部数据提供者中的数据进行操作。它也是一个不可视组件。

14.2.1 外部数据提供者的重要属性

1.“连接文本”属性

“连接文本”属性为文本型,用于设置外部数据库的ODBC连接文本。当在属性夹单击“...”按钮将弹出ODBC数据源配置对话框。

25

PDF 文件使用 "pdfFactory Pro" 试用版本创建

2.“查询SQL”属性

“查询SQL”属性为文本型,用作指定数据库中的数据表名或者用作查询记录集的SELECT类SQL语句。

14.2.2 外部数据库的应用

以下文章修改自LIIGO的名为“全面操作Access数据库”的教程,更正了部分文字,并经LIIGO同意附上。

下面的实例演示如何在易语言中借助“外部数据库”组件,通过ODBC操纵Microsoft Access数据库。支持记录的查询、排序、删除、添加、更新,及创建、删除表的操作。此例程同时为用户提供了一个良好的SQL语言的学习环境。

本例程在随书光盘中的文件名为:“面操作Access数据库.e”,Microsoft Access的数据库文件是“”。

1.关于ODBC配置

(1)运行例程“全面操作Access数据库.e”如图14-2所示。单击图14-2中的“连接外部数据库”按钮,弹出的对话框如图14-3所示。

图14-2 “全面操作Access数据库.e”运行界面

图14-3 “选择数据源”对话框

(2)选择图14-3中的New或“新建”按钮,又会出现一个对话框,如图14-4所示。

图14-4 “创建新数据源”对话框

(3)在图14-4中,选中列表框第2项(Access的驱动程序)。然后单击“下一步”按钮,弹出对话框如图14-5所示,要求输入一个带路径的文件名。

26

PDF 文件使用 "pdfFactory Pro" 试用版本创建

图14-5 选择路径对话框

(4)单击图14-5中的Browse或“浏览”按钮,在弹出的“另存为文件对话框”中任选一个路径,任填一个文件名xx,单击“保存”按钮关闭“另存为文件对话框”,这样就新建了一个DSN文件:Data Source Name,文件名是xx,扩展名为dsn,单击图14-5中的“下一步”按钮,会弹出如图14-6所示的对话框。

图14-6 显示设置信息对话框

(5)前面几步新建了一个*.dsn文件(已设置了路径和驱动程序信息,但还没有和具体的数据库相连接)。在图14-6中单击“完成”按钮,会弹出如图14-7所示的对话框,在这个对话框中可以连接数据库。

图14-7 ODBC Microsoft Access安装对话框

(6)单击图14-7中的Select按钮,在“打开文件”对话框中选择书中所提供的Access数据库文件“”。最后单击上图的OK按钮。这样,新建的数据源连接文件就包含了访问数据库所需的所有信息,利用这个文件可以在易语言中任意操纵数据库了。

(7)单击图14-7中的OK按钮出现的对话框如图14-8所示。

图14-8 “选择数据源”对话框

选中图14-8中新建的文件,单击“确定”按钮,会出现一个对话框,如图14-9所示。

在图14-9中的“Database: ......”,正是将要连接的数据 27

PDF 文件使用 "pdfFactory Pro" 试用版本创建

库。数据库的详细地址是从中读取出来的,由此知的作用了。单击OK按钮完成设置。

至此,用ODBC连接外部数据库的操作全部完成。这是ODBC配置的标准过程,完全由微软定义的过程。值得一提的是,下次再连接同一数据库时,就不必再新建一个*.dsn文件了,直接在最前面的对话框(图14-2)中选择就可以了。

图14-9 显示要连接的数据库

关闭图14-9所示的对话框后,程序又回到了“全面操作Access数据库.e”主界面,并且已经正确地读出并显示了Access数据库的第1条记录,如图14-10所示。

图14-10 连接数据库之后的程序主界面

2.关于例程的使用

图14-10中的其他4个按钮“查看前一记录”、“查看后一记录”、“首记录”、“尾记录”是用于浏览数据库中的记录,双击按钮可以查看其中的程序代码。

“外部数据库”组件有个“取连接文本 ()”的方法,故专门提供按钮“查看连接文本”演示本方法的使用。“取连接文本()”的使用很简单,这里只是为了让读者对ODBC的连接文本有一个感性认识。

“插入新记录”按钮用来插入新记录到数据库中表books的尾部(books是在Access数据库中预定义的表),单击该按钮后,弹出如图14-11所示的窗口。

在图14-11中填入相关信息后单击“确认”按钮就可以插入新记录。

图14-11 “插入新记录”对话框

在主界面的下部,是专门为大家订做的一个专门用于练习使用SQL语言的环境,如图14-10所示。

只要在图14-10所示的SQL编辑框中输入正确的语句,单击“执行”按钮就可以了。考虑到大家对SQL可能不太熟悉,还专门设置了“导入”功能,可以从预定义的语句中选取。图14-12是在单击了“导入”按钮后的弹出的窗口。

图14-12 预定义的SQL语句

在图14-12中双击鼠标可导入语句,单击右键可查看各SQL语句的功能。在这些预定义语句中,包含了对记录的查询、排序、添加、删除、更新以及其他“表”的操作。只要掌握了SQL语言,就没有完成不了的事情(有关数据库的)。这也是专门提供“SQL学习环境”的原因。

2.关于SQL语言

SQL语言是操纵数据库的国际标准语言,SQL Server、Oracle等大型数据库系统都提供对它的支持。要在易语言中操纵数据库,必须使用SQL。

以本程序中用到的这一个语句为例:

28

PDF 文件使用 "pdfFactory Pro" 试用版本创建

_启动窗口.外部数据库1.执行 (“insert into books ” + “(编号,书名,作者,出版社,出版日期,总页数,备注)” +

“ values ” + “(” + 编辑框1.内容 + “,'” + 编辑框2.内容 + “','” + 编辑框3.内容 + “','” + 编辑框4.内容 +

“','” + 编辑框5.内容 + “',” + 编辑框6.内容 + “,'” + 编辑框7.内容 + “')”)

在易语言中使用SQL需要注意的几个问题如下。

l

关键字要正确,如不要把 values 写为 value ,(大小写无所谓)。

l

values 与前后的括号之间要有空格(半角空格,不可以是全角)。

l

values 前的括号中列出预插入的字段名称,之间以半角空格隔开(不可以是全角)。

l

values 后的括号中列出预插入的字段的值,字符串要以半角单引号或[]括住。

l

values 之前的括号中的字段名称,与之后的括号中的字段的值,要一一对应。

l

values 后面的括号中,不可以有空值、空串。

对于最后一条,举例如下:

insert into books (作者,书名,备注) values ('飞扬' , '《易语言开发宝典》','')

上面的写法肯定不能正确执行,因为 values 后面的括号中的第3个值是空字符串!

正确的写法是:

insert into books (作者,书名) values ('飞扬' , '《易语言开发宝典》')

对于前面提到的例句:

_启动窗口.外部数据库1.执行 (“insert into books ” + “(编号,书名,作者,出版社,出版日期,总页数,备注)” +

“ values ” + “(” + 编辑框1.内容 + “,'” + 编辑框2.内容 + “','” + 编辑框3.内容 + “','” + 编辑框4.内容

+ “','” + 编辑框5.内容 + “',” + 编辑框6.内容 + “,'” + 编辑框7.内容 + “')”)

在执行前一定要检查各编辑框中的值,必须确保其值不为空,否则语句不能被正确执行。

但在实际应用中,编辑框中的内容是要求用户输入的,保证正确输入有两种办法:

方法1——判断编辑框中的内容为空时对其赋一默认值。

方法2——判断编辑框中的内容为空时,在 values前的括号中,不写入该编辑框所对应的字段名称。 本程序是采用的第1种方法。

4.总结

本例程演示了在易语言中应用“外部数据库”组件,通过ODBC操纵Microsoft Access数据库的方法。支持记录的查询、排序、删除、添加、更新及创建、删除表的操作。本程序同时为用户提供了一个良好的SQL语言学习环境。另外,使用“外部数据库”组件及SQL语言很重要。但是,由于SQL语言的内容较多,请参看SQL的相关书籍。

5.改进

(1)增加两个组件。增加外部数据库提供者组件与数据源组件,如图14-13所示。

图14-13 设计“全面操作Access数据库2.e”例程

其中,要求将外部数据库提供者组件的“连接文本”属性选为数据库。可使用本书提供的例库。

将外部数据库提供者组件的“查询SQL”属性选为此数据库的表。

(2)改编辑框的属性。将所有编辑框的“数据源”属性改为“数据源1”。将所有编辑框的“数据列”属性改为相对应的属性。

(3)试运行。本例程文件名为“全面操作Access数据库2.e”。

14.2.3 用表格组件显示数据库

下面介绍一下如何用表格组件显示Microsoft Access数据库的方法。

(1)在窗体上放表格、数据源、外部数据提供者各一个,如图14-14所示。

29

PDF 文件使用 "pdfFactory Pro" 试用版本创建

图14-14 程序布局

(2)设置属性

将表格1的“数据源”属性设置为“数据源1”。

将数据源1的“数据提供者”属性设置为“外部数据提供者1”。

(3)单击外部数据提供者1的“连接文本”属性,将弹出配ODBC置对话框,选择相应的*.dsn文件,如图14-15所示。

图14-15 选择数据源对话框

(4)设置属性。设置外部数据提供者1组件的“查询SQL”属性为select * from books。这里books是表名,依数据库而定。

(5)运行。这样就完成了用表格组件显示Microsoft Access数据库的任务,如图14-16所示。

注意:数据源的删除记录按钮不可随便单击,该操作是不可逆的。

图14-16 运行效果

14.2.4 Access数据库应用综合例程

Access数据库的建立方法可以分成两个阶段,第1个阶段是根据要输入的数据性质,新增表并设置表的字段名称、数据类型和语句;第2个阶段是在表内输入数据。

下面,以建立学生数据库(学生.mdb)中的学生成绩表(chj)为例,来说明如何建立Access数据库。

(1)打开Microsoft Access 2000,选取“空Access数据库”,单击“确定”按钮。

(2)出现“文件新建数据库”对话框,指定新数据库的储存位置、文件名称(本例为“学生.mdb”),然后单击“创建”按钮。

(3)出现名为“学生数据库”的窗口,在“使用设计器创建表”上双击鼠标左键。

(4)在“字段名称”输入表的第1个字段名称“学号”,在“数据类型”的下拉菜单中选“数字”,然后在“说明”中输入“学号”字段的说明文字。

(5)依此类推,分别设置“姓名”、“语文”、“数学”、“英语”等字段,然后关闭表,此时Office助手会询问您是否储存表,请点取“是”。

(6)在“另存为”对话框的“表名称”框中输入表的名称为“chj”,然后单击“确定”按钮。

接着询问是否在表上加上主键,如果想增加表,建立关系型数据库,可以选“是”,否则选“否”,在这里选“否”。

(7)“学生数据库”窗口新增了表chj。

(8)在“学生数据库”窗口新增表的名称上双击鼠标左键,依次输入记录,完毕后可以关闭Access,Access会自 30

PDF 文件使用 "pdfFactory Pro" 试用版本创建

动存盘。要建立其他表,可以重复(3)~(8)步骤。

有了前面的外部数据库的知识,下面来制作一个简单的学生成绩管理系统,通过它来学习如何实现查询、到首记录、到尾记录、到上一记录、到下一记录等查询功能以及增删、更新等编辑功能。

1.设置数据库及程序界面

(1)建立一个名为“学生.mdb”的数据库,并新建一个名为chj的成绩表,加上“学号”、“姓名”、“语文”、“数学”、“英语”5个字段,设置“学号”字段的类型为“自动编号”,并设定为主键。

(2)在启动窗口中加上名为“学号编辑框”、“姓名编辑框”、“语文编辑框”、“数学编辑框”、“英语编辑框”这5个编辑框作为数据处理者,再加上标题为“到首记录”、“上一记录”、“下一记录”、“到尾记录”、“添加记录”、“查询记录”、“修改记录”、“删除记录”这5个按钮。

(3)将学号编辑框的“输入方式”属性设为“只读方式”。

2.编写实现程序功能的各子程序代码

(1)打开数据库并显示首记录。

子程序:__启动窗口_创建完毕

如果真 (外部数据库1.打开 (“ODBC;DBQ=学生.mdb;Driver={Microsoft Access Driver (*.mdb)};”, ))

记录集句柄 = 外部数据库1.查询 (“select * from chj ”)

如果真结束

如果 (记录集句柄 = 0)

信息框 (“查询失败!”, 0, )

否则

如果结束

外部数据库1.到首记录 (记录集句柄)

显示记录 ()

姓名编辑框.获取焦点 ()

(2)显示记录子程序。

子程序:显示记录

学号编辑框.内容 = 到文本 (外部数据库1.读 (记录集句柄, 1))

姓名编辑框.内容 = 外部数据库1.读 (记录集句柄, 2)

语文编辑框.内容 = 到文本 (外部数据库1.读 (记录集句柄, 3))

数学编辑框.内容 = 到文本 (外部数据库1.读 (记录集句柄, 4))

英语编辑框.内容 = 到文本 (外部数据库1.读 (记录集句柄, 5))

(3)到首记录。

子程序:_首记录按钮_被单击

外部数据库1.到首记录 (记录集句柄)

显示记录 ()

(4)到尾记录。

子程序:_尾记录按钮_被单击

外部数据库1.到尾记录 (记录集句柄)

显示记录 ()

(5)到上一记录。

子程序:_向前按钮_被单击

外部数据库1.到前一记录 (记录集句柄)

如果 (外部数据库1.首记录前 (记录集句柄))

信息框 (“前面已无记录!”, 0, )

外部数据库1.到首记录 (记录集句柄)

否则

显示记录 ()

如果结束

(6)到下一记录。

31

PDF 文件使用 "pdfFactory Pro" 试用版本创建

子程序:_向后按钮_被单击

外部数据库1.到后一记录 (记录集句柄)

如果 (外部数据库1.尾记录后 (记录集句柄))

信息框 (“后面已无记录!”, 0, )

外部数据库1.到尾记录 (记录集句柄)

否则

显示记录 ()

如果结束

(7)添加记录。

为什么要加上一个“检查输入”子程序?因为,下面所用的SQL指令要求输入所有项目,但有时有些字段不用输入,所以就用“?”或“0”号来代替。

子程序:_添加按钮_被单击

检查输入 ()

如果 (添加按钮.标题 = “添加记录”)

添加按钮.标题 = “保存记录”

学号编辑框.获取焦点 ()

连续赋值 (“”, 学号编辑框.内容, 姓名编辑框.内容, 语文编辑框.内容, 数学编辑框.内容, 英语编辑框.内容)

否则

如果 (外部数据库1.执行 (“INSERT INTO chj ” + “(学号,姓名,语文,数学,英语)” + “ valueS ” + “(” + 学号编辑框.内容 + “,’” + 姓名编辑框.内容 + “’,’” + 语文编辑框.内容 + “’,’” + 数学编辑框.内容 + “’,’” + 英语编辑框.内容 + “’)”) = 假)

信息框 (“添加记录失败,请检查是否连接数据库,或填写类型是否适当”, 0, “添加失败”)

否则

信息框 (“已成功添加为尾记录”, 0, “添加成功”)

外部数据库1.重新查询 (记录集句柄)

添加按钮.标题 = “添加记录”

如果结束

如果结束

子程序:检查输入

备注:保证任一编辑框的内容都不为空

如果真 (学号编辑框.内容 = “”)

学号编辑框.内容 = “0”

如果真结束

如果真 (姓名编辑框.内容 = “”)

姓名编辑框.内容 = “?”

如果真结束

如果真 (语文编辑框.内容 = “”)

语文编辑框.内容 = “0”

如果真结束

如果真 (数学编辑框.内容 = “”)

数学编辑框.内容 = “0”

如果真结束

如果真 (英语编辑框.内容 = “”)

英语编辑框.内容 = “0”

如果真结束

(8)修改记录。

子程序:_更新按钮_被单击

如果 (更新按钮.标题 = “修改记录”)

32

PDF 文件使用 "pdfFactory Pro" 试用版本创建

信息框 (“请直接修改编辑框的内容,然后按” + #左引号 + “保存修改” + #右引号, 0, “修改”)

姓名编辑框.获取焦点 ()

更新按钮.标题 = “保存修改”

否则

如果 (外部数据库1.执行 (“UPDATE chj SET 姓名=” + “’” + 姓名编辑框.内容 + “’,” + “语文=” + “’” + 语文编辑框.内容 + “’,” + “数学=” + “’” + 数学编辑框.内容 + “’,” + “英语=” + “’” + 英语编辑框.内容 + “’ ” + “WHERE 学号=” + 学号编辑框.内容) = 假)

信息框 (“修改失败!”, 0, “失败”)

否则

信息框 (“修改成功!”, 0, “成功”)

外部数据库1.重新查询 (记录集句柄)

更新按钮.标题 = “修改记录”

如果结束

如果结束

(9)删除记录。

子程序:_删除按钮_被单击

如果真 (信息框 (“如果你真的想删除当前记录,请按” + #左引号 + “是” + #右引号, 4, “删除”) = 5)

如果 (外部数据库1.执行 (“DELETE * FROM chj ” + “WHERE 学号=” + 学号编辑框.内容) = 假)

信息框 (“删除失败!”, 0, “失败”)

否则

信息框 (“删除成功!”, 0, “成功”)

外部数据库1.重新查询 (记录集句柄)

删除按钮.标题 = “删除记录”

显示记录 ()

如果结束

如果真结束

(10)查询记录。

为了精简启动窗口的界面,把查询放在“查询窗口”进行。

窗口程序集:窗口程序集2

------------------------------

子程序:_查找按钮_被单击

_启动窗口.外部数据库1.到首记录 (记录集句柄)

如果 (查找编辑框.内容 = “”)

信息框 (“你还没有选择查找项目”, 0, )

否则

如果 (组合框1.现行选中项 = -1)

信息框 (“你还没有选择查找类型”, 0, )

否则

如果 (组合框1.内容 = “姓名”)

记录集句柄 = _启动窗口.外部数据库1.查询 (“select * from chj where ” + 组合框1.内容 + “=” + “’” + 查找编辑框.内容 + “’”)

否则

记录集句柄 = _启动窗口.外部数据库1.查询 (“select * from chj where ” + 组合框1.内容 + “=” + 查找编辑框.内容)

如果结束

_启动窗口.外部数据库1.重新查询 (记录集句柄)

显示记录 ()

_启动窗口.外部数据库1.关闭记录集 (记录集句柄)

33

PDF 文件使用 "pdfFactory Pro" 试用版本创建

如果结束

如果结束

------------------------------

子程序:显示记录

列表框1.清空 () ※ 防止再次操作的时候留下上次加入的项目

判断循环首 (_启动窗口.外部数据库1.尾记录后 (记录集句柄) = 假)

列表框1.加入项目 (取文本左边 (到文本 (_启动窗口.外部数据库1.读 (记录集句柄, 1)) + 取空白文本 (7), 7) + 取文本左边 (到文本 (_启动窗口.外部数据库1.读 (记录集句柄, 2)) + 取空白文本 (10), 10) + 取文本左边 (到文本 (_启动窗口.外部数据库1.读 (记录集句柄, 3)) + 取空白文本 (10), 10) + 取文本左边 (到文本 (_启动窗口.外部数据库1.读 (记录集句柄, 4)) + 取空白文本 (10), 10) + 取文本左边 (到文本 (_启动窗口.外部数据库1.读 (记录集句柄, 5)) + 取空白文本 (10), 10), )

_启动窗口.外部数据库1.到后一记录 (记录集句柄)

判断循环尾 ()

3.测试程序

该程序功能很简单,还有很多功能需要完善,但基本的功能已经实现,可以作为学习或应用的例程。

除了易语言本身的数据库(文件后缀名为edb),其他数据库系统称为外部数据库,比如微软的Access数据库(文件后缀名为mdb)、dBase数据库(文件后缀名为dbf)、Visual FoxPro数据库(文件后缀名为dbc)、MS SQL Server大型数据库、MySQL大型数据库等 。由于微软的Access数据库是目前应用最广泛的个人桌面型数据库,所以在外部数据库应用讲座中就以Access数据库为例。

与易数据库不同的是,Access数据库内可以有多个表。比如一个学生管理系统数据库内包含学生成绩表、学生基本情况表、管理人员表等多个表。这样就很方便地将相关的字段集中在一起管理,各个表之间又可以相互关联。微软的Access数据库软件界面或一个表的界面大约跟易之表相似,但功能更强大。

所谓的表就是关联式数据库中的表格,在储存数据到数据库之前,一定得先在数据库中建立表,让数据有地方可以储存,这样才算一个完整的数据库。Access 2000数据库是Office 2000家族的一员,其界面与Office 2000家族相似,学习基本上没有什么障碍。

从易语言2.0版开始,易语言增加了“外部数据库”组件,用作支持使用ODBC直接对其他所有类型数据库进行操作;2.1版又增加了“外部数据提供者”组件,可以直接将外部数据库绑定到数据源。有了这两个组件,对于其他类型的数据库(非易语言数据库*.edb,如Access,Paradox,SQL,Oracle等)也可进行直接操作,不过还是有一些限制。

使用另一种方法也可以实现对其他数据库的访问,这就是使用易语言提供的“数据库格式转换”功能:即易语言安装目录Tools目录下的程序,可双击执行,也可通过易语言主菜单“数据库”→“数据库格式转换”启动。

实际上,数据库涉及到的东西非常多,本书对此只能泛泛而谈,更详细的请参看有关SQL的相关书籍,以及易语言数据库与实例的书。

34

PDF 文件使用 "pdfFactory Pro" 试用版本创建


本文标签: 表格 数据库 数据源 数据 提供者