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

Forms 如何使用表单根据在msgbox上输入的内容导航到特定查询?,forms,ms-access,navigation,vba,messagebox,Forms,Ms Access,Navigation,Vba,Messagebox,所以我有一个带有表事务的Access数据库。 在表中有一个名为“按月份筛选的利润”的列 我已经做了一些查询来计算每月的总利润(例如6月、7月、8月) 那么,是否可以创建一个带有弹出消息框的表单,并通过在框中输入月号并单击,它将导致特定的查询 我认为这是一个好主意,但我对ACCESS编程知之甚少,所以任何评论都是非常有价值的 您可以使用VBA的InputBox功能创建弹出窗口。如果数据库中已经存在查询,则可以使用该函数的结果来确定要打开的查询。例如: Public Sub OpenExisting

所以我有一个带有表事务的Access数据库。 在表中有一个名为“按月份筛选的利润”的列

我已经做了一些查询来计算每月的总利润(例如6月、7月、8月)

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


我认为这是一个好主意,但我对ACCESS编程知之甚少,所以任何评论都是非常有价值的

您可以使用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

请注意,上述功能属于“快速和肮脏”类型。他们真的需要更好的错误处理,用户输入的卫生,等等。但是希望你能得到这个想法,并且可以自己处理