Module
Contents
Index 🔎︎

# 定义条件

条件是逻辑表达式，可以用来控制文档中字段和区域 的显示。以下内容以字段为例，但同样适用于区域。

可以为以下字段类型定义条件：

1. 有条件的文字：如果条件为 True，则显示文字 A，否则显示文字 B。

2. 隐藏文字：如果条件为 True，则隐藏字段的内容。

3. 隐藏段落：如果条件为 True，则隐藏段落。

4. “任何一个记录”和“下一个记录”：控制对数据库记录的访问。

定义条件最简单的方法，是使用以下值直接在条件框中键入逻辑表达式：

TRUE | 条件总是被满足。或者您也可以输入任意一个不等于 0 的值作为条件文字。
FALSE | 条件不被满足。或者您也可以输入 0 值。

空的条件框被解释为不满足条件。

定义条件与定义公式都使用相同的元素 ，即比较运算符、数学和统计函数、数字格式、变量和常数。

定义条件时，可以使用以下变量类型：

1. 预设的LibreOffice 变量这些变量使用文档的属性统计信息

2. 自定义的变量，使用“设置变量”字段创建

3. 基于用户数据的变量

4. 基于数据库字段内容的变量

在条件表达式中，无法使用内部变量，如页码和章节编号。

## 条件和变量

以下示例使用了变量 "x" ：

x == 1 或 x EQ 1 | 如果 "x" 等于 1，则条件为 True。
x != 1 或 x NEQ 1 | 如果 "x" 不等于 1 则条件为 True。
sinx == 0 | 如果 "x" 是 pi 的倍数则条件为 True。

要对字符串使用比较运算符，请务必在运算符前后加双引号：

x == "ABC" 或 x EQ "ABC" | 检查变量 "x" 是 (true) 否 (false) 包含字符串 "ABC"。
x == "" 或 x EQ "" 或 !x 或 NOT x | 检查变量 "x" 是否含有空字符串。

在条件中，"等于"比较运算符必须用两个等号 (==) 表示。例如，如果定义变量 "x" 的值为 1，则可以输入条件 x==1。

## 用户数据

You can include user data when you define conditions. To change your user data, choose LibreOffice - Preferences Tools - Options
- LibreOffice - User data. User data must be entered in the form of strings. You can query the user data with "==" (EQ), "!=" (NEQ), or "!"(NOT).

下表列出了用户数据变量及其含义：

变量 | 含义
user_firstname | 名字
user_lastname | 姓氏
user_initials | 缩写
user_company | 公司
user_street | 街道
user_country | 国家
user_zipcode | 邮政编码
user_city | 城市
user_title | 标题
user_position | 位置
user_tel_work | 办公电话号码
user_tel_home | 住宅电话号码
user_fax | 传真号码
user_email | 电子信箱地址
user_state | 省市（不是所有 LibreOffice 版本都有）

例如，要隐藏来自具有特定缩写的某个用户（如 "LM"）的段落、文字或区域，请输入条件：user_initials=="LM"。

## 条件和数据库字段

可以定义用于访问数据库或数据库字段的条件。例如，可以使用条件来检查数据库字段的内容，或者在逻辑表达式中使用数据库字段。下表列出在条件中使用数据库的更多示例：

示例 | 含义
数据库.表格.公司 Database.Table.Company NEQ "" Database.Table.Company != "" | 如果 COMPANY 字段不为空，则条件为 True。（在第一个示例中，不需要运算符。）
!Database.Table.Company NOT Database.Table.Company Database.Table.Company EQ "" Database.Table.Company =="" | 如果 COMPANY 字段为空，则返回 TRUE。
Database.Table.Company !="Sun" Database.Table.Company NEQ "Sun" | 如果 COMPANY 字段中的当前条目不是 "Sun"，则返回 TRUE。（感叹号表示逻辑 NOT。）
Database.Table.Firstname AND Database.Table.Name | 如果数据条目同时含有姓和名，则返回 TRUE。

请注意布尔型 NOT "!" 和比较运算符不等号 "!=" (NEQ) 之间的区别。

引用条件中的数据库字段时，请使用 Databasename.Tablename.Fieldname 的格式。如果其中一个名称包含的字符是运算符，例如减号 (-)，请将名称用方括号括起，例如 Databasename.[Table-name].Fieldname。切勿在字段名称内使用空格。

### 示例：隐藏空数据库字段

如果需要，可以创建隐藏空字段的条件。例如，如果对于某些记录，COMPANY 字段为空字段。

选择隐藏段落列表条目，并键入以下条件：Addressbook.Addresses.Company EQ ""

或键入以下内容

NOT Addressbook.Addresses.Company

如果 COMPANY 数据库字段为空，则此条件为真，且段落被隐藏。

To display hidden paragraphs on the screen, you can choose LibreOffice - Preferences Tools - Options
- LibreOffice Writer - Formatting Aids, and clear the Fields: Hidden paragraphs check box.

## 字段中的条件示例

以下示例使用“有条件的文字”字段。这些示例同样适用于其他可与条件链接的字段。条件所使用的语法对于隐藏的文字、隐藏的段落、任何一个记录或下一个记录等字段也适用。

## 显示基于页数的有条件的文字：

1. 选择插入 - 字段 - 更多字段，然后单击函数选项卡。

2. 在类型列表中，单击“有条件的文字”。

3. 在条件框中，键入 "page == 1"。

4. 在则框中，键入 "There is only one page"。

5. 在或框中，键入 "There are several pages"。

6. 单击插入，然后单击关闭。

## 要显示基于自定义变量的有条件的文字

1. 选择插入 - 字段 - 更多字段，然后单击变量选项卡。

2. 在类型列表中，单击“设置变量”。

3. 在名称框中，键入 "Profit"。

4. 在值框中，键入 "5000"。

5. 单击插入。

6. 单击功能选项卡，并在字段类型列表中单击“有条件的文字”。

7. 在条件框中，键入 "Profit < 5000"。

8. 在则框中，键入 "Target is not met"。

9. 在或者框中，键入 "Target is met"。

10. 单击插入。

要编辑 "Profit" 变量的内容，请双击该变量字段。

## 显示基于数据库字段内容的有条件的文字：

此示例的第一部分在文档的“名字”和“姓氏”字段之间插入一个空格，第二部分则根据字段内容插入文本。此示例要求在 LibreOffice 中注册地址数据源。

1. 选择插入 - 字段 - 更多字段，然后单击数据库选项卡。

2. 在类型列表中，单击“邮件合并字段”。

3. 在选择数据库框中，双击某个地址簿，单击 "First Name"，然后单击插入。重复此步骤，插入 "Last Name"。

4. 在文档中，将光标置于两个字段之间，按空格键，然后返回 字段对话框：

5. 单击功能选项卡，然后在类型列表中单击“有条件的文字”。

6. 在条件框中，键入："Addressbook.addresses.firstname"。

7. 在则框中键入一个空格，并将或框保留空。

现在，您可以使用条件根据 First Name 字段的内容来插入文字。

1. 在字段对话框中，单击功能选项卡。

2. 在类型框中，单击“有条件的文字”。

3. 在条件框中，键入：Addressbook.addresses.firstname == "Michael"

4. 在则框中，键入 "Dear"。

5. 在或框中，键入 "Hello"。

6. 单击插入。