如何使用组合框搜索记录?
Posted
技术标签:
【中文标题】如何使用组合框搜索记录?【英文标题】:How to use combobox to search for record? 【发布时间】:2014-04-02 23:55:01 【问题描述】:我在表单上有一个组合框,用于搜索基于[WorkDate]
的记录,它工作正常。我遇到的问题是组合框有 3 列,但它只根据第一列进行查找。组合框下拉列表中的列是WorkDate | WorkType | Comment
这是我的代码:
`Private Sub ctlSearch_AfterUpdate()
On Error GoTo myError
Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone
rst.FindFirst "[WorkDate] = " & "#" & Format(Me.ctlSearch.Column(0), "yyyy/mm/dd") & "#" And "[WorkType] = '" & Me.ctlSearch.Column(1) & "'"
Me.Bookmark = rst.Bookmark
leave:
Me!ctlSearch = Null
If Not rst Is Nothing Then Set rst = Nothing
Exit Sub
myError:
MsgBox "Record Not Found"
Resume leave
End Sub`
我已将问题缩小到代码中的这一行:
rst.FindFirst "[WorkDate] = " & "#" & Format(Me.ctlSearch.Column(0), "yyyy/mm/dd") & "#" And "[WorkType] = '" & Me.ctlSearch.Column(1) & "'"
每当我用
替换上面的代码行时rst.FindFirst "[WorkDate] = " & "#" & Format(Me.ctlSearch.Column(0), "yyyy/mm/dd") & "#"
或
rst.FindFirst "[WorkType] = '" & Me.ctlSearch.Column(1) & "'"
它完美地工作,但对于我的生活,我无法让查找一起工作。我花了几天的时间试图让它发挥作用。任何帮助将不胜感激。
【问题讨论】:
为了帮助解决问题,第一步应该是确保您的搜索字符串是正确的。看这个例子:***.com/questions/18019125/… 简短的版本是 Debug.Print "[WorkDate] = " & "#" & Format(Me.ctlSearch.Column(0), "yyyy/mm/dd") & "#" And " [WorkType] = '" & Me.ctlSearch.Column(1) & "'" 你的搜索字符串是什么样的? 【参考方案1】:您的行中有错字。当您尝试合并这些语句时,您似乎在 AND
部分周围添加了一些额外的引号。
rst.FindFirst "[WorkDate] = " & "#" & Format(Me.ctlSearch.Column(0), "yyyy/mm/dd") & "#" And "[WorkType] = '" & Me.ctlSearch.Column(1) & "'"
rst.FindFirst "[WorkDate] = #" & Format(Me.ctlSearch.Column(0), "yyyy/mm/dd") & "# And [WorkType] = '" & Me.ctlSearch.Column(1) & "'"
在 VBA 中编写查询语句时,需要像这样包含在引号中的字符串。
rst.FindFirst "Field1 = #01/02/2014#"
如果您想将日期更改为某种变量,您需要像上面那样将其附加到字符串中。
rst.FindFirst "Field1 = #" & dateField & "#"
我写的和你写的不同之处在于你不需要把字符串分开并在每个部分加上引号。引号只需要把不是变量的部分括起来。
【讨论】:
感谢它完美的工作。我希望我了解引号是如何工作的。我有一个关于澄清如何在这些情况下使用引号的参考,我很想看看它。再次感谢。 @Kefash 我编辑了我的答案。希望对您有所帮助。 这很有帮助。我无法在任何地方做出任何解释。或者我没有正确搜索。 :)以上是关于如何使用组合框搜索记录?的主要内容,如果未能解决你的问题,请参考以下文章
如何在VBA中的用户窗体上使用组合框和文本框来搜索和查找活动Excel电子表格中的数据?