目录

# 数据

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

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

要访问此命令...

Open context menu of a selected form element - choose Form Properties - Data tab.

Open Form Design toolbar, click Form Properties icon - Data tab.

## 允许修改

Determines if the data can be modified.

## 允许删除

Determines if the data can be deleted.

## 允许新增

Determines if data can be added.

## 内容

Determines the content to be used for the form. The content can be an existing table or a query (previously created in the database), or it can be defined by an SQL-statement. Before you enter a content you have to define the exact type in Content type.

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

## 分析 SQL 指令

Specifies whether the SQL statement is to be analyzed by LibreOffice. If set to Yes, you can click the ... button next to the Content list box. This will open a window where you can graphically create a database query. When you close that window, the SQL statement for the created query will be inserted in the Content list box.

## 只添加数据

Determines if the form only allows the addition of new data (Yes) or if it allows other properties as well (No).

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

## 导航栏

Specifies whether the navigation functions in the lower form bar can be used.

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

## 循环

Determines how the navigation should be done using the tab key. Using the tab key, you can move forward in the form. If you simultaneously press the Shift key, the navigation will follow the opposite direction. If you reach the last (or the first) field and press the tab key again, it can have various effects. Define the key control with the following options:

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

## 排序

Specifies the conditions to sort the data in the form. The specification of the sorting conditions follows SQL rules without the use of the ORDER BY clause. For example, if you want all records of a database to be sorted in one field in an ascending order and in another field in a descending order, enter Forename ASC, Name DESC (presuming Forename and Name are the names of the data fields).

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

## 数据源

Defines the data source to which the form should refer. If you click the ... button, you call the Open dialog, where you can choose a data source.

## 数据源类型

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

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

## 筛选

Enter the required conditions for filtering the data in the form. The filter specifications follow SQL rules without using the WHERE clause. For example, if you want to display all records with the "Mike" forename, type into the data field: Forename = 'Mike'. You can also combine conditions: Forename = 'Mike' OR Forename = 'Peter'. All records matching either of these two conditions will be displayed.

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

## 链接主字段

If you create a subform, enter the data field of the parent form responsible for the synchronization between parent and subform. To enter multiple values, press Shift + Enter after each input line.

The subform is based on an SQL query; more specifically, on a Parameter Query. If a field name is entered in the Link master fields box, the data contained in that field in the main form is read to a variable that you must enter in Link slave fields. In an appropriate SQL statement, this variable is compared to the table data that the subform refers to. Alternatively, you can enter the column name in the Link master fields box.

请看下面示例:

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

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

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

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

或:

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

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

## 链接从字段

If you create a subform, enter the variable where possible values from the parent form field can be stored. If a subform is based on a query, enter the variable that you defined in the query. If you create a form using an SQL statement entered in the Data source field, enter the variable you used in the statement. You can choose any variable name. If you want to enter multiple values, press Shift + Enter.

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

## 什么是子表格？

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

If you require a form that can refer to the data in a table or query and can additionally display data from another table, you should create a subform. For example, this subform can be a text box that displays the data of another database table.

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

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

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

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

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