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
Vba 对任何类型的字符串使用Like运算符_Vba_Ms Access - Fatal编程技术网

Vba 对任何类型的字符串使用Like运算符

Vba 对任何类型的字符串使用Like运算符,vba,ms-access,Vba,Ms Access,我们的数据库中有一个字符串列表,这给我们带来了问题。字符串的格式可以是: (GS)-23 West35 West模板在绩效中“用于分数” 书籍装帧和约瑟芬的免费赠品 旅行预订 -WestBrokes迄今为止 我们一直在使用: Dim rs As DAO.Recordset Dim strAssignment As String Set rs = CurrentDb.OpenRecordset("SELECT TOP 1 AssgingmentType FROM tblMain WHER

我们的数据库中有一个字符串列表,这给我们带来了问题。字符串的格式可以是:

(GS)-23 West35

West模板在绩效中“用于分数”

书籍装帧和约瑟芬的免费赠品

旅行预订

-WestBrokes迄今为止

我们一直在使用:

Dim rs As DAO.Recordset
Dim strAssignment As String
Set rs = CurrentDb.OpenRecordset("SELECT TOP 1 AssgingmentType FROM tblMain WHERE JobDescription Like 
'*" & Me.txtJobDescription.Value & "*'")`

If IsNull(DLookup("[Category]", "tblMain", "JobDescription Like '*" & 
Me.txtJobDescription.Value & "*'")) Then
Me.txtAssignmentType.Value = ""
Me.txtAssignmentType.SetFocus
Exit Sub
Else
strAssignment = rs.Fields("AssgingmentType").Value
Me.txtAssignmentType.Value = strAssignment
End If
上述代码适用于其他字符串,但不适用于那些涉及使用撇号的字符串,即
West模板“用于分数”的性能
书籍装订和约瑟芬的免费赠品
会引发错误
设置rs=…
。 我的问题是,如何处理行
Set rs=…
DLookup
函数中撇号的使用

谢谢您的时间。

您可以将单引号替换为双引号,并可能减少到(避免在表中进行第二次查找):

Dim rs作为DAO.Recordset
作为字符串的Dim strAssignment
Set rs=CurrentDb.OpenRecordset(“从tblMain中选择TOP 1 AssignmentType,类别,其中JobDescription类似于“*”&替换(Me.txtJobDescription.Value“”,“”)&“*”)
Me.txtAssignmentType.Value=Null
如果rs.RecordCount>0,则
如果不是IsNull(rs!Category.Value),则
strAssignment=rs.Fields(“AssignmentType”).Value
Me.txtAssignmentType.Value=strAssignment
如果结束
如果结束
如果IsNull(Me.txtAssignmentType.Value),则
Me.txtAssignmentType.SetFocus
如果结束

您是否尝试使用其他库?我是说ADODB.recordset还是只记录集?Dim rs作为ADODB.Recordset(库Microsoft脚本运行时)。@R35P3K7否,在本例中,我不知道ADODB比DAO有什么优势。replace函数在
Select
语句中起作用。但是,如果
rs
中确实没有记录,则
If
条件将失败。
Replace
函数似乎在
Select
语句和
DLookUp
上都运行良好。你介意编辑一下吗,这样我就可以标记为完成了?非常感谢。当然但我仍然认为您应该避免在表中重复查找。请看编辑,这样更好。当我可以使用
RecordCount
属性时,确实不需要使用
DLookUp
。谢谢你,祝你身体健康。