Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 我可以通过编程打开一个新的查询窗口吗?_Ms Access_Vba - Fatal编程技术网

Ms access 我可以通过编程打开一个新的查询窗口吗?

Ms access 我可以通过编程打开一个新的查询窗口吗?,ms-access,vba,Ms Access,Vba,我正在尝试找出是否/如何通过宏或VBA代码在设计视图中生成新的查询窗口。 具体来说,我想在SQL视图中打开一个新的空白查询,以便快速测试SQL代码。这对我来说是一种常见的活动 我通常通过功能区手动创建新查询:创建选项卡>查询设计按钮>关闭(显示表格窗口)按钮>SQL视图按钮。这将产生一个名为Query1(或Query2,等等)的新窗口 我想将所有这些多次单击压缩为快捷键或快速访问工具栏上的单个宏按钮。请注意,我使用的是Access 2010 可能吗?编写一个函数并从宏调用它: Public Fu

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

具体来说,我想在SQL视图中打开一个新的空白查询,以便快速测试SQL代码。这对我来说是一种常见的活动

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

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


可能吗?编写一个函数并从宏调用它:

Public Function foo()
    Dim qdf As QueryDef    
    Set qdf = CurrentDb.CreateQueryDef("qNew", "SELECT 'd' as foo")
    DoCmd.OpenQuery qdf.Name
End Function
这将创建查询并打开它

宏是一个运行上述函数的运行码命令

请尝试以下代码:

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
将此添加到模块:

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()

将此宏另存为“自动关键帧”。此宏将SHIFTF3映射到执行
NewQueryInSqlView()
。请注意,由于
NewQueryInSqlView()

中的
SendKeys
语句,选择以CTRL开头的键映射(字符
^
将有问题。顺便说一句,我发现我不应该对与访问宏(又称UI宏)相关的问题使用常规的“macros”标记。我是否应该使用其他标签?我编辑了我的问题,以澄清我使用的是Access 2010。谢谢,但这并没有回答我的问题。我想替换问题中描述的点击。VBA创建并保存一个新的查询对象(只有一列),然后在“数据表”视图中打开它。您可以将宏添加到功能区。您无法创建空查询并保存它,因此我必须在CreateQueryDef中添加一些SQL。您还可以将查询打开的视图更改为设计视图:DoCmd.OpenQuery qdf.Name,acviewdesign VBA代码正是我想要的。好极了。但是,我使用的是Access 2010,因此我无法按照建议“确保‘宏名称’列可见”。(宏生成器“网格”在2010年被宏设计器取代。)或者,我能够创建一个具有名为+{F3}的子宏操作的AutoKeys宏。@EJMak your可能足够强大,可以作为它自己的答案。如果这个答案帮助你到达目的地,你可以在你的答案中引用它。不幸的是,我不得不拒绝编辑,因为它与作者想要得到反馈的意图有很大不同。编辑对我来说是新事物,但我不确定我建议的编辑是如何偏离作者的意图/目标的,以及它是如何“实质性地”偏离作者的意图/目标的。是的,我对所写内容进行了扩展,但我专注于澄清。这些规则是否禁止/不鼓励更改样式(使用大纲格式)和/或添加详细信息(扩展以涵盖软件的当前版本)?我也不认为我可以使用我的更改作为我“自己”的单独答案,而不抄袭@一个2007年成功的家伙真正写了基本部分,不是我。如果您有任何建议可以删减我的编辑,我们将不胜感激。