【发布时间】:2025-12-01 05:05:01
【问题描述】:
我有两个要搜索表格的文本框。我正在通过一个我认为是问题的查询进行搜索。代码应该从两个文本框中获取标准并搜索一个表。之后,其余的文本框将填充最接近搜索的记录集。
我在RstRecSet.MoveLast 收到一个错误我收到一个编译错误,说没有当前记录。我确实有一个记录,就像我在框中输入的内容一样,但它没有捡起它
当我添加记录的确切名称时,它发现没有问题。就好像它把 like 运算符当作 = 一样对待。
这是我的代码:
Private Sub Command514_Click()
'DoCmd.Close
'DoCmd.OpenForm "frmContacts", acNormal
Set RstRecSet = Nothing
Set db = CurrentDb
Dim searchNum As String
Dim searchName As String
searchNum = txtGroupNr
searchName = txtGroupName
On Error Resume Next
If IsNull(txtGroupNr) Or txtGroupNr = "" Then
Me.txtGroupName.BackColor = vbRed
Forms!frmGroupHeader!txtGroupNr.SetFocus
Else
'strSearchICN = txtGroupNr
Set db = CurrentDb
Me.txtGroupName.BackColor = vbWhite
Set RstRecSet = db.OpenRecordset("Select * from tblGroupHeader Where GroupNum Like '" & searchNum & "' And GroupName Like '" & searchName & "';", dbOpenDynaset)
RstRecSet.MoveLast
intMaxCount = RstRecSet.RecordCount
RstRecSet.MoveFirst
' Exit Sub
End If
If RstRecSet.EOF Then
Me.txtGroupName.BackColor = vbRed
Forms!frmGroupHeader!txtGroupNr.SetFocus
Else
Call DisplayFields
End If
End Sub
这里是解决方案:
Private Sub Command514_Click()
'DoCmd.Close
'DoCmd.OpenForm "frmContacts", acNormal
Set RstRecSet = Nothing
Set db = CurrentDb
Dim searchGroup As String
Dim searchName As String
If IsNull(txtgroupSearch) Or txtgroupSearch = "" Then
Me.txtGroupName.BackColor = vbRed
Forms!frmGroupHeader!txtGroupNr.SetFocus
Else
'searchNum = txtGroupNr
searchGroup = txtgroupSearch
Set db = CurrentDb
Me.txtGroupName.BackColor = vbWhite
Set RstRecSet = db.OpenRecordset("Select * from tblGroupHeader Where groupName like '*" & searchGroup & "*' or groupNum like '*" & searchGroup & "*';", dbOpenDynaset)
If RstRecSet.EOF And RstRecSet.BOF Then
MsgBox ("NO RECORDS!")
Exit Sub
End If
RstRecSet.MoveLast
intMaxCount = RstRecSet.RecordCount
RstRecSet.MoveFirst
' Exit Sub
End If
If RstRecSet.EOF Then
Me.txtGroupName.BackColor = vbRed
Forms!frmGroupHeader!txtGroupNr.SetFocus
Else
Call DisplayFields
End If
End Sub
【问题讨论】:
-
人们想知道 SQL 注入如何仍然是第一大安全风险......
-
我在 RstRecSet.MoveLast 收到一个错误,我收到一个编译错误,说没有当前记录。我确实有一个记录,就像我在盒子里输入的一样,但它没有捡起来。
-
首先我要感谢所有回复并帮助我的人,我真的很感激。响应 HansUp,我添加了 Option Explicit,它帮助我在我的 sql 查询中找到错误。不幸的是,我得到了相同的运行时错误“没有当前记录”。