在 InfoPath 窗体中,可以使用查询数据连接到 Microsoft Office Access 2007 (.accdb 格式的数据填充列表框、下拉列表框或组合框,) 数据库或以早期版本保存的 Access 数据库 (.mdb 格式) 。
本文内容
概述
列表框、下拉列表框或组合框显示用户可以在填写 InfoPath 表单时选择的项目。 设计表单模板时,可以将这些类型的控件配置为显示从辅助数据连接到 Access 数据库的数据。
辅助数据连接是添加到表单模板的外部数据源的任何数据连接。 可以将辅助数据连接配置为检索用户所需的数据,以便填写基于表单模板的表单或将表单数据提交到外部数据源(如 Web 服务)。
将查询数据的辅助数据连接添加到表单模板时,InfoPath 会创建一个辅助数据源,其中包含与数据库中存储数据的方式相对应的数据字段和组。 查询数据连接从 Web 服务检索数据,然后将该数据存储在表单的辅助数据源中。
可以将辅助数据连接配置为将查询结果保存在用户的计算机上,以便即使其计算机未连接到网络,这些用户也有权访问数据。 根据数据的性质,你可能希望仅在用户连接到网络时才显示查询结果。
注意
如果使用辅助数据连接从外部数据源检索敏感数据,则可能需要禁用此功能,以帮助防止在计算机丢失或被盗的情况下未经授权使用数据。 如果禁用此功能,则仅当用户连接到网络时,数据才可用。
如果要限制列表框控件中的项数,可以使用筛选器。 每当需要显示基于用户选择的条件的查询返回的数据子集时,请使用筛选器。 该条件可以是在另一个控件中选择的项, (如列表框、组合框、下拉列表框或绑定到数据源中的字段的文本框) 。
由于辅助数据源中的数据结构必须与数据库中数据的存储方式匹配,因此不能修改辅助数据源中的现有字段或组。 在本文的“ 另请参阅 ”部分中找到有关数据连接和数据源的详细信息的链接。
兼容性注意事项
只有在设计与浏览器兼容的表单模板的表单模板时,才能将查询数据连接添加到 Access 数据库。
开始之前
在可以使用 Access 数据库中的值在表单模板上填充控件之前,需要数据库管理员提供的以下信息:
数据库的名称和位置。
注意
如果网络上的其他用户将基于此表单模板创建表单,请确保这些用户可以访问数据库。
为控件提供值的表或查询的名称。 配置查询数据连接时,将使用此表或查询作为主表。
主表或查询可能需要数据的任何其他表或查询的名称。 在大多数情况下,表关系已在数据库中建立。 如果需要手动建立主表或查询与另一个表或查询之间的关系,则需要表或查询的相关字段名称。
步骤 1:添加查询数据连接
如果没有可在表单模板中使用的现有查询数据连接,请使用以下过程将辅助数据连接添加到表单模板。 如果表单模板已有可使用的辅助数据连接,则可以跳过此部分,转到 步骤 2:配置控件。
在 “工具 ”菜单上,单击“ 数据连接”。
在“ 数据连接 ”对话框中,单击“ 添加”。
在“数据连接向导”中,单击“ 创建新连接”,单击“ 接收数据”,然后单击“ 下一步”。
在向导的下一页上,单击“数据库 (Microsoft SQL Server或仅Microsoft Office Access) ”,然后单击“下一步”。
在向导的下一页上,单击“ 选择数据库”。
在 “选择数据源 ”对话框中,浏览到数据库的位置。
注意
如果数据库存储在网络位置中,请浏览到该位置的通用命名约定 (UNC) 路径。 不要通过映射的网络驱动器浏览到网络位置。 如果使用映射的网络驱动器 (即,将字母分配给网络驱动器(如 H: 或 Z:) ),则用户基于此表单模板创建的表单将搜索该特定映射网络驱动器上的数据库。 如果用户没有以完全相同的方式映射网络驱动器,则窗体将找不到数据库。
单击数据库的名称,然后单击“ 打开”。
在 “选择表 ”对话框中,单击要使用的主表或查询,然后单击“ 确定”。
在向导的下一页上,选择“检查显示表列”框。
默认情况下,表或查询中的所有字段都会添加到表单模板的主数据源。清除不希望包含在主数据源中的字段的检查框。
添加要包含在查询数据连接中的任何其他表或查询。
如何?- 单击“ 添加表”。
- 在“ 添加表或查询 ”对话框中,单击子表的名称,然后单击“ 下一步”。 InfoPath 尝试通过匹配两个表中的字段名称来设置关系。 如果不想使用建议的关系,请选择该关系,然后单击“ 删除关系”。 若要添加关系,请单击“ 添加关系”。 在“ 添加关系 ”对话框中,单击相应列中每个相关字段的名称,然后单击“ 确定”。
- 单击“完成”。
- 若要添加其他子表,请重复这些步骤。
单击“下一步”。
若要使查询数据连接的结果在表单未连接到网络时可用,请选择“在表单模板中存储数据副本检查”框。
注意
当窗体使用此数据连接时,选中此检查框会将数据存储在用户计算机上。 如果表单正在从此数据连接检索敏感数据,你可能希望禁用此功能,以帮助保护数据,以防计算机丢失或被盗或未经授权的用户访问。
单击“下一步”。
在向导的下一页上,键入此辅助数据连接的描述性名称,然后验证 “摘要 ”部分中的信息是否正确。
若要将窗体配置为在打开时自动接收数据,请选择“打开窗体时自动检索数据检查框。
步骤 2:配置控件
如果表单模板具有多个视图,请单击“视图”菜单上的“视图名称”,转到包含要显示辅助数据源数据的控件的视图。
双击要配置的表单模板上的列表框、下拉列表框或组合框控件。
单击“数据”选项卡。
在 “列表框条目”下,单击“ 从外部数据源查找值”。
在 “数据源 ”列表中,单击要使用的数据源。
单击“条目”框旁边的“选择 XPath
”。在 “选择字段或组 ”对话框中,通过执行以下操作之一指定字段或组,该字段包含将向用户显示的数据以及将提交到外部数据源的数据。
指定用户将看到的数据是用户将提交的相同数据- 单击字段,然后单击“ 确定”。
指定用户将看到的数据与用户将提交的数据不同
注意
在此方案中,用户将看到的数据来自组中的一个字段,并且用户将提交的数据包含在同一组中的另一个字段中。
- 单击组,然后单击“ 确定”。
- 在“控件属性”对话框中,单击“值”框旁边的“选择 XPath
”。 - 在 “选择字段或组 ”对话框中,单击包含用户将提交给外部数据源的数据的字段,然后单击“ 确定”。
- 在“控件属性”对话框中,单击“显示名称”框旁边的“选择 XPath
”。 - 在 “选择字段或组 ”对话框中,单击包含将在控件中显示的数据的字段,然后单击“ 确定”。
如果“显示名称”框中的字段具有类似显示名称的值,并且希望仅显示唯一名称,请选择“仅显示具有唯一显示名称的条目检查框。
可选:设置筛选器以限制控件中的项
双击要配置的表单模板上的列表框、下拉列表框或组合框控件。
单击“数据”选项卡。
单击“条目”框旁边的“选择 XPath
”。在 “选择字段或组 ”对话框中,单击包含为控件提供值的字段的字段或组,然后单击“ 筛选数据”。
在“ 筛选数据 ”对话框中,单击“ 添加”。
注意
如果要向现有筛选器添加条件,请单击要应用的筛选器,然后单击“ 修改”。
在“ 指定筛选条件 ”对话框的第一个框中,单击要筛选其数据的字段的名称。
第二个框中,单击要使用的筛选器类型。
在第三个框中,单击要应用于筛选器的条件类型,然后键入条件。
若要为筛选器配置多个条件,请单击“ 和”,然后执行下列操作之一:
- 若要将现有条件和新条件应用于筛选器,请单击 和,然后添加新条件。
- 若要将现有条件或新条件应用于筛选器,请单击 或,然后添加其他条件。
单击“ 确定” 关闭对话框。
要测试所做的更改,请单击“常用”工具栏上的“预览”,或者按 Ctrl+Shift+B。
将在新窗口中打开表单模板。在预览窗口中,选择筛选器控件中的各种值,以测试筛选器是否正常工作。
筛选器无法正常工作
如果控件中包含筛选器的值不正确(因为值太多或值不足),请尝试以下操作:- 如果在筛选器中使用多个条件,请删除除一个条件外的所有条件,以便检查从该单个条件返回正确的值。 如果第一个条件返回正确的值,则添加另一个条件并对其进行测试。
- 筛选器区分大写字符和小写字符。 如果要显示以大写或小写字符开头的数据,请创建具有大写字母条件的筛选器,在“指定筛选条件”对话框中选择 或 ,然后创建小写字母条件。
- 如果筛选的值与预期完全相反(例如,显示所有供应商的产品,而不是单个供应商的产品),则更改条件中的筛选器类型。 例如,如果你的条件使用筛选器类型 等于 并且你得到的产品太多,请尝试使用 筛选器类型不等于 。