如何在哪里使用VBA功能?

时间:2012-11-16 14:17:55

标签: sql windows ms-access access-vba ms-access-2010

我在Access数据库中使用距离here的Levenshtein距离。当函数在字段列表中时,使用SELECT-Statement中的函数。 e.g:

SELECT field, Levenshtein(field, 'Saturday')
FROM table

其中field是文本列(Access-VarChar)。现在,我想将where子句中的函数用作

之类的条件
SELECT field, Levenshtein(field, 'Saturday') as distance
FROM table
WHERE (Levenshtein(field, 'Saturday') < 5)

但所有Access都给我一个错误,说“与类型冲突”。在consition中使用distance而不是Levenshtein(field, 'Saturday')时也是如此。

levenshtein函数定义为Public Function Levenshtein(string1 As String, string2 As String) As Long。那我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为你的表中有一些空值。你可以尝试这个查询吗?

SELECT field, Levenshtein(field, 'Saturday') as distance
FROM table
WHERE (Levenshtein(nz(field, ""), 'Saturday') < 5)

(看起来查询中的where field is not null条件不够,无论如何都要尝试评估该函数。)

或者您可以将Levenshtein函数定义为(string1 as Variant, string2 as Variant),并确保在string1或string2为null时返回null:

If IsNull(string1) or IsNull(string2) Then
  Levenshtein = Null
  Exit Function
End If