我可以以编程方式打开一个新的查询窗口吗?

时间:2015-12-21 19:37:34

标签: ms-access access-vba

我试图弄清楚是否/如何通过宏或VBA代码在设计视图中生成新的查询窗口。

具体来说,我想在SQL View中打开一个新的空白查询,以便我可以快速测试SQL代码。这对我来说很常见。

我通常通过功能区手动创建一个新查询:创建选项卡> “查询设计”按钮>关闭(显示表格窗口)按钮> SQL View按钮。这会生成一个名为Query1(或Query2等)的新窗口。

我想将所有这些多次点击压缩到快速访问工具栏上的键盘快捷键或单个宏按钮。请注意,我使用的是Access 2010。

可能的吗

3 个答案:

答案 0 :(得分:4)

将其添加到模块:

Function NewQueryInSqlView()

    ' Send the ESC key, without waiting for processing,
    ' to cancel the select table dialog that occurs when designing new query
    SendKeys "{ESC}", False

    DoCmd.RunCommand acCmdNewObjectDesignQuery ' create new query
    DoCmd.RunCommand acCmdSQLView ' switch to SQL view

End Function

要通过键盘快捷键执行代码,请创建一个新宏,并确保"宏名称"列是可见的。 将以下行添加到宏,并在指定的列中包含以下值:

Macro Name: +{F3}
    Action: RunCode
            with Function Name argument: NewQueryInSqlView()

将此宏保存为" AutoKeys"。该宏将 SHIFT F3 映射到NewQueryInSqlView()的执行。请注意,由于^中的SendKeys语句,选择以 CTRL NewQueryInSqlView()字符)开头的键映射会出现问题。

答案 1 :(得分:0)

编写一个函数并从宏调用它:

Public Function foo()
    Dim qdf As QueryDef    
    Set qdf = CurrentDb.CreateQueryDef("qNew", "SELECT 'd' as foo")
    DoCmd.OpenQuery qdf.Name
End Function

这将创建查询并将其打开

宏是运行上述函数的RunCode命令。

答案 2 :(得分:0)

尝试此代码:

Sub EmptyQuery()

  Dim Qname As String
  Qname = "mQname"

  On Error Resume Next
   CurrentDb.CreateQueryDef Qname
  On Error GoTo 0

  DoCmd.OpenQuery Qname, acViewDesign    

End Sub