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";
我有大量在 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";