Microsoft Access VBA 根据表列条件值打开对应Form的咨询
问题原因排查
你的代码共有3处核心问题导致无法运行:
- VBA语法要求判断结束的关键字是
End If,中间必须加空格,你写的EndIf属于语法错误 - 没有明确指定
[school]字段的取值来源,VBA无法识别该从哪里读取school的字段值 - 没有做异常值处理,如果school字段出现East/West之外的取值,会导致
stDocName为空,调用OpenForm时直接报错
正确实现代码
以下是绑定master_schools_tbl的表单上,按钮点击事件的完整可运行代码:
Private Sub 打开对应表单按钮_Click() Dim stDocName As String Dim stLinkCriteria As String ' 明确读取当前表单绑定记录的school字段值 Select Case Me!school.Value Case "East" stDocName = "East_Town_High_frm" stLinkCriteria = "[School]='East'" Case "West" stDocName = "West_Town_High_frm" stLinkCriteria = "[School]='West'" Case Else ' 异常值提示,避免程序报错 MsgBox "当前记录的school字段取值不在East/West范围内,无法打开对应表单", vbExclamation Exit Sub End Select ' 打开指定表单并传入筛选条件 DoCmd.OpenForm stDocName, , , stLinkCriteria End Sub
补充说明
- 如果你是在独立模块中执行这段代码,需要把
Me!school.Value替换为实际的取值来源,比如从选中的表记录中取,可以用DLookup("school", "master_schools_tbl", "主键字段=" & 选中的主键值) - 如果你不需要对打开的表单再做额外筛选(因为表单本身已经绑定了master_schools_tbl,只会展示对应学区的数据),可以把
stLinkCriteria参数去掉,DoCmd.OpenForm直接写为DoCmd.OpenForm stDocName即可
内容的提问来源于stack exchange,提问作者Icculus
相关产品推荐
相关产品推荐

