如何使用表单根据 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 中的组合框选择导航到表单