模块
目录
索引 🔎︎

# 数据

在「数据」选项卡页面上可以定义表格属性，这些属性与表格链接的数据库有关。

定义表格使用的数据源，或者指定用户是否可以编辑数据。除了排序和筛选功能以外，还可以找到创建子表单所需的所有属性。

要访问此命令...

打开选中表单元素的右键菜单 - 选择「表单 - 数据」选项卡

打开「数据库控件」工具栏或「数据库表单设计」工具栏，点击「表单」图标 - 数据选项卡

## 允许修改

指定是否可以修改数据。

## 允许删除

确定是否可以删除数据。

## 允许新增

指定是否可以添加数据。

## 内容

确定用于表单的内容。内容可以是现有表格或查询 (以前在数据库中创建的表格或查询)，也可以利用 SQL 语句来定义。输入内容源之前，需要在「内容类型」中定义正确的类型。

如果在「内容类型」中选择了「表格」或「查询」，则该框中会列出选中数据库中设置的所有表格与查询。

## 分析 SQL 指令

指定是否由 LibreOffice 来分析 SQL 语句。 如果设置为 Yes (是)，则可点击「内容」列表框旁边的「...」按钮。此操作将打开一个窗口，您可在其中创建图形化的数据库查询。关闭该窗口后，用于创建查询的 SQL 语句将插入到「内容」列表框。

## 只添加数据

定义表单只允许添加新数据 (是)，还是也允许添加其他属性 (否)。

如果将「只添加数据」设置为「是」，则无法修改和删除数据。

## 导航栏

指定是否可以使用底部表单栏中的导航功能。

选项「父表单」可用于子表单。如果您为子表单选择此项，则当您把光标移到子表单时，就可以浏览父表单的记录。因为子表单是用 1:1 的关系和父表单相关联的，所以浏览功能总在父表单上执行。

## 循环

指定使用 Tab 键时的浏览方式。使用 Tab 键，可以在表单中向前移动。如果使用 Tab 键时按住 Shift 键，则按相反的方向浏览。如果到达最后一个 (或第一个) 字段，再按 Tab 键，可以有多种效果。可以使用以下选项定义键控件:

选项 | 含义
默认 | 使用这个设置可以自动定义一个指向某个已有数据库连接的循环: 如果表单中包含一个数据库链接，那么在默认情况下，Tab 键在退出最后一个字段时将转至下一个或前一个记录 (请参阅」全部记录「)。如果没有数据库链接，则显示下一个/上一个表单 (请参阅」当前页「)。
所有记录 | 此选项只适用于数据库表单，用于浏览所有的记录。如果使用 Tab 键退出表单的最后一个字段，则修改当前记录。
活动记录 | 此选项只适用于数据库表格，用于浏览当前的记录。如果使用 Tab 键退出表格的最后一个字段，则当前记录将被更换。
当前页面 | 退出表格的最后一个字段后，光标会跳到下一个表格的第一个字段中。这对于 HTML 表格来说是标准的移动顺序，因此，此选项对于 HTML 表格尤为重要。

## 排序

指定表单数据的排序条件。排序条件规范遵循 SQL 规则，而不使用 ORDER BY 子句。例如，如果希望数据库的所有记录在一个字段内按升序排序而在其他字段内按降序排序，请输入 Forename ASC, Name DESC (假定 Forename 和 Name 是数据字段的名称)。

在用户模式下，可以使用表单导航栏上的相应图标进行排序: 向上排序、向下排序和排序。

## 数据源

定义表单引用的数据源。 点击「...」按钮，将调用打开对话框，您可以在其中选择数据源。

## 数据源类型

定义是否使用现有的数据库表格或查询作为数据源，或者是否基于 SQL 指令来生成表单。

如果选择「表格」或「查询」，则表单将会引用您在「数据源」中指定的表格或查询。如果希望创建一个新的查询或子表单，则需要选择「SQL」选项。然后，您可以在「列表内容」方框中直接输入用于 SQL 查询或子表单的语句。将基于指定的语句生成表单。

## 筛选

