Autohotkey
February 11, 2023
Как создать SQL-запрос в Access
🌰 Создаём новый запрос сразу в режиме SQL с помощью скрипта на AHK
Если Вы решили создать новый запрос в Access, то нажимаете «Создание», «Конструктор запросов», Закрываете окошко с выбором таблиц, и только потом кнопку «SQL». Как можно ускорить этот процесс, чтобы сразу перейти к вводу SQL-кода? Нам поможет следующий скрипт на AutoHotKey, основанный на макросе со StackOverflow:
#Requires AutoHotkey v2+
#HotIf WinActive("ahk_class OMain") ; Когда активно окно Access
^sc31:: AccessNewQuery() ; Новый SQL-запрос по ctrl+N
AccessNewQuery(*) {
try {
app := ComObjActive("Access.Application") ; берём access...
} catch {
Tooltip('AccessNewQuery FAIL: ComObjActive("Access.Application")')
SetTimer(()=>Tooltip(), 1000)
Return
}
; Убедимся в том, что база открыта:
try {
db := app.CurrentDb
if (db = "")
return
} catch {
return
}
; Найдём незанятое имя для запроса:
qName := ""
Loop 250 {
if !QueryExists("NewQuery" . A_Index) {
qName := "NewQuery" . A_Index
Break
}
}
if !qName
return
; Нашли незанятое имя, создаём новый запрос:
qdf := db.CreateQueryDef(qName)
qdf.SQL := "SELECT Date() AS Today;"
qdf.Close()
app.DoCmd.OpenQuery(qName, 1) ;1=acViewDesign
app.DoCmd.RunCommand(184) ;184=acCmdSQLView
;app.DoCmd.RunCommand 337 ;337=acCmdDelete ; очистка текста запроса
; всё!
QueryExists(nm) { ; существует ли запрос с таким названием в базе db?
for qd in db.QueryDefs {
if qd.Name = nm
return true
}
return false
}
}
Сканкод sc31 соответствует клавише N и теперь при нажатии на Ctrl+N будет открываться редактор запросов с текстом SELECT Date() AS Today.
Разумеется, горячую клавишу можно задать любую другую.