如何使用combobox搜索记录?

时间:2014-04-02 23:55:01

标签: ms-access combobox access-vba

我在表单上有一个组合框,用于根据[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) & "'"

它完美无缺,但对于我的生活,我无法让查找一起工作。我花了好几天试图让它发挥作用。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

你的行中有一个拼写错误。当您尝试组合这些语句时,您似乎在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 & "#"

我写的内容和你所拥有的内容之间的区别在于你不需要将字符串分开并在每个部分周围加上引号。引号只需要包围不变量的部分。