访问组合框和子窗体

我在带有组合框的表单上有一个子表单。我想从框中选择一个标准编号,并使子窗体仅显示这些记录。我在查询表达式中遇到语法错误(缺少运算符)。有人可以帮忙吗?

Private Sub cbo_st_no_Afterupdate()

    Dim standardNo As String

    standardNo = "Select * from StandardsList where ([st_no] = " & Me.cbo_st_no & ")"

    Me.WhoDoneItSubformy.Form.RecordSource = standardNo
    Me.WhoDoneItSubformy.Form.Requery

End Sub
yandongyi 回答:访问组合框和子窗体

您得到的错误syntax error (missing operator) in query expression指出Me.cbo_st_no没有返回值。

如果尚未在组合框中选择任何条目,则可能会发生这种情况。

因此,如果在组合框中尚未选择任何条目,则应考虑是否在子窗体中显示所有记录或不显示任何记录。

这是一个完整的示例,假设st_no是一个数字字段:

Private Sub cbo_st_no_AfterUpdate()
    Dim standardNo As String

    If Len(Nz(Me.cbo_st_no)) = 0 Then
        'To show nothing:
        standardNo = "Select * From StandardsList Where False"
        'To show all:
        standardNo = "Select * From StandardsList"
    Else
        standardNo = "Select * From StandardsList Where [st_no] = " & Me.cbo_st_no
    End If

    Me.WhoDoneItSubformy.Form.RecordSource = standardNo
    Me.WhoDoneItSubformy.Form.Requery
End Sub

更多信息:

如果字段st_no是文本字段,则必须将值包装在'中:

"Select * From StandardsList Where [st_no] = '" & Me.cbo_st_no & "'"
,

Unhandled Exception的回答是好的,但是可以极大地简化您的代码和解决方案。这就是我要做的:

Private Sub cbo_st_no_AfterUpdate()
    Me.WhoDoneItSubformy.RecordSource = "SELECT * from StandardsList WHERE st_no=" & Nz(Me.cbo_st_no,0)
    Me.WhoDoneItSubformy.Requery
End Sub

如果st_no的现有值为零,则使用-1或任何其他保证不匹配现有记录的值。 如果您希望空值显示所有记录而不是不显示任何记录,请使用

Nz(Me.cbo_st_no,"st_no")
本文链接:https://www.f2er.com/3108207.html

大家都在问