输入用于过滤表单数据的条件。过滤规范遵循 SQL 规则，但不使用 WHERE 子句。例如，如果要显示名字为 "Mike" 的所有记录，请在数据字段中输入: Forename = 'Mike'。也可以使用组合条件: Forename = 'Mike' OR Forename = 'Peter'。将显示符合任一条件的所有记录。

在用户模式下，可以通过「表单导航」栏上的「自动过滤」和「默认过滤」图标来启用过滤功能。

## 链接主字段

如果要创建子表单，请输入母表单的数据字段，以确保母表单与子表单同步。 要输入多个数值，请在每个输入行后按 Shift + Enter 键。

子表单基于 SQL 查询；更为确切的说，是位于参数查询。如果在「链接主字段方框中输入一个字段名称，则该字段在主表单中所包含的数据会被读取至在「链接从字段」中输入的一个变量。在相应 SQL 语句中，此变量会与子表单引用的表格数据相比较。或者，也可以在链接主字段」方框中输入此列名。

请看下面示例:

表单基于的数据库表格，比如一个客户数据库 (「客户」)，在名为「客户_ID」的数据字段中为每个客户给定一个唯一编号。在另一个数据库表单中管理客户订单。现在您希望查看该表单中的客户的订单。为此，您要创建一个子表单。在「链接主字段」中输入客户数据库中用来明确识别客户的数据字段，即「客户_ID」。在「链接从字段」中输入接受字段「客户_ID」数据的变量名称，比如「x」。

子表单应显示订单表格 (「订单」) 中每个客户 ID 对应的数据 (客户_ID -> x)。前提是，订单表格中的每个订单仅对应一个客户。也可以使用另一个名为「客户_ID」的字段。但是，为了避免与主表单中的「客户_ID」字段混淆，可以将它命名为「客户_编号」。

现在比较「订单」表格中的「客户_编号」和「客户」表格中的「客户_ID」。比较时可以使用 x 变量和以下 SQL 语句:

SELECT * FROM 订单 WHERE 客户_编号 =: x (如果要该子表单显示订单表格中的所有数据)

或:

SELECT 项目 FROM 订单 WHERE 客户_编号=: x (如果要订单表格中的子表单只显示「项目」字段的数据)

您可以在「数据源」字段中输入 SQL 指令，或者您创建一个用于创建子表单的相应的参数查询。

## 链接从字段

如果要创建子表单，请输入用于存储父表单字段中可能数值的变量。如果子表单基于查询，请输入查询中定义的变量。如果使用「数据源」字段中输入的 SQL 语句来创建表单，请输入在语句中使用的变量。可以选择任意的变量名称。如果要输入多个数值，请按 Shift+Enter 键。

如果，比如在「链接主字段」中指定了 Customer_ID 数据库字段为父字段，那么可在「链接从字段」中定义存储 Customer_ID 数据库字段值的变量的名称，数据库字段"客户编号"的值就在这个变量中读取。如果使用此变量在「数据源」框中指定一个 SQL 语句，则在子表单中显示相关值。

## 什么是子表格？

基于一个数据库表格或一个数据库查询创建表单。表单以一种视觉上很舒服的方式显示数据，还可以输入或编辑数据。

如果要求表单能够引用某个表格或查询中的数据并且可以显示其他表格中的数据，则应创建子表单。例如，子表单可以是用于显示其他数据库表格中数据的文本框。

子表单是主表单的附加组件。主表单称为「父表单」或「主表单」。要从一个表单访问多个表格就需要用到子表单。每个其他表格都需要一个自己的子表单。

创建表单后，可将该表单转为子表单。要实现这一点，请输入「设计模式」并打开「表单导航」。在「表单导航」中，将一个表单 (将成为子表单) 拖放到其他表单 (将成为主表单) 上。

文档的用户将无法看见带有子表单的表单。用户只能看到已输入数据的文档或者显示已有数据的文档。

在主表单中指定数据字段的「链接」主字段。在子表单中，「链接」从字段可设置为将与「链接」主字段的内容匹配的字段。

当用户浏览数据时，表单始终显示当前数据记录。如果定义了子表单，子表单内容将在短暂延迟大约 200 毫秒后显示。此延迟可让您快速浏览主表单的数据记录。如果在延迟限度内浏览下一主数据记录，则不需检索和显示子表单数据。