Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Access VBA记录集字符串比较不使用通配符_String_Ms Access_Vba_Recordset - Fatal编程技术网

String Access VBA记录集字符串比较不使用通配符

String Access VBA记录集字符串比较不使用通配符,string,ms-access,vba,recordset,String,Ms Access,Vba,Recordset,我有很多在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

我有很多在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 

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

If![ACOD]比如“*X”那么
调试,打印![ACOD]
如果结束
这应该是你想要的,但我不确定评估记录集中的每条记录以删除匹配项是最好的方法。您可以通过执行
DELETE
查询来实现相同的结果,该查询使用相同的模式来标识应该删除哪些行

从WRITEON中删除
其中[ACOD]类似于“*X”;

使用“Like”非常有效。我发布这个问题主要是出于沮丧。我已经走了“删除”查询路线。以下是我使用的替代方法:
Dim SQL As String SQL=“DELETE*”FROM WRITEON WHERE WRITEON.ACOD Like'*_X')DoCmd.SetWarnings False DoCmd.RunSQL SQL DoCmd.SetWarnings True
OK,我现在明白了。谢谢考虑使用<代码> CurrundB.ExcalSQL、DbFerrimerError < /Cord>,而不是<代码> DOMMD。RunSQL < /C>。使用该方法,您不需要关闭
SetWarnings
。关闭
SetWarnings
后,您可以抑制可能有助于故障排除的信息。非常好的建议!非常感谢。使用
SetWarnings off/on
解决方案,我肯定会感到不舒服。你的方式好多了。