ACCESS使用使用ADO方式得到记录集时,对应的sql语句不能使用模糊查询吗? 5
比如我想将ss表中字段【姓名】中包含“王”字的姓名更新为ll,使用下面的代码:PrivateSubCommand5_Click()DimstrsqlAsStringDim...
比如我想将ss表中字段【姓名】中包含“王”字的姓名更新为ll,使用下面的代码:
Private Sub Command5_Click()
Dim strsql As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
strsql = "select * from ss where 姓名 like '*王*'"
Debug.Print strsql
Set rst = getrstx(strsql)
DoCmd.SetWarnings False
rst.MoveFirst
Do Until rst.EOF
rst!姓名 = "ll"
rst.Update
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
MsgBox "OK"
End Sub
在运行时总是出错,错误提示的意思是说得到的记录集是空的,不知道什么情况?难道ADO方式返回记录集,对应的SQL语句不能使用模糊查询?
其中用于返回记录集的 getrstx函数代码如下:
Public Function getrstx(ByVal strsql As String) As ADODB.Recordset
On Error GoTo err_getrs
Dim rs As ADODB.Recordset
Dim cnn As New ADODB.Connection
Set rs = New ADODB.Recordset
Set cnn = CurrentProject.Connection
rs.Open strsql, cnn, adOpenKeyset, adLockOptimistic
Set getrstx = rs
exit_err_getrs:
Set rs = Nothing
Set cnn = Nothing
Exit Function
err_getrs:
MsgBox (Err.Description)
Resume exit_err_getrs
End Function 展开
Private Sub Command5_Click()
Dim strsql As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
strsql = "select * from ss where 姓名 like '*王*'"
Debug.Print strsql
Set rst = getrstx(strsql)
DoCmd.SetWarnings False
rst.MoveFirst
Do Until rst.EOF
rst!姓名 = "ll"
rst.Update
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
MsgBox "OK"
End Sub
在运行时总是出错,错误提示的意思是说得到的记录集是空的,不知道什么情况?难道ADO方式返回记录集,对应的SQL语句不能使用模糊查询?
其中用于返回记录集的 getrstx函数代码如下:
Public Function getrstx(ByVal strsql As String) As ADODB.Recordset
On Error GoTo err_getrs
Dim rs As ADODB.Recordset
Dim cnn As New ADODB.Connection
Set rs = New ADODB.Recordset
Set cnn = CurrentProject.Connection
rs.Open strsql, cnn, adOpenKeyset, adLockOptimistic
Set getrstx = rs
exit_err_getrs:
Set rs = Nothing
Set cnn = Nothing
Exit Function
err_getrs:
MsgBox (Err.Description)
Resume exit_err_getrs
End Function 展开
2个回答
展开全部
ADO使用的语法跟ACCESS数据库使用的默认SQL语法是不一样的
ADO要用%(而不是*)作为通配符表示“零到任意多个字符”
请将 strsql = "select * from ss where 姓名 like '*王*'"
改为
strsql = "select * from ss where 姓名 like '%王%'"
代码还应调整一下:
Private Sub Command5_Click()
Dim strsql As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
strsql = "select * from ss where 姓名 like '%王%'" '修改这行
Debug.Print strsql '这行多余
Set rst = getrstx(strsql)
If rst.Bof And rst.Eof then Exit Sub '添加这行防止出错
rst.MoveFirst '这行可以不要
Do Until rst.EOF
rst!姓名 = "ll"
rst.Update
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
MsgBox "OK"
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询