如何使用表单根据 msgbox 上输入的内容导航到特定查询?

Posted

技术标签:

【中文标题】如何使用表单根据 msgbox 上输入的内容导航到特定查询?【英文标题】:how to use a form to navigate to specific query based on what is entered on the msgbox? 【发布时间】:2016-08-26 13:07:56 【问题描述】:

所以我有一个带有表事务的 Access 数据库。 表格上有一个名为按月过滤的利润列。

我已经做了一些查询来计算每月的总利润(例如六月、七月、八月)

那么是否可以创建一个带有弹出消息框的表单,并通过在框上输入月份数字并单击,它会导致特定的查询?

我认为这是一个好主意,但我对 ACCESS 编程知之甚少,所以任何评论都非常受欢迎!

【问题讨论】:

【参考方案1】:

您可以使用 VBA 的InputBox 函数来创建弹出窗口。如果您的查询已经存在于数据库中,那么您可以使用该函数的结果来确定要打开哪个查询。例如:

Public Sub OpenExistingQuery()
  Dim intMonth As Integer
  intMonth = InputBox("Please enter a month number:", "Enter Month Number")
  DoCmd.OpenQuery "qryMonth" & intMonth, acViewNormal
End Sub

或者,您可以使用InputBox 函数的结果来动态构建查询,然后打开它:

Public Sub OpenDynamicQuery()
  Const strQueryName As String = "qryDynamicMonth"

  Dim db As DAO.Database: Set db = CurrentDb
  Dim qdf As DAO.QueryDef
  Dim intMonth As Integer

  intMonth = InputBox("Please enter a month number:", "Enter Month Number")

  On Error Resume Next
  DoCmd.Close acQuery, strQueryName, acSaveNo
  DoCmd.DeleteObject acQuery, strQueryName
  On Error GoTo 0

  Set qdf = db.CreateQueryDef(strQueryName)
  qdf.SQL = "SELECT * FROM your_table_name WHERE your_monthnumber_column = " & intMonth
  qdf.Close

  DoCmd.OpenQuery strQueryName, acViewNormal

  Set qdf = Nothing
  Set db = Nothing
End Sub

请注意,上述功能属于“快速而肮脏”的品种。他们确实需要更好的错误处理、用户输入的卫生等。但希望你能明白这一点,并且可以自己处理。

【讨论】:

以上是关于如何使用表单根据 msgbox 上输入的内容导航到特定查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 Microsoft Access 中的组合框选择导航到表单

在表单应用程序中,是不是有任何替代 MsgBox 的方法?

MsgBox 确认退出 Access 中的表单

如何根据 Access 2013 中的另一个输入字段更新表单上的字段?

Msgbox 来自查询访问

如何在不更改输入内容的情况下更改输入值