Access VBA 记录集字符串比较不适用于通配符

Access VBA recordset string comparison not working with wildcard

我有大量在 Excel 中使用 VBA 的经验,但在 Access 2010 中使用 VBA 的经验很少。我正在尝试从记录集中删除其中一个记录字段以“_X”结尾。当我使用通配符时,比较失败。当我使用特定字符串时,比较会按预期进行。这是我正在使用的代码。

Dim db As Database: Set db = CurrentDb
Dim tbl As Recordset: Set tbl = db.OpenRecordset("WRITEON")
With tbl
    Do Until .EOF
        If ![ACOD] = "*_X" Then '"$ICP_X" works
            Debug.Print ![ACOD] 'For testing
            '.Delete
        End If
    .MoveNext
    Loop
End With
tbl.Close 

将文本值与模式进行比较时,请使用 Like 而不是 =

If ![ACOD] Like "*_X" Then
    Debug.Print ![ACOD]
End If

这应该可以满足您的要求,但我不太确定评估记录集中的每条记录以删除匹配项是最好的方法。您可以通过执行 DELETE 查询来获得相同的结果,该查询使用相同的模式来确定应删除哪些行。

DELETE FROM WRITEON
WHERE [ACOD] Like "*_X";