使用 Access 在 VBA 中进行数据库设计/打开表单 CLICK EVENT:特定查询

Posted

技术标签:

【中文标题】使用 Access 在 VBA 中进行数据库设计/打开表单 CLICK EVENT:特定查询【英文标题】:Database Design/Open Form CLICK EVENT in VBA using Access: Specific Inquiry 【发布时间】:2015-10-13 22:43:47 【问题描述】:

我希望在“主要信息”表单中编写一个单击事件,该事件将根据在多答案查找字段组合控件中选择的值(对应于数字 ID 字段/文本字符串)打开多达 17 个其他表单通过一个独立的、单独的表格相关的类别)位于该“主要信息”表格中。

我知道这是通用代码:

 Private Sub DiagCat_AfterUpdate()
   Select Case DiagCat
     Case "Cancer [140-208]"
       DoCmd.OpenForm (Cancer_Form)
     Case "Heart Disease [393-398, 402, 410-429]"
       DoCmd.OpenForm (Heart_Disease_Form)
     Case "Stroke [430-438]"
      DoCmd.OpenForm (Stroke_Form)
     Case "Diabetes [250]"
      DoCmd.OpenForm (Diabetes_Form)
     Case "Hypertension [401]"
      DoCmd.OpenForm (Hypertension_Form)
    Case "Liver Disease [070, 571-573]"
      DoCmd.OpenForm (Elevated_Cholesterol_Form)
   End Select
 End Sub

VBA 现在发出“类型不匹配”错误 13;错误在 'Case "Cancer [140-208]"' 行上执行。

谢谢。非常感谢任何帮助。

【问题讨论】:

您最好告诉我们哪一行代码触发了错误。这可能是罪魁祸首:DoCmd.OpenForm (Cancer_Form) Cancer_Form 是什么? OpenForm 需要表单名称作为字符串值,所以我猜 Cancer_Form 是表单的名称,您应该使用:DoCmd.OpenForm "Cancer_Form" 不需要括号。 Option Explicit 添加到代码模块的声明部分。然后从 VB 编辑器的主菜单运行 Debug->Compile。修复编译器抱怨的任何问题,然后重复编译/修复,直到不再出现编译错误。 非常感谢 HansUp!我会试试这个。如果Form标题中没有下划线,应该是“Cancer Form”吗? 是的,我想是的。仔细检查导航窗格中的表单名称。不管它显示在那里,将匹配的文本放在引号之间:DoCmd.OpenForm "<form Name>" 不幸的是,在我添加“Option Explicit”并更正 DoCmd 之后的所有表单名称后,我仍然在“Case“Cancer [140-208]”行收到类型 13 不匹配错误- 不确定我做错了什么。无论如何,感谢您的所有帮助。 【参考方案1】:

Select Case 关键字是您根据字段的多个值选择操作所需的。

Private Sub cmdOpen_Click() 'where cmdOpen is the button control clicked to open the forms
      Select Case cmbDxCatsID 'assuming cmbDxCatsID is the name of the combobox control on the form
      Case 1
          DoCmd.OpenForm(Form1)
      Case 2
          DoCmd.OpenForm(Form2)
      'etc.........
      End Select
End Sub

【讨论】:

非常感谢!非常感谢! 哎呀- *** 的新手- 我点击了检查- 我认为接受它。再次感谢! 所以不幸的是,即使我认为这是解决此问题的正确方法,我仍然遇到错误。用于生成“选择案例” DoCmds 的特定组合框实际上是一个下拉框,它使用 SQL 从另一个独立的表中生成 LookUp 值。我试图让案例成为可以选择的类别的特定文本字符串,但 Access/VBA 一直告诉我存在“类型不匹配”;无论如何要引用每个查找值所引用的表/字段/值?我这样做完全错了吗? 我还尝试将“单击事件”从独立按钮移动到下拉组合框控件本身,以在更新后事件上打开表单:

以上是关于使用 Access 在 VBA 中进行数据库设计/打开表单 CLICK EVENT:特定查询的主要内容,如果未能解决你的问题,请参考以下文章

从 Java 调用 Access 中的 VBA 函数

如何在 Access 开发中使用版本控制?

如何在 Access 开发中使用版本控制?

如何在 Access 开发中使用版本控制?

WHERE IN 在 Access VBA 中使用两个记录集进行查询

MS Access VBA - 在数据表子窗体中显示动态构建的 SQL 结果