访问 ODBC 问题:ODBC--调用失败

Posted

技术标签:

【中文标题】访问 ODBC 问题:ODBC--调用失败【英文标题】:Access ODBC Issue: ODBC--Call failed 【发布时间】:2014-04-23 19:40:39 【问题描述】:

我在我的 PC 上为 SQL 数据库创建了一个 Access 前端,供整个公司使用。我正在使用文件 ODBC 连接并将 ODBC 文件和 Access 文件放在共享网络驱动器上。

当我加载访问文件时,由于某种原因,它似乎默认使用我的 Windows 登录凭据并完美地提取数据。当用户尝试打开文件时,他们会收到一条错误消息,指出“ODBC --call failed.”。我可以为他们打开链接表管理器并检查“请求新位置”,然后指定 ODBC 文件,一切正常……但它似乎没有保存任何内容。每次别人打开此文件时,我都会收到错误消息。

知道有什么问题吗?我不是专业的 Access 人,它似乎只是我们目前需要的工具。

--编辑:为了澄清,我使用的是文件 ODBC 连接

--编辑2--

这个谜。所以我一直在解决这个问题,我遇到了一些有趣的事情。我以我的用户之一登录并执行了以下操作:

    在桌面上创建一个引用文件 ODBC 连接的新访问文件。 使用桌面上的 ODBC 文件在 access 文件中创建 3-4 个链接表。 保存并关闭访问文件。 重新打开上述文件.... 我得到一个 ODBC 连接错误!在新文件中一切正常之后!

有人经历过吗?

【问题讨论】:

【参考方案1】:

我假设您没有在每个用户的 PC 上正确安装 ODBC。 您应该创建 ODBC 定义。可以直接在注册表中创建相关语句,看这个分支 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI 如果您提供与开发人员机器上相同的名称,那么它可以工作。这就是我如何使用我在我的机器上开发的客户端应用程序然后将其安装在客户端站点上的方式

【讨论】:

我认为既然 ODBC 文件位于共享驱动器上就足够了。所以我需要在每台机器上分别安装一个 ODBC 文件? aha,您使用 FILE 进行 ODBC 连接 - 用户是否有权访问共享,它是否映射到相同的驱动器号/路径? (必须测试一次,但今天我一整天都休息......) 他们都可以访问驱动器是的。我相信它被映射到同一个驱动器号,但它可能不是。如果它们是不同的驱动器号,我将如何解决这个问题? 我只是仔细检查了一遍。至少其中一台机器具有相同的驱动器号。【参考方案2】:

在遇到同样的问题后,我终于发现我在 Access 表单上有一个默认为 NULL 的复选框。由于我将后端放入 SQL 中,因此复选框字段不能为 NULL,但“ODBC 调用失败”消息没有帮助。我终于尝试通过 Access 直接在表上添加一条记录,它提供了更多信息。我将所有复选框设置为默认为零,它解决了问题!

【讨论】:

【参考方案3】:

嗯,我能够稍微缩小问题的范围。出于某种原因,Access 不断尝试使用 Windows 凭据而不是我的 ODBC 文件中的用户名。我找不到解决方法,但我能够通过在我的 SQL Server 上为需要访问的 Windows 用户创建登录名来解决这个问题。

我对需要管理更多登录感到非常高兴,但这就是我为解决此问题所做的。

【讨论】:

【参考方案4】:

我并不是要让死者复活,但我有同样的错误源于另一个问题。

我使用的是 ODBC 连接。使用“设计”运行按钮运行文件时,它运行良好。当我尝试使用导航窗格并双击它时,会发生错误。

我的查询结构是问题所在;我正在移植一个 SQL 服务器查询,并且在 Access 中没有很好地接受单引号 ' 参数传递。将这些更改为双引号 " 使其工作。

【讨论】:

以上是关于访问 ODBC 问题:ODBC--调用失败的主要内容,如果未能解决你的问题,请参考以下文章

为啥我通过 ODBC 调用的存储过程在同一位置失败? [关闭]

ODBC——调用失败

ODBC--调用失败

ODBC 调用失败 - 错误 3151

新手,大家帮忙看看,ODBC连接sql失败。

ODBC 调用失败 - 从 32 位 ODBC 5.1 移动到 64 位 5.3 后出现随机日期溢出错误