【问题标题】:Running single Query in SSMS2017 using AutoHotKey使用 AutoHotKey 在 SSMS2017 中运行单个查询
【发布时间】:2018-07-27 05:00:45
【问题描述】:

我一直在尝试让我的 AHK 脚本在 SSMS2017 中运行以执行单个(多行)SQL 语句(类似于 SQL Developer 中的 Ctrl+Enter)。

这个想法是我搜索最后一个(相对于最后一个插入符号位置)“;”在我的代码中突出显示文本直到下一个,然后按 F5 执行。

到目前为止,我的脚本是这样的:

^ENTER::

CoordMode, Caret, Screen
CoordMode, Mouse, Screen

send ^f

sendraw `;

send {Enter}

send {Esc}

send +{F3}

send {Right}

X1 = A_CaretX
Y1 = A_CaretY

send {F3}

send {Right}

X2 = A_CaretX
Y2 = A_CaretY

MouseClickDrag, Left, X1,Y1,X2,Y2, 100

send {F5}

return

在我看来,至少在语法上应该有效。但事实并非如此。显然是因为 A_CaretX 和 A_CaretY 似乎是空的(我让 AHK 将它们输出给我,它们是空白的)。有谁知道这个问题的解决方案吗?

【问题讨论】:

    标签: ssms autohotkey


    【解决方案1】:

    A_CaretX 和 A_CaretY 在 SQL Server Management Studio 中不起作用,因为查询窗口不是普通的文本框控件,因此您永远无法使用插入符号获取信息。

    另一种方法是从查询窗口复制所有文本,对其进行解析,然后遍历解析的信息,粘贴并运行每个解析的文本。

    ^ENTER::
    Send ^a
    Send ^c
    ClipWait 1 ; Wait for clipboard to be filled
    
    Queries := ClipBoard
    
    Loop, parse, Queries, ";"
    {
      Send ^a
      Clipboard := A_LoopField
      Send ^v
    
      Sleep 100
      Send {F5}
    
      Sleep 1000 ; wait 1 second for query to finish
    }
    
    ;Replace the text with the original text
    Clipboard := Queries
    Send ^a
    Send ^v
    
    Return
    

    【讨论】:

      猜你喜欢
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      • 2023-03-15
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多