访问组合框和子窗体



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

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

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")

您得到的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 & "'"

相关内容

  • 没有找到相关文章

最新更新