创建传递查询

可以使用 Access 作为前端应用程序,并链接到后端服务器中的表,例如SQL Server。 默认情况下,大多数查询在 Access ACE 数据库引擎本地运行。 在某些情况下,Access 可以远程运行查询SQL Server,具体取决于SQL语法和其他因素。 有关详细信息,请参阅重新发现 JET 和 ODBC 白皮书中的"JET 数据库引擎版本 3.0:ODBC连接"。

不过,通常希望对查询进行显式数据库服务器。 这样做有助于提高性能:数据库服务器的处理能力比台式计算机更高,并且可以通过网络连接返回较小的数据子集。 若要对 数据库服务器 运行查询,请使用 传递查询 ,它是使用 ODBC 连接字符串连接到 SQL Server 的 Transact SQL (TSQL) 语句。 例如,可以将 SELECT 语句传递给数据表、窗体、报表或列表控件,运行等效的操作查询 (数据操作语言 (DML) 语句) ,调用存储过程,并执行管理任务 (数据定义语言 (DDL) 语句) 。

注意    传递查询的结果为只读。 若要直接编辑数据表或窗体中的数据,请创建一个链接到索引视图的表。 有关详细信息,请参阅 创建索引视图

  1. 连接到服务器数据库。

    有关链接到 azure 数据库SQL Server,请参阅导入或链接到 SQL Server 数据库中的数据和 链接到 AzureSQL Server 数据库。

  2. 选择“创建”>“查询设计”。

  3. 如有必要,请关闭" 添加表 "对话框 , ("在 Access 2013 中显示表"。

  4. 选择">传递"。

    Access 将隐藏查询设计网格,SQL视图"。

  5. 如果未显示属性表,请按 F4 显示它。

  6. 在属性表,单击 "ODBC Connect Str" 属性框,然后执行下列操作之一:

    获取连接字符串:

    1. 在导航窗格中,右键单击链接到所需数据源的表,然后选择"链接表管理器"。

    2. 在"链接表管理器"对话框中,选中数据源的复选框,然后选择"编辑"。

    3. "编辑链接 "对话框中,复制"连接字符串 "框中 的文本。

    1. 选择"生成 “生成器”按钮 "。

    2. 按照提示创建包含连接字符串信息的 DSN 文件。 有关详细步骤,请参阅导入或链接到SQL Server 数据库中的数据和链接到 Azure SQL Server数据库。

    创建 DSN 文件连接后,ODBC 连接字符串将内部存储在 Access 数据库中。 下面是获取该字符串副本的技巧:

    1. 使用你需要的 ODBC 连接在导航窗格中找到链接表名称。

    2. 按 Ctrl+G。 以打开"VBA 立即"窗口。

    3. 输入:以下代码:

      ?CurrentDb.TableDefs("<table name>").Connect

      但是,用<a 中>表名称替换表名称。

    4. 将返回的字符串复制到 ODBC Connect Str 属性中。

  7. 在"视图 "SQL查询

    注意   Access SQL 和 SQL Server TSQL 之间存在重要差异,尤其是在语法、函数名称和函数参数方面。 有关详细信息,请参阅将 Access SQL 与 SQL Server TSQL 进行比较

    提示    首先在 Management Studio SQL Server TSQL 查询,然后将该查询SQL粘贴到SQL 视图中。 这可确保查询具有正确的语法。 如果无法方便地访问 SQL Server 数据库,请考虑在桌面上安装支持高达 10 GB 的 Microsoft SQL Server Express 版本,这是一种免费且更容易运行和检查迁移的方法。

  8. 考虑设置其他相关属性:

    • 返回记录     某些 SQL 语句返回 SELECT 等记录,而有些则不返回,例如 UPDATE。 如果查询返回记录,将此属性设置为"是";如果查询未返回记录,则将此属性设置为"否"。

      注意    传递查询可以返回多个结果集,但在数据表、窗体、报表或记录集变量中,只会使用结果集结果。 若要检索多个结果集,请使用 make 表查询 ,如以下示例所示:

      SELECT <pass-through query name>.*
      INTO <local table name>
      FROM < pass-through query name >

      必须使用星号 (*) ,因为结果集可能有不同的列。 每个结果集保存在单独的表中,数字将相应地追加到本地表名称中。 例如,如果返回三个结果集,则表名称将是:<本地表名称>,<本地表名称>1,<本地表名称>2。

    • 记录消息    指定是否在 Access 消息表中SQL数据库返回消息。 表名称的格式为 username - nn,其中 username 是当前用户的登录名,nn 是一个从 00 开始编号。

    • ODBC 超时    指定在运行查询时发生退出错误之前要等待的秒数。 默认值为 60 秒。 由于网络流量或大量使用流量,可能会延迟数据库服务器。

    • 最大记录数    指定要返回的最大记录数。 系统资源可能有限,或者只想使用少量数据来测试结果。

  9. 输入完查询后,选择"设计">运行"。 查询将发送到数据库服务器进行处理。

另请参阅

Transact-SQL 参考https://docs.microsoft.com/en-us/sql/t-sql/language-reference?view=sql-server-2017

使用 Transact-SQLhttps://mva.microsoft.com/en-US/training-courses/querying-with-transactsql-10530?l=TjT07f87_9804984382

需要更多帮助?

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×