我们刚刚从 Access 2003 升级到 Access 2010,当使用默认条件时,字符串比较失败并出现无效的过程调用错误。我在一个只包含默认表的新 Access 2007 格式数据库中重新创建了两个可能相关的问题,一个带有下面 SQL 的查询和一个只包含下面代码的模块,所以我严重怀疑这是一个损坏问题。首先,以下子在 If Then 行上失败并出现运行时错误 5:无效的过程调用或参数
Option Compare Database
Option Explicit
Sub checkStrCmp()
Dim str As String
str = "s"
If str = "s" Then
MsgBox "works"
End If
End Sub
如果我将 Option Compare Database 更改为 Option Compare Text,则 sub 按预期工作,但这似乎是个坏主意,因为我可能想在单个 sub 中执行文本和数字比较。
我还在 SQL 中的字符串比较函数中收到“无效的过程调用”错误。Replace 函数需要所谓的可选比较参数。
Select replace("foo-bar-baz", "-", "|", 1,-1);
生成“无效的过程调用”错误
将 compare 参数设置为任何可用值 (0 -3) 可以按预期工作:
SELECT replace("foo-bar-baz", "-", "|", 1,-1, 0);
产生“foo|bar|baz”</p>
有没有其他人看过这个?是否有需要调整的设置?除了“数据库损坏”之外的任何其他想法,我都可以通过谷歌找到。TIA
为草率的代码块道歉,我一辈子都无法让它们正常工作。
更新: 我应该提到我正在运行 XP Pro sp3。
这个问题似乎仅限于我在我的盒子上创建的数据库。当我从我们网络上的其他工作站打开我在我的盒子上创建的测试数据库时,我看到了这个问题,但是在这些工作站上创建如上所述的新数据库时无法重新创建它。我在另外两个工作站上创建的数据库(安装了相同的操作系统和 MS Office 版本)在我的机器上打开时也可以正常工作。当我从我的机器将新模块插入这些数据库时,我也无法重新创建该问题。
简而言之,这个问题似乎只存在于我的机器上创建的数据库中(在旧的 2003 格式数据库中,我已在我的机器上转换为 2007 格式)。我最好的猜测是,我的安装已经失败,但我想知道如何以及为什么在我向 IT 部门提出重新安装 Office 的请求之前。我还想排除与我盒子上其他软件的冲突。