我如何测试和处理#Func!查询中出现错误?

问题描述 投票:0回答:4

我有一个 Access 查询,其中有一些复杂的字段。 基本上,我正在根据其他派生标准搜索某个值。 该函数要么有效,要么给出

#Func!
错误。我可能会收到错误的原因有几个。 没关系,因为在这种情况下我想返回
Null

如何测试和处理查询中的

#Func!
错误? 另外,我尝试将表达式包装在
IsError()
方法中,并处理这种情况。 那还是没用。

ms-access error-handling ms-access-2003
4个回答
0
投票

例如,如果您将 Instr 与可能为空或不为空的字段一起使用,并且这导致了问题,则您可以仅选择那些不为空的字段,或者将空字符串与该字段连接。

 SELECT Mid(AField & "",Instr(Afield & "","x")) FROM Table

0
投票

我认为这不是最佳解决方案,但是,我希望 Microsoft 内部管理 Microsoft Access 的“更高权力机构”了解异常处理,并在适当的情况下提供某种测试和处理/忽略错误的方法。

无论如何,就我而言,我找到了解决问题的方法。 我按原样保存查询并将其导出到表中。 由于这是一次性练习,因此我能够提取必要的数据,然后从新创建的表中过滤掉所有

Null
值。

它有效,但感觉像是一个非常糟糕的黑客。


0
投票

谢谢你的提示!我正在做一些工作,翻译一些使用 Excel 的 IsError 函数和 Mid 函数的 Excel 计算。我已经用 IifIsError 的组合替换了 Access 中的所有 IfError 函数,但仍然遇到相同的 #Func! 错误。事实证明,Access 中的 Mid 函数并不像 Excel 那样返回真正的错误,而是返回零,这有点道理,但这完全打乱了我原来的逻辑,正如我提到的,它来自 Excel。最后我用这个代替了

Iif(IsError(Mid(Afield,Start,End)),AlternateValue,Mid(Afield,Start,End))

用另一个公式

Iif(Mid(Afield,Start,End)=0,AlternateValue,Mid(Afield,Start,End))

这是 Access 中更紧凑、更容易理解的公式,而且它确实有效!非常感谢您花了 6 年时间才找到的答案! 2024年又是6年了,当我读到你们的评论时,现在是我回馈一些东西的时候了。非常感谢你!


-1
投票

OMGGGGGG 我知道我晚了 6 年,但这是我第一次在博客上发帖,因为我实际上解决了这个问题!你不知道我有多兴奋。好吧,事实证明这正是我想要做的:Mid(AField,Instr(Afield,"x"))。就我而言,我知道 InStr 函数并不总是在 Afield 中找到 x,在这些情况下,理想情况下我想要一个 Null。但它实际上返回的是 0。在访问中,像 Right、Left 和 Mid 这样的函数不能从 0“开始”,它们必须从 1(或者我想是 -1)开始。这就是导致 #Func 的原因!错误!

一个解决方案......如果你的 Instr function=0 做一件事,否则做另一件事。

如果我想到其他解决方案,我会告诉您。

© www.soinside.com 2019 - 2024. All rights reserved.